1.问题描述:
获取应用是否开启了允许通知权限后,如何引导跳转开启权限通知的设置页面?
解决方案:
2.若申请通知权限被拒绝后,后续调用requestEnableNotification()方法不再弹窗,同时会返回错误,错误码是1600004。具体参考请求通知授权。
3.如果想二次授权,可以调用openNotificationSettings申请授权,拉起通知管理弹窗或者引导用户跳转应用设置页面开启权限。
完整代码示例如下:
2.问题描述:
使用notificationManager.openNotificationSettings接口打开的弹窗,如何监听弹窗关闭事件?
解决方案:
在页面打开应用通知设置页。
openNotificationSettings接口拉起的设置页面,页面关闭的时候没有回调方法可以直接使用,但是该接口拉起的页面关闭的时候,会触发其他页面聚焦的回调,在这个页面的根组件上注册的
onfocus事件,在该回调内自定义一些操作,比如调用isNotificationEnabledSync()来查询应用通知的开启状态。具体实现代码如下:
3.问题描述:
notificationManager.openNotificationSettings唤起半模态框,如何监听消失并读取最新通知开启状态?
解决方案:
封装通知管理工具类,全局使用。
4.问题描述:
如何直接以弹窗方式打开通知管理页面?
解决方案:
通过isNotificationEnabled方法查询通知是否授权,参考 isNotificationEnabled用法。
若申请通知权限被拒绝后,后续调用requestEnableNotification()方法不再弹窗,同时会返回错误,错误码是1600004。具体参考 请求通知授权。
如果想二次授权,可以调用 openNotificationSettings申请授权,拉起通知管理弹窗。或者引导用户跳转应用设置页面开启权限,跳转设置页面方法如下:
5.问题描述:
notificationManager.requestEnableNotification err.code:1600013,原因是什么?
解决方案:
【背景知识】
应用需要获取用户授权才能发送通知。在通知发布前调用requestEnableNotification()方法,弹窗让用户选择是否允许发送通知,后续再次调用requestEnableNotification()方法时,则不再弹窗。可参考文档 请求通知权限。
【问题定位】
权限请求时机问题,需要在UI加载后再申请。
是否绑定UiAbilityContext,context是否正常初始化。
以前有异常弹出的场景,产生了脏数据。
检查相关参数HashMap使用是否正确。
【分析结论】
1600013,若窗口未加载完成就请求了通知,导致渲染异常,再次请求就会报这个错,尽量在窗口创建并渲染后再调用。
建议在entryAbility中调用,或是在对应的页面中调用,不建议在授权时切换页面。
【修改建议】
针对报错code:1600013,可以采用以下两种方案:
</boolean></boolean></boolean></boolean></boolean></boolean>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70003787/viewspace-3102188/ ,如需转载,请注明出处,否则将追究法律责任。