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

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

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

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

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

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

如果应用期望实现用户点击取消后,再次调用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
相关问题
取消Account Kit 获取用户头像昵称授权
576浏览 • 1回复 待解决
如何向用户请求授权广告跟踪权限
383浏览 • 1回复 待解决
定位授权 直接提示用户拒绝授权
364浏览 • 1回复 待解决
HarmonyOS 通知列表刷新事件
38浏览 • 1回复 待解决
如何控制通知是否有铃声?
1792浏览 • 1回复 待解决
HarmonyOS系统如何实现推送通知
152浏览 • 0回复 待解决
HarmonyOS 推送通知
39浏览 • 1回复 待解决
如何设置一个通知按钮
390浏览 • 1回复 待解决
鸿蒙手机如何给手表发通知
11526浏览 • 3回复 待解决
通知栏点击事件监听的方法
437浏览 • 1回复 待解决
鸿蒙应用如何实现本地通知?
157浏览 • 0回复 待解决