uniapp 实现信息推送(App)
时间:2021-08-07
本文章向大家介绍uniapp 实现信息推送(App),主要包括uniapp 实现信息推送(App)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
废话不多说直接上代码
以下代码需写在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.cnblogs.com/qingwututu/p/15111798.html
- 基于马尔科夫链的产品评估预测
- MVC 控制器中传递dynamic(对象) 给视图
- 使用copy命令解决LONG类型的困扰(r2第24天)
- MVC 获取路由的 URL 参数值和默认值的集合。
- 用libsvm进行回归预测
- mvc路由配置.html结尾的伪静态
- 【编程基础】Java的接口和抽象类
- 循序渐进调优union相关的sql(r2笔记23天)
- 对分区表导入导出的水平,垂直切分(r2第22天)
- 巧用parallel极速提升数据加载速度(r2第21天)
- 【Windows编程】创建多文档界面
- 生产环境sqlldr加载性能问题及分析之二(r2第20天)
- [Python]从豆瓣批量获取看过电影的用户列表,并应用kNN算法预测用户性别
- 关于desc的一个奇怪问题及分析(r2第18天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法