关于uniapp:unipush消息推送及遇到的问题

55次阅读

共计 2586 个字符,预计需要花费 7 分钟才能阅读完成。

1 . 在 app.vue 页面 onLaunch 中增加

onLaunch: function() {var platform = uni.getSystemInfoSync().platform;
   // #ifdef APP-PLUS
   plus.screen.lockOrientation("portrait-primary");
   // 推送
   var pinf = plus.push.getClientInfo();
   var cid = pinf.clientid; // 客户端标识
   console.log('cid:' + cid);
   const _self = this;
   const _handlePush = function(payload) {var pages = getCurrentPages();
     console.log('----------', payload)
     // 页面栈为 0,标记 app 是被 push 唤醒,在欢送页执行跳转逻辑
     if (payload.alive === false) {console.log('设置 storage')
        uni.setStorage({
            key:'appLaunchedByPush',
            data:payload
        })
     }
     else { //app 在线,收到 push 能够间接跳转
        uni.navigateTo({url: '/pages/index'});
     }
   };
   plus.push.addEventListener('click', function(message) {console.log('push click =======', message)
     if (platform == 'ios') {// 离线是 payload 为 object , 在线时本地创立的为 string( 本地创立告诉只能传 string,否则无奈传递 payload)
       if (typeof message.payload == 'string') {console.log('string')
         var payload = JSON.parse(message.payload);
       } else {console.log('obj')
         var payload = message.payload;
       }
       _handlePush(payload);
       return
     }
     // 这里能够写跳转业务代码
     _handlePush(message.payload);
   });
   plus.push.addEventListener('receive', function(message) {console.log('push receive ======', message);
     if (message.type == "receive"){ // 这里判断触发的起源,否则始终推送。if (platform == 'ios') {console.log('ios receive', message);
         if (typeof message.payload == 'string') {
           plus.push.createMessage(
             message.content,
             message.payload, {
             cover: false,
             title: message.title,
           });
         } else {
           plus.push.createMessage(
             message.content,
             JSON.stringify(message.payload), {
              cover: false,
              title: message.title,
           });
         } 
       }
       else {console.log('android receive======', message);
         // 执行跳转判断或增加本地告诉
         plus.push.createMessage(
           message.content, 
           JSON.stringify(message.payload), {
           cover: false,
           title: message.title
         });
       }
     }
   });
 }

2 . 解决离线音讯跳转在 app 默认跳转页面增加我这里是登录页面

uni.switchTab({
  url: '/pages/workplace/index',
  success: () => {
    // 解决 app 被 push 唤醒时音讯推送的跳转
    const payload = uni.getStorageSync('appLaunchedByPush')
    console.log('appLaunchedByPush', payload)
    if (payload) {setTimeout(()=> {console.log(payload + 'setTimeout')
        uni.navigateTo({url: '/pages/index'});
        uni.setStorage({
          key:'appLaunchedByPush',
          data:null
        })
      })  
    } 
  }
})

3 . 在 manifest.json =》App 模块配置中勾选音讯推送及 uniPush 选项开启音讯推送性能

4 . 在 unicloud 开发者核心增加我的项目利用,增加好后进入利用在 Uni push=》音讯推送中发送音讯测试是否能够收到推送的音讯

5 . 在 unicloud 开发者核心 =》你创立的利用 =》Uni push=》厂商推送设置中配置各厂商推送设置(app 在线时音讯走的是第三方音讯推送平台,离线时走的是手机厂商的推送通道,所以这个必须配置,如果不配置在 app 离线时会收不到离线音讯),配置实现 app 离线时也能够收到推送音讯啦

遇到的问题:

1 . 华为离线音讯推送收不到?

(1)厂商推送是否配置实现,agconnect-services.json 文件是否上传(2)打包或打自定义基座必须应用自有证书,共有证书收不到音讯推送(3)华为手机会默认把离线音讯归为营销告诉,离线时音讯是收到的只是不展现进去,在手机设置 =》告诉 =》你的 app=》关上营销告诉选项才能够失常显示离线音讯

2 . ios 在线离线音讯都收不到?

(1)是否申请 ios 证书(2)在开发者核心 =》音讯推送 =》利用配置 =》查看是否配置 ios 相干证书(3)打自定义基座时是否正确上传证书文件及私钥证书

3 . 离线音讯收到了,然而不能失常跳转,点击后只能跳转到首页?

离线音讯点击后会默认先跳转到首页或者欢送页,这时在 app.vue 里写的跳转音讯详情的页面也执行跳转,页面会报错提醒不要反复跳转详情页。离线音讯点击跳转到首页后,须要在 app 首页判断是否有离线音讯,有的话再执行跳转音讯详情页面。

正文完
 0