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首页判断是否有离线音讯,有的话再执行跳转音讯详情页面。