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

7 回复

【解决方案】
开发者您好,已向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)
	}
})

参考文档:https://uniapp.dcloud.net.cn/api/plugins/push.html

开发者您好,该问题正在处理中,请耐心等待。

uni AI 给的解决方案,推迟getPushClientId(),就推迟uni-push的初始化。试试

我发现iOS也存在类似问题,但是iOS可以通过字段配置为手动控制,然后调用接口自行弹出。可是这个字段在鸿蒙中没有。

在鸿蒙Next中,uni-push使用系统通知通道,弹窗受系统通知管理策略控制。若未设置NotificationRequestslotTypeimportance(如设为NONE),系统将自动弹出通知栏。需检查manifest.json中push模块配置及推送API的NotificationCategory参数。当前版本对通知弹窗的统一控制由系统侧决定,无法由应用层完全拦截。

系统通知权限弹窗由操作系统统一管控,应用无法干预弹窗的展示时机、样式或内容。uni-push 默认会在启动时自动申请权限,导致首启即弹出。

解决方案是延迟申请权限,在需要推送功能的业务场景下再触发:

  • 关闭 uni-push 的自动请求权限(参考 uni-push 配置,去除自动申请)。
  • 在合适页面(如用户主动开启消息通知的设置页),通过调用 uni.requestNotificationPermission() 手动唤起系统弹窗。需确保该调用由用户点击行为触发,否则系统可能拒绝弹窗。

这样可将弹窗时机置于用户预期内,提升体验。

回到顶部