app 接受到推送消息后,如果用户点击消息,一般是到达目标页面。这个时候解析消息并进行处理。
操作流程
- 当用户点击消息栏的消息时,通过 uni.onPushMessage 方法来接受消息。
- 获取接受消息里边的 payload 数据。payload 里边可以传递一些自定义的参数过来。
- 我们可以将想跳转的页面和参数定义在 page 里。并对 page 进行判断,如果 page 是 tab 页的,就做 tab 页跳转,非 tab 页就做非 tab 页跳转。
- 对消息数目角标清零
plus.runtime.setBadgeNumber(0);
。
// #ifdef APP-PLUS
let goPage = (value) => {
let tabbars = ['pages/home/index', 'pages/pdd/index', 'pages/message/index', 'pages/mine/index'];
let isTab = false;
for(let tabbar of tabbars) {
if (value.indexOf(tabbar) >= 0) {
isTab = true;
break;
}
}
if (isTab) {
uni.switchTab({
url: value
});
} else {
uni.navigateTo({
url: value
});
}
}
// 通过推送消息进来的
uni.onPushMessage((res) => {
plus.runtime.setBadgeNumber(0);
if (res && res.data && res.data.payload && res.data.payload.page) {
goPage(res.data.payload.page)
}
});
// #endif
消息推送补充
消息推送那边,我们把 page 参数 放在 payload 里。
{
"appId": "__UNI__XXXX",
"push_clientid": "6eb119fabc0123f545086eexxxxxxxx",
"title": "小区宝来电",
"content": "人生若只如初见,何事秋风悲画扇。",
"payload": { "page": "pages/home/topic/detail?id=6" }
}