使用条件:uniappp应用后台执行时接收到推送消息,消息展示到通知栏,并且点击通知栏可以到达相应的页面。
1.uniapp后台执行接收到消息,涉及到一个后台保活。测试手机红米K50,设置电量无限制,我测试保活一个半小时。(可能会活得久一点,但是我忍不住点进去了一下)
2.消息展示到通知栏。在js文件里面编写create方法创建消息,并在想要使用的地方调用。(至于为什么要把创建消息单独拆出来,这可以用作后续的recive透传消息。)
// 创建消息
function create(content, payload = {}, options, isChange){
plus.push.createMessage(...arguments);
const delay = options.delay ? (~~options.delay * 1000) : 0;
setTimeout(()=>{
// isChange && this.changeBadge();
}, delay)
}
// 调用
create("点击查看消息内容>>",{url: "/pages/notice/notice"},{
// url写自己的,我是要跳转到pages目录下的notice文件夹的notice.vue 页面。
delay: 0.5, // 延时0.5秒显示
title: "您有新的公告信息",
when:new Date(),
cover:true, // 是否覆盖下一条消息
icon:"../static/logo.png",
sound:"system" // 声音,默认使用系统声音,这句可以不加
},true)
3.点击通知栏达到相应的页面。在main.js文件里面写一个监听(消息通知)。注意跳转到tabbar页面使用uni.switchTab,跳转到普通页面使用uni.navigateTo。
// #ifdef APP
// 监听点击菜单栏消息
void plus.push.addEventListener('click',(e)=>{
let {url} = e.payload
uni.switchTab({
url,
success(res) {
console.log(res)
},
fail(err) {
console.log(err)
}
})
// console.log(e)
},false)
// #endif
写在最后:看了很多其他人的博文,还是没有弄明白recive是用来干嘛的,希望大佬指教。