首页 技术 正文
技术 2022年11月11日
0 收藏 585 点赞 3,040 浏览 3694 个字

(1)搜索 https://pub.dartlang.org/packages/jpush_flutter ,安装插件,并且按照官方配置 /android/app/build.gradle

android: {
....
defaultConfig {
applicationId "替换成自己应用 ID"
...
ndk {
//选择要添加的对应 cpu 类型的 .so 库。
abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64' // 'arm64-v8a',
} manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "appkey", // NOTE: JPush 上注册的包名对应的 Appkey.
JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
]
}
}

(2)Flutter 新建页面,我放在Welcome页面

class SplashPageState extends State<SplashPage> implements OnSkipClickListener {  JPush jPush = new JPush();  String registerId;  _startupJpush() {    jPush.setup(appKey: “c52495cbcbc37ee42f04e751”, channel: “developer-default”,debug: true);  }


  _getRegisterID() async {    registerId = await jPush.getRegistrationID();    print(‘*********registerid=’ + registerId);    return registerId;  }


  _setPushTag() {    List<String> tags = List<String>();    tags.add(“jason”);    jPush.setTags(tags);  }


  _addEventHandler() {    // Future<dynamic>event;    jPush.addEventHandler(onReceiveNotification: (Map<String, dynamic> event) {      print(‘*********addOnreceive>>>>>>$event’);//进程运行时候可以接受      var title = event[‘alert’];      var extra = json.decode(event[‘extras’][‘cn.jpush.android.EXTRA’]);      notifyRoute(extra[‘type’],title,extra[‘id’]);      print(‘*********msg:$event’);    }, onOpenNotification: (Map<String, dynamic> event) {      print(‘*********addOpenNoti>>>>>$event’); //进程关闭的时候可以接受      var title = event[‘alert’];      var extra = json.decode(event[‘extras’][‘cn.jpush.android.EXTRA’]);      notifyRoute(extra[‘type’],title,extra[‘id’]);    }, onReceiveMessage: (Map<String, dynamic> event) {      print(‘*********addReceiveMsg>>>>>$event’); //进程运行时候可以接受      print(event.toString());      var jsStr = json.decode(event.toString());    });}


//推送跳转void notifyRoute(String type,String title,String id) {  if(type!=null) {    switch(type){    case ‘news’:      Navigator.of(context).push(new MaterialPageRoute(builder: (ctx) => new WebView(title: title, url:id )));      break;    case ‘tmdetail’:      Navigator.of(context).push(new MaterialPageRoute(builder: (ctx) => new DetailPage(tmId: int.parse(id))));      break;  }  }}


@overridevoid initState() {// TODO: implement initState  super.initState();  _startupJpush();  _setPushTag();  _addEventHandler();  _getRegisterID();  _getWelcomeImage();}}

(3) 我的用是Extras 并且在客户端 通过参数 进行指定页面跳转

(4)服务端推送,C# Core版本 nuget搜索JiGuang.JPush

/// <summary>
/// 极光推送全局推送
/// </summary>
/// <param name=”title”>标题</param>
/// <param name=”content”>正文</param>
/// <param name=”dic”>extras字典</param>
/// <param name=”indent”>指定安卓页面,没用</param>
/// <param name=”outmsg”></param>
/// <returns></returns>
public static bool Send(string title,string content, Dictionary<string,object> dic, Dictionary<string, object> indent,out string outmsg)
{
  var client = new Jiguang.JPush.JPushClient(appKey,appSecret);
  var android = new Android { Title = title, Alert = content, AlertType = 0, Extras = dic, Indent = indent };
  var ios = new IOS{ Alert= title, Extras= dic };
  var pushInfo = HD.DLL.Push.GetTopInfo();
  if(pushInfo!=null&&pushInfo.Id>0 )
  {
  var ts = System.DateTime.Now.Subtract(pushInfo.Addtime);
  if(ts.Hours<1)
  {
    outmsg = “最近的全局推送时间:”+pushInfo.Addtime+”,请间隔一个小时”;
    return false;
  }
  }
  var playLoad = new Jiguang.JPush.Model.PushPayload() {
    Platform = “all”,
    //Audience = “all”,
    Notification = new Notification() { Alert=title, Android =android,IOS=ios},
    Message = new Jiguang.JPush.Model.Message() { Content=content,Title=title,Extras= dic }
  };
  var response=client.SendPush(playLoad);
  outmsg = response.Content;
  var ret= response.StatusCode== System.Net.HttpStatusCode.OK;

  //记录推送日志
  pushInfo.Addtime = System.DateTime.Now;
  pushInfo.Title = title;
  pushInfo.Content = content;
  pushInfo.UserId = 0;
  pushInfo.Extras = JsonConvert.SerializeObject(dic);
  pushInfo.Status = ret ? 1 : -1;
  Push.Add(pushInfo);
  return ret;
}

 

 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,817
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,900