uni-app 一加手机收到离线消息点击通知栏能打开应用但无法触发click事件
uni-app 一加手机收到离线消息点击通知栏能打开应用但无法触发click事件
操作步骤:
- 收到离线消息点击通知栏打开应用
预期结果:
- 收到离线消息点击通知栏消息打开应用并触发click事件获取自定义参数信息
实际结果:
- 收到离线消息点击通知栏能打开应用,无法触发click事件
bug描述:
- OPPO应用商店已上架,集成离线推送功能,一加手机能够收到在线和离线消息,在线消息点击通知栏能打开应用且触发click事件,但离线消息点击通知栏能打开应用无法触发click事件,使用intent且格式按照要求,华为手机是正常的
| 信息类别 | 详细信息 |
|----------------|--------------------|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | Windows 10 专业版 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 4.08 |
| 手机系统 | Android |
| 手机系统版本 | Android 10 |
| 手机厂商 | 一加 |
| 手机机型 | 一加7 Pro |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 一加手机收到离线消息点击通知栏能打开应用但无法触发click事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 一加手机收到离线消息点击通知栏能打开应用但无法触发click事件的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中,如果在一加手机上收到离线消息并点击通知栏打开应用时,无法触发 click
事件,可能是由于以下原因导致的:
1. 应用未完全启动
- 当应用从后台被唤醒时,可能还没有完全初始化,导致
click
事件无法触发。 - 解决方法:确保应用在启动时完成初始化逻辑。可以在
App.vue
的onLaunch
或onShow
生命周期中检查通知栏点击事件的处理逻辑。
2. 通知栏点击事件未正确传递
- 在 Android 平台上,通知栏点击事件需要手动处理。uni-app 默认可能没有自动触发
click
事件。 - 解决方法:在
App.vue
的onShow
生命周期中,通过plus.push.getClientInfo().payload
获取通知栏点击的附加数据,并手动触发对应逻辑。
export default {
onShow(options) {
const payload = plus.push.getClientInfo().payload;
if (payload) {
// 处理通知栏点击事件
console.log('Notification payload:', payload);
this.handleNotificationClick(payload);
}
},
methods: {
handleNotificationClick(payload) {
// 根据 payload 执行相应逻辑
}
}
}
3. 一加手机的优化策略
- 一加手机(或其他 Android 设备)可能会对后台应用进行优化,导致应用在点击通知栏时无法立即响应。
- 解决方法:
- 在
AndroidManifest.xml
中,确保应用具有正确的权限和启动模式。 - 在
App.vue
的onShow
中增加延迟处理逻辑,确保应用完全启动后再执行事件。
- 在
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
// App.vue
onShow(options) {
setTimeout(() => {
const payload = plus.push.getClientInfo().payload;
if (payload) {
this.handleNotificationClick(payload);
}
}, 1000); // 延迟 1 秒处理
}