1、准备工作
(1)开通UniPush后,需在后台配置“厂商推送设置”,需要在各厂商后台开通推送(自定义基座无法调试离线推送)
(2)ios配置证书参照https://ask.dcloud.net.cn/article/171
2、接入(要区分安卓ios,返回格式不同,且要区分离线、挂起、打开App下推送的不同)
onLaunch: function() {
console.log('App Launch')
// #ifdef APP-PLUS
//判断客户端
var clent = uni.getSystemInfoSync().platform
plus.push.setAutoNotification(true)
const _self = this;
//收到透传消息
//只有APP在线时,才会触发receive事件,透传消息不会触发系统消息,需要创建本地消息
plus.push.addEventListener("receive", function(msg) {
console.log("receive:" + JSON.stringify(msg));
if(_self.status){
_self.status = false;
_self.$app.navUri(msg.payload)
}
if (clent == 'ios') { //如果是IOS
//【APP离线】收到消息,但没有提醒(发生在一次收到多个离线消息时,只有一个有提醒,但其他的没有提醒)
//【APP在线】收到消息,不会触发系统消息,需要创建本地消息,但不能重复创建。必须加msg.type验证去除死循环
if (msg.aps == null && msg.type == "receive" ) {
//创建本地消息,发送的本地消息也会被receive方法接收到,但没有type属性,且aps是null
msg.payload = JSON.parse(msg.payload)
console.log('msg.payload1' ,msg.payload)
msg.payload = {
"title":msg.payload[0],
"content":msg.payload[1],
"url":msg.payload[2],
}
console.log('msg.payload2' ,msg.payload)
plus.push.createMessage(msg.payload.content, JSON.stringify(msg.payload), {
title: msg.payload.title
});
}
}
}, false);
//消息点击事件
plus.push.addEventListener("click", function(msg) {
console.log("(click):" + JSON.stringify(msg));
if (clent == 'ios') {
//ios 删掉进程时redirect跳转页面
if(!msg.aps){
msg.payload = JSON.parse(msg.payload)
}
let url = msg.payload.url
_self.$app.navUri(url)
}else{
_self.status = true;
}
}, false);
// #endif
},
注:此功能只在小米和ios测试通过,华为推送在数据还有问题,等后台弄完会实时更新