uniapp引用极光推送 插件

打印 上一主题 下一主题

主题 1023|帖子 1023|积分 3073

一. 导入所需要的插件 主要需要两个


  • https://ext.dcloud.net.cn/plugin?id=4035(JPUSH)
  • https://ext.dcloud.net.cn/plugin?id=4028 (JCORE)
二. 在App.Vue中的 onLaunch (或者onShow)中监听极光推送的状态

监听之前记得引入
  1. var jpushModule = uni.requireNativePlugin("JG-JPush")
复制代码
然后监听代码
  1. //监听 极光推送连接状态
  2. uni.$on('connectStatusChange',(connectStatus)=>{
  3.    var connectStr = ''
  4.    if (connectStatus == true) {
  5.            connectStr = '已连接'
  6.            this.getRegistrationID()
  7.    }else {
  8.            connectStr = '未连接'
  9.    }
  10.    console.log('监听到了连接状态变化 --- ', connectStr)
  11.    this.connectStatus = connectStr
  12. })
复制代码
三 . 在onLaunch中初始化且获取registerID

  1. jpushModule.initJPushService();
  2. getRegistrationID() { //获取registerID
  3.         jpushModule.getRegistrationID(result=>{
  4.                 let registerID = result.registerID
  5.                 console.log(registerID)
  6.                 this.registrationID = registerID
  7.                 uni.setStorageSync("registerID",registerID)
  8.         })       
  9. },
复制代码
四 . 推送需要打开通知权限 ,所以可以写一个弹窗 去让用户去打开


  • 首先要判断用户是否打开通知权限
  1. //getNotificationEnabled 和 noticMsgTool 只是个方法名 可以随便起
  2. getNotificationEnabled(){
  3.         if(uni.getSystemInfoSync().platform == "ios"){
  4.                 jpushModule.requestNotificationAuthorization((result)=>{
  5.                         let status = result.status
  6.                         if (status < 2) {
  7.                                 this.noticMsgTool()
  8.                         }
  9.                 })
  10.         }else{
  11.                 jpushModule.isNotificationEnabled((result)=>{ //判断android是否打开权限
  12.                         if(result.code == 0){//如果为0则表示 未打开通知权限
  13.                                 this.noticMsgTool()
  14.                         }
  15.                 })
  16.         }
  17. },
复制代码

  • 如果没有打开 则可以 去 请求打开
  1. noticMsgTool(){
  2.         if(uni.getSystemInfoSync().platform == "ios"){
  3.                 //苹果打开对应的通知栏
  4.                 uni.showModal({
  5.                         title: '通知权限开启提醒',
  6.                         content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
  7.                         showCancel: false,
  8.                         confirmText: '去设置',
  9.                         success: function(res) {
  10.                                 if (res.confirm) {
  11.                                         var app = plus.ios.invoke('UIApplication', 'sharedApplication');
  12.                                         var setting = plus.ios.invoke('NSURL', 'URLWithString:', 'app-settings:');
  13.                                         plus.ios.invoke(app, 'openURL:', setting);
  14.                                         plus.ios.deleteObject(setting);
  15.                                         plus.ios.deleteObject(app);
  16.                                 }
  17.                         }
  18.                 });
  19.         }else{
  20.                 //android打开对应的通知栏
  21.                 var main = plus.android.runtimeMainActivity();
  22.                 var pkName = main.getPackageName();
  23.                 var uid = main.getApplicationInfo().plusGetAttribute("uid");
  24.                 uni.showModal({
  25.                         title: '通知权限开启提醒',
  26.                         content: '您还没有开启通知权限,无法接受到消息通知,请前往设置!',
  27.                         showCancel: false,
  28.                         confirmText: '去设置',
  29.                         success: function(res) {
  30.                                 if (res.confirm) {
  31.                                     var Intent = plus.android.importClass('android.content.Intent');
  32.                                         var Build = plus.android.importClass("android.os.Build");
  33.                                         //android 8.0引导  
  34.                                         if (Build.VERSION.SDK_INT >= 26) {
  35.                                                 var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
  36.                                                 intent.putExtra('android.provider.extra.APP_PACKAGE', pkName);
  37.                                         } else if (Build.VERSION.SDK_INT >= 21) { //android 5.0-7.0  
  38.                                                 var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
  39.                                             intent.putExtra("app_package", pkName);
  40.                                                 intent.putExtra("app_uid", uid);
  41.                                         } else { //(<21)其他--跳转到该应用管理的详情页  
  42.                                                 intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  43.                                                 var uri = Uri.fromParts("package", mainActivity.getPackageName(), null);
  44.                                                 intent.setData(uri);
  45.                                         }
  46.                                     // 跳转到该应用的系统通知设置页  
  47.                                     main.startActivity(intent);
  48.                                 }
  49.                         }
  50.                 });
  51.         }
  52. }
复制代码
这样写 之后 就会获取到 一个 registerID ,且联通极光推送,在根据 registerID去发送推送消息 (后台的事就不操心了)。
六. 代码解决了 ,接下来 就是 极光的应用的配置了


  • 极光推送的 账号注册 就不说了
  • 首页右上角有一个创建应用 点击创建应用如下图
    应用名称 在 manifest.json → 基础配置中 找到 应用名称 填写
    应用图标也在 manifest.json中找

  • 选择消息推送 点击下一步

  • 选择通道 和 填写 包名
    应用包名 通过 hbuilder → 发行 → 原生app云打包 获取 android和ios包名
    通道可以全选

    创建成功之后 返回到 应用管理 进入你刚刚创建的 应用管理中 ,界面如下图,记住 AppKey,在manifest.json需要用到

上述流程是android的 流程 ios流程可在上图中 点击 ios集成进入,选择推送消息
ios第二步的 开发证书和生产证书 可通过证书获取流程去获取

七. manifest.json的配置


  • 在App原生插件配置中 界面如下图
    JPUSH_APPKEY_ANDROID 和 JPUSH_APPKEY_IOS两个填极光推送的 appkey
    剩余的通道设置 可以选择示例,如下图填写方式

  • 在App模块配置中勾选 push ,但是不能勾选 uniPush,因为我们用的是极光推送 不是 uniPush推送 ,uniPush推送也比较好用,有兴趣可以去试一下
  • ios打包的 证书 profile文件需要 带有push功能

  • 使用自定义基座打包
    hbuilder → 运行 → 运行到手机或模拟器 → 运行基座 → 自定义基座
    然后同级选择 制作自定义基座 ,等待打包完成之后 运行到手机或模拟器 。
    如此 我们 的 极光推送配置就完成了
八. 上述完成之后 ,接下来就是测试消息推送

进入极光推送官网创建的应用中,点击左侧 消息推送,点击右侧创建通知消息
填写 内容 和 标题 和选择发送平台

上面获取的Registration ID 填写在 下图中,然后点击 发送预览 确定。

结果如下图


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表