后台代理提醒

2024-01-23 15:53 更新

本模块提供后台代理提醒的能力。

开发应用时,开发者可以调用后台提醒发布的接口创建定时提醒,包括倒计时、日历、闹钟三种提醒类型。使用后台代理提醒能力后,应用可以被冻结或退出,计时和弹出提醒的功能将被后台系统服务代理。

说明

本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

导入模块

  1. import reminderAgentManager from'@ohos.reminderAgentManager';

reminderAgentManager.publishReminder

publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback<number>): void

发布一个后台代理提醒,使用callback方式实现异步调用,该方法需要申请通知弹窗Notification.requestEnableNotification后才能调用。

需要权限: ohos.permission.PUBLISH_AGENT_REMINDER

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

reminderReq

ReminderRequest

需要发布的提醒实例。

callback

AsyncCallback<number>

异步回调,返回当前发布的提醒的reminderId。

错误码:

以下错误码的详细介绍请参见@ohos.reminderAgentManager(后台代理提醒)错误码。

错误码ID

错误信息

1700001

Notification is not enabled.

1700002

The number of reminders exceeds the limit.

示例

  1. let timer = {
  2. reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_TIMER,
  3. triggerTimeInSeconds: 10
  4. }
  5. try {
  6. reminderAgentManager.publishReminder(timer, (err, reminderId) => {
  7. if (err) {
  8. console.log("callback err code:" + err.code + " message:" + err.message);
  9. } else {
  10. console.log("callback, reminderId = " + reminderId);
  11. }
  12. });
  13. } catch (error) {
  14. console.log("publishReminder code:" + error.code + " message:" + error.message);
  15. };

reminderAgentManager.publishReminder

publishReminder(reminderReq: ReminderRequest): Promise<number>

发布一个后台代理提醒,使用Promise方式实现异步调用,该方法需要申请通知弹窗Notification.requestEnableNotification后才能调用。

需要权限: ohos.permission.PUBLISH_AGENT_REMINDER

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

reminderReq

ReminderRequest

需要发布的提醒实例。

返回值

类型

说明

Promise<number>

返回提醒的reminderId。

错误码:

以下错误码的详细介绍请参见@ohos.reminderAgentManager(后台代理提醒)错误码。

错误码ID

错误信息

1700001

Notification is not enabled.

1700002

The number of reminders exceeds the limit.

示例

  1. let timer = {
  2. reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_TIMER,
  3. triggerTimeInSeconds: 10
  4. }
  5. try {
  6. reminderAgentManager.publishReminder(timer).then((reminderId) => {
  7. console.log("promise, reminderId = " + reminderId);
  8. }).catch(err => {
  9. console.log("promise err code:" + err.code + " message:" + err.message);
  10. });
  11. } catch (error) {
  12. console.log("publishReminder code:" + error.code + " message:" + error.message);
  13. };

reminderAgentManager.cancelReminder

cancelReminder(reminderId: number, callback: AsyncCallback<void>): void

取消指定id的提醒,使用callback方式实现异步调用。

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

reminderId

number

目标reminder的id号。

callback

AsyncCallback<void>

异步回调。

错误码:

以下错误码的详细介绍请参见@ohos.reminderAgentManager(后台代理提醒)错误码。

错误码ID

错误信息

1700003

The reminder does not exist.

1700004

The bundle name does not exist.

示例

  1. try {
  2. reminderAgentManager.cancelReminder(1, (err, data) => {
  3. if (err) {
  4. console.log("callback err code:" + err.code + " message:" + err.message);
  5. } else {
  6. console.log("cancelReminder callback");
  7. }
  8. });
  9. } catch (error) {
  10. console.log("cancelReminder code:" + error.code + " message:" + error.message);
  11. };

reminderAgentManager.cancelReminder

cancelReminder(reminderId: number): Promise<void>

取消指定id的提醒,使用Promise方式实现异步调用。

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

reminderId

number

目标reminder的id号。

返回值

类型

说明

Promise<void>

Promise类型异步回调。

错误码:

以下错误码的详细介绍请参见@ohos.reminderAgentManager(后台代理提醒)错误码。

错误码ID

错误信息

1700003

The reminder does not exist.

1700004

The bundle name does not exist.

示例

  1. try {
  2. reminderAgentManager.cancelReminder(1).then(() => {
  3. console.log("cancelReminder promise");
  4. }).catch(err => {
  5. console.log("promise err code:" + err.code + " message:" + err.message);
  6. });
  7. } catch (error) {
  8. console.log("cancelReminder code:" + error.code + " message:" + error.message);
  9. };

reminderAgentManager.getValidReminders

getValidReminders(callback: AsyncCallback<Array<ReminderRequest>>): void

获取当前应用已设置的所有有效(未过期)的提醒,使用callback方式实现异步调用。

说明

当到达设置的提醒时间点时,通知中心会弹出相应提醒的通知卡片(通知栏消息)。若未点击通知卡片上的关闭/CLOSE按钮,则代理提醒是有效/未过期的;若点击了关闭/CLOSE按钮,则代理提醒过期。

当代理提醒类型是闹钟时,若设置每天提醒,无论是否点击关闭/CLOSE按钮,代理提醒都是有效的。

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

callback

AsyncCallback<Array<ReminderRequest>>

异步回调,返回当前应用已设置的所有有效(未过期)的提醒。

错误码:

以下错误码的详细介绍请参见@ohos.reminderAgentManager(后台代理提醒)错误码。

错误码ID

错误信息

1700004

The bundle name does not exist.

示例

  1. try {
  2. reminderAgentManager.getValidReminders((err, reminders) => {
  3. if (err) {
  4. console.log("callback err code:" + err.code + " message:" + err.message);
  5. } else {
  6. console.log("callback, getValidReminders length = " + reminders.length);
  7. for (let i = 0; i < reminders.length; i++) {
  8. console.log("getValidReminders = " + reminders[i]);
  9. console.log("getValidReminders, reminderType = " + reminders[i].reminderType);
  10. for (let j = 0; j < reminders[i].actionButton.length; j++) {
  11. console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title);
  12. console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type);
  13. }
  14. console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName);
  15. console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName);
  16. console.log("getValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].maxScreenWantAgent.pkgName);
  17. console.log("getValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].maxScreenWantAgent.abilityName);
  18. console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration);
  19. console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes);
  20. console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval);
  21. console.log("getValidReminders, title = " + reminders[i].title);
  22. console.log("getValidReminders, content = " + reminders[i].content);
  23. console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent);
  24. console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent);
  25. console.log("getValidReminders, notificationId = " + reminders[i].notificationId);
  26. console.log("getValidReminders, slotType = " + reminders[i].slotType);
  27. }
  28. }
  29. })
  30. } catch (error) {
  31. console.log("getValidReminders code:" + error.code + " message:" + error.message);
  32. };

reminderAgentManager.getValidReminders

getValidReminders(): Promise<Array<ReminderRequest>>

获取当前应用已设置的所有有效(未过期)的提醒,使用Promise方式实现异步调用。

说明

当到达设置的提醒时间点时,通知中心会弹出相应提醒的通知卡片(通知栏消息)。若未点击通知卡片上的关闭/CLOSE按钮,则代理提醒是有效/未过期的;若点击了关闭/CLOSE按钮,则代理提醒过期。

当代理提醒类型是闹钟时,若设置每天提醒,无论是否点击关闭/CLOSE按钮,代理提醒都是有效的。

系统能力: SystemCapability.Notification.ReminderAgent

返回值

类型

说明

Promise<Array<ReminderRequest>>

返回当前应用已设置的所有有效(未过期)的提醒。

错误码:

以下错误码的详细介绍请参见@ohos.reminderAgentManager(后台代理提醒)错误码。

错误码ID

错误信息

1700004

The bundle name does not exist.

示例

  1. try {
  2. reminderAgentManager.getValidReminders().then((reminders) => {
  3. console.log("promise, getValidReminders length = " + reminders.length);
  4. for (let i = 0; i < reminders.length; i++) {
  5. console.log("getValidReminders = " + reminders[i]);
  6. console.log("getValidReminders, reminderType = " + reminders[i].reminderType);
  7. for (let j = 0; j < reminders[i].actionButton.length; j++) {
  8. console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title);
  9. console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type);
  10. }
  11. console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName);
  12. console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName);
  13. console.log("getValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].maxScreenWantAgent.pkgName);
  14. console.log("getValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].maxScreenWantAgent.abilityName);
  15. console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration);
  16. console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes);
  17. console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval);
  18. console.log("getValidReminders, title = " + reminders[i].title);
  19. console.log("getValidReminders, content = " + reminders[i].content);
  20. console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent);
  21. console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent);
  22. console.log("getValidReminders, notificationId = " + reminders[i].notificationId);
  23. console.log("getValidReminders, slotType = " + reminders[i].slotType);
  24. }
  25. }).catch(err => {
  26. console.log("promise err code:" + err.code + " message:" + err.message);
  27. });
  28. } catch (error) {
  29. console.log("getValidReminders code:" + error.code + " message:" + error.message);
  30. };

reminderAgentManager.cancelAllReminders

cancelAllReminders(callback: AsyncCallback<void>): void

取消当前应用所有的提醒,使用callback方式实现异步调用。

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

callback

AsyncCallback<void>

异步回调。

错误码:

以下错误码的详细介绍请参见@ohos.reminderAgentManager(后台代理提醒)错误码。

错误码ID

错误信息

1700004

The bundle name does not exist.

示例

  1. try {
  2. reminderAgentManager.cancelAllReminders((err, data) =>{
  3. if (err) {
  4. console.log("callback err code:" + err.code + " message:" + err.message);
  5. } else {
  6. console.log("cancelAllReminders callback")
  7. }
  8. })
  9. } catch (error) {
  10. console.log("cancelAllReminders code:" + error.code + " message:" + error.message);
  11. };

reminderAgentManager.cancelAllReminders

cancelAllReminders(): Promise<void>

取消当前应用所有的提醒,使用Promise方式实现异步调用。

系统能力: SystemCapability.Notification.ReminderAgent

返回值

类型

说明

Promise<void>

Promise类型异步回调。

错误码:

以下错误码的详细介绍请参见@ohos.reminderAgentManager(后台代理提醒)错误码。

错误码ID

错误信息

1700004

The bundle name does not exist.

示例

  1. try {
  2. reminderAgentManager.cancelAllReminders().then(() => {
  3. console.log("cancelAllReminders promise")
  4. }).catch(err => {
  5. console.log("promise err code:" + err.code + " message:" + err.message);
  6. });
  7. } catch (error) {
  8. console.log("cancelAllReminders code:" + error.code + " message:" + error.message);
  9. };

reminderAgentManager.addNotificationSlot

addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback<void>): void

添加一个NotificationSlot,使用callback方式实现异步调用。

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

slot

NotificationSlot

notification slot实例,仅支持设置其type属性。

callback

AsyncCallback<void>

异步回调。

示例

  1. import notification from '@ohos.notification'
  2. let mySlot = {
  3. type: notification.SlotType.SOCIAL_COMMUNICATION
  4. }
  5. try {
  6. reminderAgentManager.addNotificationSlot(mySlot, (err, data) => {
  7. if (err) {
  8. console.log("callback err code:" + err.code + " message:" + err.message);
  9. } else {
  10. console.log("addNotificationSlot callback");
  11. }
  12. });
  13. } catch (error) {
  14. console.log("addNotificationSlot code:" + error.code + " message:" + error.message);
  15. };

reminderAgentManager.addNotificationSlot

addNotificationSlot(slot: NotificationSlot): Promise<void>

添加一个NotificationSlot,使用Promise方式实现异步调用。

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

slot

NotificationSlot

notification slot实例,仅支持设置其type属性。

返回值

类型

说明

Promise<void>

Promise类型异步回调。

示例

  1. import notification from '@ohos.notification'
  2. let mySlot = {
  3. type: notification.SlotType.SOCIAL_COMMUNICATION
  4. }
  5. try {
  6. reminderAgentManager.addNotificationSlot(mySlot).then(() => {
  7. console.log("addNotificationSlot promise");
  8. }).catch(err => {
  9. console.log("promise err code:" + err.code + " message:" + err.message);
  10. });
  11. } catch (error) {
  12. console.log("addNotificationSlot code:" + error.code + " message:" + error.message);
  13. };

reminderAgentManager.removeNotificationSlot

removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback<void>): void

删除目标NotificationSlot,使用callback方式实现异步调用。

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

slotType

notification.SlotType

目标notification slot的类型。

callback

AsyncCallback<void>

异步回调。

示例

  1. import notification from '@ohos.notification'
  2. try {
  3. reminderAgentManager.removeNotificationSlot(notification.SlotType.CONTENT_INFORMATION, (err, data) => {
  4. if (err) {
  5. console.log("callback err code:" + err.code + " message:" + err.message);
  6. } else {
  7. console.log("removeNotificationSlot callback");
  8. }
  9. });
  10. } catch (error) {
  11. console.log("removeNotificationSlot code:" + error.code + " message:" + error.message);
  12. };

reminderAgentManager.removeNotificationSlot

removeNotificationSlot(slotType: notification.SlotType): Promise<void>

删除目标NotificationSlot,使用Promise方式实现异步调用。

系统能力: SystemCapability.Notification.ReminderAgent

参数

参数名

类型

必填

说明

slotType

notification.SlotType

目标notification slot的类型。

返回值

类型

说明

Promise<void>

Promise类型异步回调。

示例

  1. import notification from '@ohos.notification'
  2. try {
  3. reminderAgentManager.removeNotificationSlot(notification.SlotType.CONTENT_INFORMATION).then(() => {
  4. console.log("removeNotificationSlot promise");
  5. }).catch(err => {
  6. console.log("promise err code:" + err.code + " message:" + err.message);
  7. });
  8. } catch (error) {
  9. console.log("removeNotificationSlot code:" + error.code + " message:" + error.message);
  10. };

ActionButtonType

按钮的类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

说明

ACTION_BUTTON_TYPE_CLOSE

0

表示关闭提醒的按钮。

ACTION_BUTTON_TYPE_SNOOZE

1

表示延迟提醒的按钮。

ReminderType

提醒的类型。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

说明

REMINDER_TYPE_TIMER

0

表示提醒类型:倒计时。

REMINDER_TYPE_CALENDAR

1

表示提醒类型:日历。

REMINDER_TYPE_ALARM

2

表示提醒类型:闹钟。

ActionButton

用于设置弹出的提醒通知信息上显示的按钮类型和标题。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

类型

必填

说明

title

string

按钮显示的标题。

type

ActionButtonType

按钮的类型。

WantAgent

点击提醒通知后跳转的目标ability信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

类型

必填

说明

pkgName

string

指明点击提醒通知栏后跳转的目标hap包名。

abilityName

string

指明点击提醒通知栏后跳转的目标ability名称。

MaxScreenWantAgent

全屏显示提醒到达时自动拉起的目标ability信息,该接口预留。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

类型

必填

说明

pkgName

string

指明提醒到达时自动拉起的目标hap包名(如果设备在使用中,则只弹出通知横幅框)。

abilityName

string

指明提醒到达时自动拉起的目标ability名(如果设备在使用中,则只弹出通知横幅框)。

ReminderRequest

提醒实例对象,用于设置提醒类型、响铃时长等具体信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

类型

必填

说明

reminderType

ReminderType

指明提醒类型。

actionButton

ActionButton

弹出的提醒通知栏中显示的按钮(参数可选,支持0/1/2个按钮)。

wantAgent

WantAgent

点击通知后需要跳转的目标ability信息。

maxScreenWantAgent

MaxScreenWantAgent

提醒到达时跳转的目标包。如果设备正在使用中,则弹出一个通知框。

ringDuration

number

指明响铃时长(单位:秒),默认1秒。

snoozeTimes

number

指明延迟提醒次数,默认0次(不适用于倒计时提醒类型)。

timeInterval

number

执行延迟提醒间隔(单位:秒),默认0秒(不适用于倒计时提醒类型)。

title

string

指明提醒标题。

content

string

指明提醒内容。

expiredContent

string

指明提醒过期后需要显示的内容。

snoozeContent

string

指明延迟提醒时需要显示的内容。

notificationId

number

指明提醒使用的通知的id号,相同id号的提醒会覆盖。

slotType

notification.SlotType

指明提醒的slot类型。

ReminderRequestCalendar

ReminderRequestCalendar extends ReminderRequest

日历实例对象,用于设置提醒的时间。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

类型

必填

说明

dateTime

LocalDateTime

指明提醒的目标时间。

repeatMonths

Array<number>

指明重复提醒的月份。

repeatDays

Array<number>

指明重复提醒的日期。

ReminderRequestAlarm

ReminderRequestAlarm extends ReminderRequest

闹钟实例对象,用于设置提醒的时间。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

类型

必填

说明

hour

number

指明提醒的目标时刻。

minute

number

指明提醒的目标分钟。

daysOfWeek

Array<number>

指明每周哪几天需要重复提醒。范围为周一到周末,对应数字为1到7。

ReminderRequestTimer

ReminderRequestTimer extends ReminderRequest

倒计时实例对象,用于设置提醒的时间。

系统能力:SystemCapability.Notification.ReminderAgent

名称

类型

必填

说明

triggerTimeInSeconds

number

指明倒计时的秒数。

LocalDateTime

用于日历类提醒设置时指定时间信息。

系统能力:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent

名称

类型

必填

说明

year

number

month

number

月,取值范围是[1, 12]。

day

number

日,取值范围是[1, 31]。

hour

number

时,取值范围是[0, 23]。

minute

number

分,取值范围是[0, 59]。

second

number

秒,取值范围是[0, 59]。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号