Notification Kit(用户通知服务)请求通知授权

目前现状在通知发布前调用requestEnableNotification()方法,弹窗让用户选择是否允许发送通知,仅弹窗一次,后续调用该接口不再弹窗,此时如需要须手动获取通知授权。

期望为用户点击取消后,应用后续再次调用requestEnableNotification()方法时能够再次调起弹框进行授权,或者可以跳转到系统设置对应的具体页面

方便用户操作,避免用户不知道如何打开权限

HarmonyOS
2024-05-10 18:27:26
浏览
已于2024-5-10 18:29:12修改
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
wingcky

系统设计上考虑在弹框时用户点击取消代表用户不允许发送通知,后续继续弹窗会打扰用户。

如果应用期望实现用户点击取消后,再次调用requestEnableNotification时可以拉起弹框或者跳转,需应用自行实现,参考代码如下(是否是首次点击可以结合本地存储preferences来判断):

notificationManager.isNotificationEnabled().then((data: boolean) => { 
  console.info("[ANS] isNotificationEnabled success, data: " + JSON.stringify(data)); 
  if(!data){ 
notificationManager.requestEnableNotification().then(() => { 
console.info([ANS] requestEnableNotification success); 
}).catch((err:Base.BusinessError) => { 
console.error([ANS] requestEnableNotification failed, code is ${err.code}, message is ${err.message}); 
// 用户拒绝,可自行弹框后引导跳转到设置页面 
if (1600004 === err.code) { 
const context = getContext(this) as common.UIAbilityContext; 
let want: Want = { 
bundleName: ‘com.huawei.hmos.settings’, 
abilityName: ‘com.huawei.hmos.settings.MainAbility’, 
uri: ‘application_info_entry’, 
parameters: { 
pushParams: ‘’ // 应用包名 
} 
} 
 
context.startAbility(want) 
.then(() => { 
console.log(Success to startAbility); 
}) 
.catch((err: BusinessError) => { 
console.error(Failed to startAbility. Code: ${err.code}, message: ${err.message}); 
}); 
} 
 
}); 
} 
}).catch((err: Base.BusinessError) => { 
console.error(isNotificationEnabled fail: ${JSON.stringify(err)}); 
});
分享
微博
QQ
微信
回复
2024-05-11 10:19:23
相关问题
如何控制通知是否有铃声?
690浏览 • 1回复 待解决
鸿蒙手机如何给手表发通知
10258浏览 • 3回复 待解决
单框架如何获取系统所有通知消息
673浏览 • 1回复 待解决
鸿蒙能给手表发通知吗?
2浏览 • 0回复 待解决
【求助】前台Service无法发布通知
5987浏览 • 1回复 已解决
怎么给通知加单击事件?
3734浏览 • 1回复 待解决
通知的图标支持的格式
852浏览 • 1回复 待解决
来电横幅通知头像无法显示
798浏览 • 1回复 待解决
通知里怎么显示图片有知道的吗?
4249浏览 • 2回复 待解决
华为事件通知接口返回10008错误码
7866浏览 • 2回复 待解决
求大佬告知如何向用户申请授权
94浏览 • 2回复 待解决
如何实现向用户申请授权的功能
796浏览 • 1回复 待解决
我的通知栏里边快捷键重叠了
4028浏览 • 1回复 待解决
如何设置给消息通知设置提醒方式
680浏览 • 1回复 待解决