uni-app unipush2.0离线消息点击后打开APP无法监听到点击事件
uni-app unipush2.0离线消息点击后打开APP无法监听到点击事件
| 类别 | 信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC版本号 | windows11 |
| HBuilderX | 正式 |
| HBuilderX版本号 | 4.87 |
| 手机系统 | Android |
| 手机系统版本号 | Android 13 |
| 手机厂商 | 小米 |
| 手机机型 | 小米10S |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
<script>
export default {
data() {
return {
}
},
onLaunch() {
uni.onPushMessage((res) => {
console.log("收到推送消息:",res) //监听推送消息
if(res.type == 'receive'){
uni.createPushMessage({
title: '测试的创建通知标题',
content: '消息显示的内容,在系统通知中心中显示的文本内容。',
complete(com){
console.log('创建通知栏', com);
}
})
}else if(res.type == 'click'){
console.log('用户通过点击消息进入APP', res);
}
})
uni.getPushClientId({
success(res) {
console.log('客户端推送标识cid:', res.cid);
},
fail(err) {
console.log('获取pushID失败', err);
}
})
console.log('App Launch')
},
onShow() {},
methods: {},
};
</script>
操作步骤:
- APP.vue中onLaunch生命周期执行uni.onPushMessage()
预期结果:
- 小米点击系统消息,打开APP,并执行uni.onPushMessage回调
实际结果:
- 小米点击系统消息,打开APP,未执行uni.onPushMessage回调
bug描述:
推送离线消息以后,小米可以正常收到离线消息,点击消息也可以正常打开APP,但是打开后监听不到点击事件,走不了回调。在IOS中一切正常,打开APP以后回调正常执行
更多关于uni-app unipush2.0离线消息点击后打开APP无法监听到点击事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
该bug反馈内容基本完整但存在关键缺失:描述了小米设备点击离线通知后无法触发uni.onPushMessage的click事件,提供了环境信息(HBuilderX 4.87/Android 13/Vue2)和代码示例,但未说明是否进行云打包及manifest.json中推送配置情况。复现步骤过于简略,未包含厂商通道配置验证环节。
根据知识库分析,此问题大概率非框架bug:
知识库明确指出【Android应用进入后台后点击通知无法拉起App,需检查设备"后台弹出界面"权限】(小米/OPPO/vivo常见),路径为:设置-应用管理-权限管理-后台弹出界面
离线推送必须经云打包才能生效,标准HBuilder运行基座不支持
小米厂商通道需单独配置回执,否则影响消息传递
用户可能遗漏两点:①未开启小米设备后台弹出权限 ②未通过云打包生成正式包测试。建议先检查设备权限设置,确认云打包流程,并参考离线推送说明验证配置完整性。若仍异常,需提供云打包后的manifest.json推送配置片段进一步排查。 内容为 AI 生成,仅供参考
更多关于uni-app unipush2.0离线消息点击后打开APP无法监听到点击事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据你的描述,这是一个典型的Android平台下UniPush2.0离线消息点击事件监听问题。以下是关键分析和解决方案:
核心问题:
在Android平台,当APP完全退出(进程被杀)时,点击离线推送消息启动APP,uni.onPushMessage的监听可能尚未建立,导致无法捕获click事件。
解决方案:
- 使用
plus.push.addEventListener替代(推荐) 在onLaunch中同时使用原生plus事件监听,确保能捕获启动时的点击事件:onLaunch() { // 原有uni.onPushMessage保留 uni.onPushMessage((res) => { console.log("uni收到推送消息:", res); }); // 添加plus事件监听 if (plus.push) { plus.push.addEventListener('click', (msg) => { console.log('plus监听到点击事件:', msg); // 处理点击逻辑 }, false); plus.push.addEventListener('receive', (msg) => { console.log('plus监收到消息:', msg); }, false); } }

