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