uni-app plus.push.createMessage 创建本地通知 切换app 的进程在后台 点击通知栏的信息打不开app
uni-app plus.push.createMessage 创建本地通知 切换app 的进程在后台 点击通知栏的信息打不开app
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| PC | Windows | |
| 手机 | HarmonyOS NEXT |
操作步骤:
cover:false,
sound:"system",
title:title
} )
预期结果:
app 进程在后台,点击通知栏打开app
实际结果:
app 进程在后台,点击通知栏打不开app
bug描述:
- 创建本地通知
cover:false,
sound:"system",
title:title
} )
- 切换app 的进程在后台,点击通知栏的信息打不开app,但是
plus.push.addEventListener("click")里的方法是执行的。
手机是华为手机mate 60,版本号是HarmonyOS NEXT Developer Beta2。
后台弹窗的权限已打开
麻烦各位大神帮忙看一下,非常感谢!
更多关于uni-app plus.push.createMessage 创建本地通知 切换app 的进程在后台 点击通知栏的信息打不开app的实战教程也可以访问 https://www.itying.com/category-93-b0.html
鸿蒙上也不支持 plus 的 这个 API 啊,你使用它会有通知?
更多关于uni-app plus.push.createMessage 创建本地通知 切换app 的进程在后台 点击通知栏的信息打不开app的实战教程也可以访问 https://www.itying.com/category-93-b0.html
对的,可以直接生成本地通知的,但是app 进程在后台之后,我点击通知栏打开是不会打开app 的,麻烦帮忙看一下
回复 1***@qq.com: 你提供一下完整的可以直接运行的代码我看一下
回复 DCloud_UNI_yuhe: export default { init: () => { // #ifdef APP-PLUS plus.push.setAutoNotification(true); //设置通知栏显示通知 //必须设置 // 监听用户点击通知事件 plus.push.addEventListener(“click”, function(msg) { console.log(“收到点击通知事件:”, JSON.stringify(msg)); pushHandle(msg) //处理方法 plus.push.clear(); //清空通知栏 }, false);
} // 渲染通知数字 const setBadgeNum=(num)=>{ uni.setStorageSync(‘bageNumber’,num); plus.runtime.setBadgeNumber(num); } // 渲染在通知了上 const renderPush=(msg)=>{ let title =msg.title; if(msg.content&&msg.content.title1){ title =msg.content.title1; } let content=“新消息”; if(msg.content&&msg.content.body){ content =msg.content.body; } let options={ cover:false, sound:“system”, title:title } try { let nums = uni.getStorageSync(‘bageNumber’)||0; if(nums){ nums=nums*1; } setBadgeNum(nums+1); plus.push.createMessage(content, JSON.stringify(msg.payload),options);
}
// 處理push const pushHandle = (msg) => { if(!msg) return false; // 清除app角标 setBadgeNum(0); // iOS的payload可能是字符串,需要解析 if (typeof (msg.payload) == ‘string’) { try { msg.payload = JSON.parse(decodeURIComponent(msg.payload)); } catch(e) { console.error(“解析payload失败:”, e); } }
}
回复 1***@qq.com: #ifdef APP-PLUS 都不会在鸿蒙上执行的
回复 DCloud_UNI_yuhe: 那我现在就是执行了的,鸿蒙4.2.0,不过我现在用的是自定义基座测试
回复 DCloud_UNI_yuhe: 貌似回复没有图片可以上传
回复 1***@qq.com: 你问题分类写错了,这个不是鸿蒙 next
回复 DCloud_UNI_yuhe: 哦哦,不好意思,那帮忙看看,我用小米手机测试也是一样
回复 DCloud_UNI_yuhe: 大佬,除了这个点击通知进不去APP 里面。还有一个问题,麻烦帮我看看是不是正常的。后台java 推送的格式用的是自定义格式,在华为手机上app 在后台的时候是触发不到plus.push.addEventListener(‘receive’) 创建不了本地通知,但是小米手机在线和app 在后台的情况都是可以创建本地通知。这个是正常的吗?谢谢哈
这是一个在HarmonyOS NEXT上已知的兼容性问题。plus.push.addEventListener("click")能够正常执行,说明通知点击事件确实被触发了,但应用未能正确回到前台。
主要问题在于HarmonyOS NEXT对后台应用启动管理较为严格。建议尝试以下解决方案:
-
检查应用自启动权限:在系统设置中,确保您的应用拥有"自启动"和"关联启动"权限。
-
使用Intent方式启动:在创建通知时明确指定启动参数:
plus.push.createMessage(content, JSON.stringify(msg.payload), {
cover: false,
sound: "system",
title: title,
intent: `#Intent;component=${plus.runtime.appid}/io.dcloud.PandoraEntry;end`
})
-
检查应用生命周期:在App.vue的onShow生命周期中添加日志,确认应用是否真的被唤醒但界面未正常显示。
-
临时解决方案:考虑使用
plus.runtime.launchApplication在点击事件中强制重启应用:
plus.push.addEventListener("click", function(message) {
plus.runtime.launchApplication({action: "android.intent.action.MAIN"});
});

