unipush app离线 在线 厂商推送消息
fm:app没有运行时 离线 也要有收到推送消息 然后 就得用到厂商推送 一般的话 需要去配置 对应厂商的 appid

然后选择UNIPush 透传


intent:#Intent;action=android.intent.action.oppopush;launchFlags=0x14000000;component=应用包名/io.dcloud.PandoraEntry;S.UP-OL-SU=true;S.title=测试标题;S.content=测试内容;S.payload=test;end
以上是安卓 离线时做法
ios 离线收到推送 payload 的格式跟在线发的数据的格式一样
{"title":"title","body":"body","click_type":"url","url":"/pages/schedule/index"}


离线的时候 收到的是系统消息 所以更多的是监听click事件
所以离线的时候 简单的操作就是跳转 直接跳转
plus.push.addEventListener("click", function(msg) {console.log(msg)uni.switchTab({url: "/pages/msg/index"})}, false);
在线的时候 收到的是本地创建的消息 所以是监听receive事件
在线还要判断是ios 还是安卓 如果是安卓直接本地创建 如果是ios 的话 msg会返回一个aps 和一个type 这个只要在ios环境下才会返回 所以不腰惊讶为什么安卓手机调试 type没有打印出来
//收到透传消息 //只有APP在线时,才会触发receive事件,透传消息不会触发系统消息,需要创建本地消息 plus.push.addEventListener("receive", function(msg) { console.log("(receive):" + JSON.stringify(msg)); if (app.isIOS()) { //如果是IOS var payload = msg.payload; //【APP离线】收到消息,但没有提醒(发生在一次收到多个离线消息时,只有一个有提醒,但其他的没有提醒) //【APP在线】收到消息,不会触发系统消息,需要创建本地消息,但不能重复创建。必须加msg.type验证去除死循环 if (msg.aps == null && msg.type == "receive") { var messageTitle = payload.messageTitle; var messageContent = payload.messageContent; //创建本地消息,发送的本地消息也会被receive方法接收到,但没有type属性,且aps是null plus.push.createMessage(messageContent, JSON.stringify(payload), {title: messageTitle}); } } if (app.isAndroid()) { //如果是Android,当APP在线时,收到透传消息不会进入系统消息,需要发送本地提醒。 var payload = JSON.parse(msg.payload); var messageTitle = payload.messageTitle; var messageContent = payload.messageContent; plus.push.createMessage(messageContent, msg.payload, {title: messageTitle}); } }, false);
附上相关链接 https://ask.dcloud.net.cn/article/36622?notification_id-760228__item_id-32878
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
