uniapp对接极光离线推送保姆级教程

前言:uniapp对接极光推送支持离线推送且免费所以选择了极光推送

注册极光后台,配置推送参数

android
在这里插入图片描述
ios
注意ios的证书是区分环境的:打包的证书和环境配置要相匹配
在这里插入图片描述

在这里插入图片描述

到各个厂商申请推送

安卓申请指南:https://docs.jiguang.cn/jpush/client/Android/android_3rd_param
ios:申请推送证书

uniapp从插件市场下载推送插件

搜下面两个,然后把各个厂商的推送参数配置进去
在这里插入图片描述

uniapp加入代码接收消息

 onLaunch: function() {
      //初始化极光推送
      initJPMessage() {
        var jpushModule = uni.requireNativePlugin("JG-JPush")
        jpushModule.initJPushService();
        jpushModule.setLoggerEnable(true);
        jpushModule.addConnectEventListener(result => {
          let connectEnable = result.connectEnable
          uni.$emit('connectStatusChange', connectEnable)
        });

        //获取注册id
        jpushModule.getRegistrationID((e) => {
          console.log("getRegistrationID", e)
        })

        /**
         * @description 监听别名添加与删除
         * @param code number  请求状态码 0 - 成功
           @param sequence number  请求时传入的序列号,会在回调时原样返回
           @param tags StringArray 执行tag数组操作时返回
           @param tag  string  执行查询指定tag(queryTag)操作时会返回
           @param tagEnable    boolean 执行查询指定tag(queryTag)操作时会返回是否可用
           @param alias    string  对alias进行操作时返回
           
         */
        jpushModule.addTagAliasListener(result => {
          console.log('【sk】标签别名事件回调result=>', result)
        })
      },
     //登陆完成后监听通知消息
      handleJpush() {
        var jpushModule = uni.requireNativePlugin("JG-JPush")

        jpushModule.addNotificationListener(result => {
          let notificationEventType = result.notificationEventType
          let messageID = result.messageID
          let title = result.title
          let content = result.content
          let extras = result.extras

          /**
           * @description 根据消息的类型决定后续操作,仅从通知栏消息跳转进app这种类型,做页面分发跳转操作
           * 
           * @param {string} notificationEventType  notificationArrived(应用在前台时收到消息);notificationOpened(通知栏消息跳转)
           * 
           */

          if (notificationEventType === 'notificationOpened') {
            this.handleJpushJump(extras)
          }
        });

        // 现有的业务不走这个回调
        jpushModule.addLocalNotificationListener(result => {
          let messageID = result.messageID
          let title = result.title
          let content = result.content
          let extras = result.extras
          this.handleJpushJump(extras)
        })
      },

      // 处理消息的跳转页面
      handleJpushJump(extras) {
        // 获取当前页面的实例对象
        const pages = getCurrentPages();
        const currentPage = '/' + pages[pages.length - 1]?.route;
        let eventType = extras.eventType
        let path = extras.path
        let params = extras.targetParam
        let latestVersionTargetParam = extras.latestVersionTargetParam
       
        //如果目前在当前页面,关闭当前页跳转
        if (currentPage === path) {
          uni.redirectTo({
            url: latestVersionTargetParam ? `${path}?${latestVersionTargetParam}` : `${path}`,
          })
          return
        }
        uni.navigateTo({
          url: latestVersionTargetParam ? `${path}?${latestVersionTargetParam}` : `${path}`,
        })
      }
 }

通过别名与用户建立关联

下面的data.envConfig的环境变量,区分生产环境和开发环境,由自己控制。
id 就是业务里的用户id

   CLEAR_ALIAS() {
      // #ifdef APP
      /**
       * 清除别名
       */
      var jpushModule = uni.requireNativePlugin("JG-JPush")
      jpushModule.deleteAlias({
        sequence: 1
      });
      // #endif
    },

    async SET_ALIAS(content, id) {
      // #ifdef APP
      try {
        const {
          data
        } = await getEnv()
        if (data && data.envConfig) {
          content.commit("SET_ENVIRONMENT", data.envConfig)
          var jpushModule = uni.requireNativePlugin("JG-JPush")
          console.log('重新绑定极光ALIAS', content.state.environment + '_' + id.toString())
          jpushModule.setAlias({
            alias: content.state.environment + '_' + id.toString(),
            sequence: 1
          });
        }
      } catch (e) {
        console.log("eeeee", e)
      }

      // #endif
    }

上面的都搞完就差不多了,下面是重点

避坑指南

  • 问题1:项目上线之后发现ios生产包上架之后接收不到信息,前端自检完成未发现证书,配置等问题。后来发现调用的api也需要配置apns_production参数,将apns_production设置为true为生产环境对应前端的下图配置
    在这里插入图片描述
"options":{
"time to live": 60,
"apns_production": false,
"apns_collapse id":"jiguang test 201706011100"
}
  • 问题2:小米收不到离线推送
    经过排查小米需要配置渠道id,要先到厂商申请
    https://docs.jiguang.cn/jpush/server/push/rest_api_v3_push
    在这里插入图片描述
  • 问题3:华为收不到离线消息
    经过排查,需要配置该参数
    在这里插入图片描述
    结语:反正坑挺多的,每个平台都有自己的规则,要仔细看每个平台的规则和文档
uniapp极光推送是使用uniapp框架开发应用时,集成极光推送功能的一种方法。具体步骤如下: 1. 首先需要在极光推送平台创建应用。进入【服务中心】-【开发者平台】,点击【概览】- 【创建应用】,填写应用名称和图标。 2. 选择【消息推送】服务,并进行下一步操作。 3. 设置应用包名,并进行下一步操作。在设置页面可以查看AppKey和Master Secret,这些信息在后续的配置中会用到。 4. 安装和配置uniapp极光插件,根据插件的使用指南进行安装和配置。 5. 配置完成后,可以在手机上进行测试,如果配置成功,就可以收到推送通知。需要注意的是,这种属于“控制台”推送,如果需要使用后台的“API”推送功能,需要进行后端的配置。 总结起来,uniapp极光推送的配置包括创建应用、设置应用信息、安装和配置插件等步骤。通过这些步骤,就可以实现在uniapp应用中集成极光推送功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [uniApp消息推送(极光/阿里云)](https://blog.csdn.net/qq_44930306/article/details/129085708)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [uniapp+极光做消息推送](https://blog.csdn.net/weixin_45449046/article/details/121270014)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值