HarmonyOS鸿蒙Next中接入uni-push发现无法控制系统弹出的推送通知弹窗
HarmonyOS鸿蒙Next中接入uni-push发现无法控制系统弹出的推送通知弹窗 问题描述:我们是uniapp项目,在接入uni-push后,因为会产生系统级的通知权限弹窗,但是这个弹窗是由各个操作系统控制(uni文档描述),导致我们无法进行控制,他又总是在应用安装后首启时就弹出了。
请问这个有什么解决方案吗?
类似于这个问题:https://developer.huawei.com/consumer/cn/forum/topic/0208215890690335445?fid=0109140870620153026
更多关于HarmonyOS鸿蒙Next中接入uni-push发现无法控制系统弹出的推送通知弹窗的实战教程也可以访问 https://www.itying.com/category-93-b0.html
【解决方案】
开发者您好,已向uni-app反馈。因您的问题与三方uni-app相关,为了更快解决您的问题,您可以前往uni-app的官方社区交流解决。
更多关于HarmonyOS鸿蒙Next中接入uni-push发现无法控制系统弹出的推送通知弹窗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
开发者您好,在uniapp项目接入uni-push后,要解决弹窗在应用安装后首启时就弹出,可参考以下方案:
延迟获取权限,根据uni-push官方文档,可在合适时机调用获取推送客户端信息方法,此时系统可能不会立即弹出权限弹窗。例如在应用首启后,用户进行某些操作(如点击特定按钮)后再调用此方法,而非在首启时直接触发权限弹窗请求。
uni.getPushClientId({
success: (res) => {
console.log(res.cid);
},
fail(err) {
console.log(err)
}
})
开发者您好,该问题正在处理中,请耐心等待。
uni AI 给的解决方案,推迟getPushClientId(),就推迟uni-push的初始化。试试
我发现iOS也存在类似问题,但是iOS可以通过字段配置为手动控制,然后调用接口自行弹出。可是这个字段在鸿蒙中没有。
在鸿蒙Next中,uni-push使用系统通知通道,弹窗受系统通知管理策略控制。若未设置NotificationRequest的slotType或importance(如设为NONE),系统将自动弹出通知栏。需检查manifest.json中push模块配置及推送API的NotificationCategory参数。当前版本对通知弹窗的统一控制由系统侧决定,无法由应用层完全拦截。
系统通知权限弹窗由操作系统统一管控,应用无法干预弹窗的展示时机、样式或内容。uni-push 默认会在启动时自动申请权限,导致首启即弹出。
解决方案是延迟申请权限,在需要推送功能的业务场景下再触发:
- 关闭
uni-push的自动请求权限(参考 uni-push 配置,去除自动申请)。 - 在合适页面(如用户主动开启消息通知的设置页),通过调用
uni.requestNotificationPermission()手动唤起系统弹窗。需确保该调用由用户点击行为触发,否则系统可能拒绝弹窗。
这样可将弹窗时机置于用户预期内,提升体验。

