文档开发者中心
我的
|

HarmonyOS 6

HarmonyOS 5

获取通知权限失败

  1. 请求通知权限报错,返回错误码1600013。
  2. 在Page上通过下述方式唤起权限弹窗,然后通过router打开一个新Page,权限弹窗就会消失,问题代码如下所示:
收起
自动换行
深色代码主题
复制
// 校验是否有通知权限,若无则唤起权限弹窗
notificationManager.isNotificationEnabled().then((data: boolean) => {
  console.info(`isNotificationEnabled success, data: ${JSON.stringify(data)}`);
  if (!data) {
    let context = this.getUIContext().getHostContext() as common.UIAbilityContext;
    notificationManager.requestEnableNotification(context).then(() => {
      console.info(`[ANS] requestEnableNotification success`);
    }).catch((err: BusinessError) => {
      if (1600004 == err.code) {
        console.info(`[ANS] requestEnableNotification refused`);
      } else {
        console.error(`[ANS] requestEnableNotification failed, code is ${err.code}, message is   ${err.message}`);
      }
    });
    }
  }).catch((err: BusinessError) => {
    console.error(`isNotificationEnabled fail: ${JSON.stringify(err)}`);
});

// router打开新页面
router.pushUrl({ url: 'pages/test'});
点赞
收藏
回复
1
分享
举报
浏览252 发布于2025-12-12 06:05未知归属地
全部评论
最多点赞
最新发布
最早发布

【背景知识】 应用需要获取用户授权才能发送通知。在通知发布前调用requestEnableNotification()方法,弹窗让用户选择是否允许发送通知,后续再次调用requestEnableNotification()方法时,则不再弹窗。可参考文档请求通知权限。 拒绝requestEnableNotification申请弹窗权限后,开发者可以调用openNotificationSettings二次申请授权,拉起通知管理弹窗。可参考文档拉起应用的通知设置界面,该接口在API13以上可用。

【问题定位】

  1. 权限请求时机问题,需要在ui加载后再申请。
  2. 是否绑定UiAbilityContext,context是否正常初始化。
  3. 以前有异常弹出的场景,产生了脏数据。
  4. 检查相关参数HashMap使用是否正确。

【分析结论】

  1. 1600013,若窗口未加载完成就请求了通知,导致渲染异常,再次请求就会报这个错,尽量在窗口创建并渲染后再调用。
  2. 建议在entryAbility中调用,或是在对应的页面中调用,不建议在授权时切换页面。

【修改建议】

  • 针对报错code:1600013,可以采用以下两种方案:
  1. 执行重启手机、删除应用的操作,清理脏数据后再次安装应用尝试。仅当应用界面加载完成后(即调用loadContent成功),方可使用该接口。
  2. 在使用该接口拉起通知授权弹窗后,如果用户拒绝授权,将无法使用该接口再次拉起弹窗。开发者可以调用openNotificationSettings二次申请授权,拉起通知管理弹窗。
  • 不在授权时切换页面,建议在window.loadContent回调中请求权限。
1楼回复于2025-12-12 06:05 未知归属地
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要提问题

了解社区公约,与您携手共创和谐专业的开发者社区。