unipush推送离线消息点击事件_uniapp unipush 离线推送 小米 java
在uni-app中处理uniPush离线消息点击事件的完整实现方案如下:
一、基础监听配置
-
全局事件监听
在App.vue的onLaunch
生命周期中添加点击事件监听,需使用plus.push
原生API28:javascriptCopy Code
plus.push.addEventListener(\'click\', (msg) => { console.log(\'点击消息内容:\', msg); if(msg.payload) { uni.navigateTo({ url: JSON.parse(msg.payload).pagePath }); }});
-
厂商通道兼容
Android需在manifest.json配置华为/小米等厂商参数,确保离线消息能触发系统级通知点击37。
二、关键处理逻辑
-
payload格式规范
服务端推送时需包含标准payload结构,建议使用JSON格式传递跳转路径1112:jsonCopy Code
{ \"title\": \"订单提醒\", \"content\": \"您有新订单\", \"payload\": \"{\\\"pagePath\\\":\\\"/pages/order/detail?id=123\\\"}\"}
-
iOS特殊处理
iOS平台需通过APNs证书下发消息,payload需符合苹果规范且包含click_type
字段35。
三、完整代码示例
App.vue
export default { onLaunch() { // #ifdef APP-PLUS plus.push.addEventListener(\'click\', (msg) => { try { const payload = JSON.parse(msg.payload); if(payload.pagePath) { uni.navigateTo({ url: payload.pagePath }); } } catch(e) { console.error(\'payload解析失败\', e); } }); // #endif }}
已完成
此代码需配合自定义基座测试,正式发布需配置厂商通道证书610。
四、注意事项
- Android Intent格式:vivo/OPPO等厂商要求payload包含完整的intent协议字符串39
- 角标处理:iOS可通过
badge
字段设置应用角标数411 - 权限检测:建议调用
plus.android.requestPermissions
检查通知权限612
具体厂商通道配置参考uniPush2.0官方文档