HarmonyOS鸿蒙Next中后台代理提醒权限声明已经加了,代码设置后,反馈错误码{"code":"401"}

HarmonyOS鸿蒙Next中后台代理提醒权限声明已经加了,代码设置后,反馈错误码{“code”:“401”} 【问题描述】:后台代理提醒权限声明已经加了,代码设置后,反馈错误码{“code”:“401”},是什么原因?

【问题现象】:

cke_1373.png

【版本信息】:不涉及

【复现代码】:无

【尝试解决方案】:按照文档流程排查后还是不行,https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/agent-powered-reminder#


更多关于HarmonyOS鸿蒙Next中后台代理提醒权限声明已经加了,代码设置后,反馈错误码{"code":"401"}的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

看下后台代理提醒权限是否申请:

  1. 通过邮箱向华为侧申请,邮件会在10个工作日内回复(含权益开通结果),邮件提示申请通过后1天权益生效,请留意邮箱消息。
  2. 邮件主题:【代理提醒权限申请】。
  3. 邮件正文:包含企业名称、应用名称、应用包名、使用场景、通知标题、通知文本、通知场景、通知频率等信息。

具体可参考代理提醒开发步骤

【背景知识】 应用退到后台或进程终止后,仍然有一些提醒用户的定时类通知,为满足此类功能场景,系统提供了代理提醒(reminderAgentManager)的能力。当应用退至后台或进程终止后,系统会代理应用做相应的提醒。当前支持的提醒类型包括:倒计时、日历和闹钟。为了防止代理提醒被滥用于广告、营销类提醒,影响用户体验,代理提醒增加了管控机制,应用无法直接使用代理提醒,管控后的使用方法请参考管控限制

更多关于HarmonyOS鸿蒙Next中后台代理提醒权限声明已经加了,代码设置后,反馈错误码{"code":"401"}的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


错误码401表示权限未授权。需检查以下配置:

  1. 在module.json5中确认已声明ohos.permission.PUBLISH_AGENT_REMINDER权限
  2. 确保在应用首次启动时调用requestPermissionsFromUser动态申请权限
  3. 权限申请弹窗需用户明确授权,拒绝或未操作都会导致401

权限声明示例:

"requestPermissions": [
  {
    "name": "ohos.permission.PUBLISH_AGENT_REMINDER"
  }
]

错误码401通常表示权限问题。根据你提供的信息,虽然已在配置文件中声明了ohos.permission.PUBLISH_AGENT_REMINDER权限,但该权限属于“system_basic”级别,需要用户手动授权。

请按以下步骤操作:

  1. module.json5文件中正确声明权限

    {
      "module": {
        "requestPermissions": [
          {
            "name": "ohos.permission.PUBLISH_AGENT_REMINDER"
          }
        ]
      }
    }
    
  2. 在代码中动态申请权限:声明后,必须在应用运行时动态向用户请求授权。使用abilityAccessCtrl模块。

    import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
    import common from '@ohos.app.ability.common';
    
    // 获取上下文,例如在UIAbility的onWindowStageCreate中
    let context = getContext(this) as common.UIAbilityContext;
    let atManager = abilityAccessCtrl.createAtManager();
    
    // 定义需要申请的权限列表
    let permissions: Array<string> = ['ohos.permission.PUBLISH_AGENT_REMINDER'];
    
    // 申请权限
    atManager.requestPermissionsFromUser(context, permissions).then((data) => {
      console.info('Permission request result:', data);
      // 根据授权结果(data.authResults)进行后续操作
    }).catch((err) => {
      console.error('Failed to request permissions:', err);
    });
    
  3. 检查权限申请时机:确保在调用设置后台代理提醒(如reminderAgentManager.publishReminder)的代码之前,已经成功获取了用户授权。权限申请是异步的,需要处理好回调。

  4. 检查配置文件:确认module.json5文件中的requestPermissions数组配置正确,没有语法错误。

核心原因是system_basic级别的权限仅靠静态声明是不够的,必须经过用户动态授权。请确保已完成上述动态申请流程。

回到顶部