废话不多说直接上代码

以下代码需写在onlaunch生命周期内

onlaunch(){// onlaunch应用级生命周期 :当uni-app 初始化完成时触发(全局只触发一次)

//#ifdef APP-PLUS
const cInfo = plus.push.getClientInfo() // 获取当前设备的客户端id,传给后台,实现指定用户
info && uni.setStorageSync('clientInfo', info) //储存cInfo plus.push.addEventListener("click", function(msg) { //监听消息点击事件
let payload;
// iOS 环境下
if(uni.getSystemInfoSync().platform == 'ios') { if (msg.type == "click") { //APP离线点击包含click属性,这时payload是JSON对象
payload = msg.payload;
} else { //APP在线,收到消息不会包含type属性,这时的payload是JSON字符串,需要转为JSON对象
payload = JSON.parse(msg.payload);
}
if (payload != null || payload != undefined) { //此处是预防两次响应推送后的执行事件,此处很玄乎
// let messageType = payload.messageType;
// onLaunch 生命周期里,页面跳转有问题,跳不过去
// 应该是页面还没加载,加上定时后,就可以了;
setTimeout(() => { //做相应的跳转
uni.navigateTo({
url: payload.payload
})
}, 1000)
}
} else { // Android
payload = msg.payload;
if (payload != null || payload != undefined) { //此处是预防两次响应推送后的执行事件,此处很玄乎
// onLaunch 生命周期里,页面跳转有问题,跳不过去
// 应该是页面还没加载,加上定时后,就可以了;
setTimeout(() => { //做相应的跳转
uni.navigateTo({
url: payload
})
}, 1000)
}
}
}, false);
//收到透传消息
//只有APP在线时,才会触发receive事件,透传消息不会触发系统消息,需要创建本地消息
plus.push.addEventListener("receive", function(msg) {
//业务代码
// IOS
if(uni.getSystemInfoSync().platform == 'ios') {
//【APP离线】收到消息,但没有提醒(发生在一次收到多个离线消息时,只有一个有提醒,但其他的没有提醒)
//【APP在线】收到消息,不会触发系统消息,需要创建本地消息,但不能重复创建。必须加msg.type验证去除死循环
if (msg.type == "receive") {
//创建本地消息,发送的本地消息也会被receive方法接收到,但没有type属性,且aps是null
plus.push.createMessage(msg.content, JSON.stringify(msg), {title: messageTitle});
}
} else { // Android
var payload = JSON.parse(msg.content);
var messageTitle = payload.title;
var messageContent = payload.content;
plus.push.createMessage(messageContent, payload, {title: messageTitle})
} }, false);
//#endif }

来源:https://www.icode9.com/content-4-999837.html

最新文章

  1. mysql 有两种数据库引擎发音
  2. Online, Asynchronous Schema Change in F1
  3. 20145103《java程序设计》第4周学习总结
  4. Python操作Excel_随机点菜脚本
  5. ASP.NET MVC 5使用CrystalReport(水晶报表)
  6. 最短路算法模板合集(Dijkstar,Dijkstar(优先队列优化), 多源最短路Floyd)
  7. Linux命令行之逗趣无极限
  8. windows无效字符名导致的错误及解决办法
  9. Cocos2d-x学习笔记(两)Cocos2d-x总体框架
  10. python中关于发邮件的示例
  11. backbone的一些认识
  12. linux通过expect工具来实现自动登录服务器,并执行相关操作
  13. 并发编程(一)—— volatile关键字和 atomic包
  14. Java 平时作业六
  15. 解决wordpress上传文件出现http错误问题
  16. 基于 Python 和 Pandas 的数据分析(3) --- 输入/输出 基础
  17. css让内层div自动撑开外层div
  18. oracle数据库occi接口写入中文乱码解决方法
  19. 构建-4 dependencies 依赖管理
  20. 转 git push 提示 Everything up-to-date

热门文章

  1. 刚刚进公司不会SVN 菜鸟感觉好蛋疼-----------SVN学习记
  2. Python+Scrapy+Crawlspider 爬取数据且存入MySQL数据库
  3. python内置函数dir()
  4. 架构之:REST和HATEOAS
  5. POJ2482 Stars in Your Window 题解
  6. SpringBoot读取Resource下文件的几种方式(十五)
  7. java 日期字符串互相转换
  8. Python基础之用tkinter写界面
  9. 基于Redisson实现分布式锁源码解读
  10. Cypress 高级用法系列 一