HarmonyOS 鸿蒙Next 创建闹钟、日历等需要开通代理提醒的相关问题解决方案

发布于 1周前 作者 bupafengyu 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 创建闹钟、日历等需要开通代理提醒的相关问题解决方案

创建华为闹钟后,模拟器可以正常定时-响铃,真机无法跑通的原因及解决方案:

1,真机无法跑通的原因-由于应用存在滥用后台代理提醒能力,利用该能力发送广告、营销类延时提醒,影响用户体验;因此针对此问题,后台代理提醒增加管控机制,未通过管控的应用无法使用后台代理提醒能力。

2解决方案:

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

  • 倒计时类:基于倒计时的提醒功能。

  • 日历类:基于日历的提醒功能。

  • 闹钟类:基于时钟的提醒功能。

    需要注意的是:

  • 个数限制:一个三方应用支持最多30个有效提醒(有效即发布成功),一个系统应用支持最多10000个有效提醒,整个系统最多支持12000个有效提醒。

  • 跳转限制:点击提醒通知后跳转的应用必须是申请代理提醒的本应用。

  • 管控限制:管控后可通过日历Calendar Kit 替代代理提醒,实现相应的提醒功能。具体可参考开发指南

    方式一:向华为侧申请代理提醒权限,当前仅对纯工具类应用开放申请。格式如下

    邮件格式:

    通过hwpush@huawei.com邮箱向华为侧申请,申请审批后即能正常调用代理提醒接口。

    邮件主题:【代理提醒权限申请】

    邮件正文:

    申请权限名称:代理提醒

    企业名称:

    应用名称:***

    应用包名:com..

    使用场景:提供申请理由/用途/尽可能附上图片,及使用代理提醒发通知/提醒的必要性。

    通知标题:***

    通知文本:***

    通知场景:***

    通知频率:**

    方式二:

    1、申请ohos.permission.PUBLISH_AGENT_REMINDER权限,配置方式请参阅声明权限

    2、请求通知授权。获得用户授权后,才能使用代理提醒功能。

    3、导入模块。

    import { reminderAgentManager } from ‘@kit.BackgroundTasksKit’;
    import { notificationManager } from ‘@kit.NotificationKit’;
    import { BusinessError } from ‘@kit.BasicServicesKit’;

    4、定义闹钟实例

    let targetReminderAgent: reminderAgentManager.ReminderRequestAlarm = {
    reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM, // 提醒类型为闹钟类型
    hour: 23, // 指明提醒的目标时刻
    minute: 9, // 指明提醒的目标分钟
    daysOfWeek: [2], // 指明每周哪几天需要重复提醒
    actionButton: [ // 设置弹出的提醒通知信息上显示的按钮类型和标题
    {
    title: ‘close’,
    type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
    },
    {
    title: ‘snooze’,
    type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE
    },
    ],
    wantAgent: { // 点击提醒通知后跳转的目标UIAbility信息
    pkgName: ‘com.example.myapplication’,
    abilityName: ‘EntryAbility’
    },
    maxScreenWantAgent: { // 全屏显示提醒到达时自动拉起的目标UIAbility信息
    pkgName: ‘com.example.myapplication’,
    abilityName: ‘EntryAbility’
    },
    ringDuration: 5, // 指明响铃时长(单位:秒)
    snoozeTimes: 2, // 指明延迟提醒次数
    timeInterval: 560, // 执行延迟提醒间隔(单位:秒)
    title: ‘this is title’, // 指明提醒标题
    content: ‘this is content’, // 指明提醒内容
    expiredContent: ‘this reminder has expired’, // 指明提醒过期后需要显示的内容
    snoozeContent: ‘remind later’, // 指明延迟提醒时需要显示的内容
    notificationId: 99, // 指明提醒使用的通知的ID号,相同ID号的提醒会覆盖
    slotType: notificationManager.SlotType.SOCIAL_COMMUNICATION // 指明提醒的Slot类型
    }

    5、发布相应的提醒代理。代理发布后,应用即可使用后台代理提醒功能。

     reminderAgentManager.publishReminder(targetReminderAgent).then((res: number) => {
    console.info('Succeeded in publishing reminder. ');
    let reminderId: number = res; // 发布的提醒ID
    }).catch((err: BusinessError) => {
    console.error(Failed to publish reminder. Code: ${err.code}, message: ${err.message});
    })

    6、根据需要删除提醒任务。

     let reminderId: number = 1;
    // reminderId的值从发布提醒代理成功之后的回调中获得
    reminderAgentManager.cancelReminder(reminderId).then(() => {
    console.log(‘Succeeded in canceling reminder.’);
    }).catch((err: BusinessError) => {
    console.error(Failed to cancel reminder. Code: ${err.code}, message: ${err.message});
    });

1 回复

作为IT专家,针对HarmonyOS鸿蒙Next创建闹钟、日历等需要开通代理提醒的相关问题,以下提供解决方案:

HarmonyOS Next提供了代理提醒(Agent-powered Reminder)功能,允许应用在后台被挂起或进程终止后,由系统代理应用执行提醒任务,如倒计时、日历、闹钟等。以下是具体步骤:

  1. 申请权限:在应用配置文件中添加ohos.permission.PUBLISH_AGENT_REMINDER权限。
  2. 请求通知授权:获得用户授权后才能使用代理提醒功能。
  3. 定义提醒内容:根据需要定义闹钟或日历提醒内容,包括提醒标题、内容、过期内容、通知渠道等。
  4. 发布提醒:调用publishReminder接口发布提醒任务。
  5. 取消提醒:根据需要调用cancelReminder或cancelAllReminders接口取消提醒任务。

注意事项:

  • HarmonyOS Next支持三种类型的代理提醒:倒计时提醒、日历提醒和闹钟提醒,主要通过reminderType来设置。
  • 一个三方应用支持最多30个有效提醒,一个系统应用支持最多10000个有效提醒,整个系统最多支持12000个有效提醒。
  • 点击提醒通知后跳转的应用必须是申请代理提醒的本应用。

如果在实施过程中遇到问题,如配置错误或功能无法实现,请确保所有步骤正确无误,并检查网络连接是否正常。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部