# Reminder Agent > ![icon-note.gif](public_sys-resources/icon-note.gif) **NOTE** > The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version. ## Modules to Import ``` import reminderAgent from'@ohos.reminderAgent'; ``` ## reminderAgent.publishReminder publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback<number>): void Publishes an agent-powered reminder. This API uses an asynchronous callback to return the result. **Required permissions**: ohos.permission.PUBLISH_AGENT_REMINDER **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | reminderReq | [ReminderRequest](#reminderrequest) | Yes| Reminder to be published.| | callback | AsyncCallback<number> | Yes| Asynchronous callback used to return the published reminder's ID.| **Example** ``` let timer : reminderAgent.ReminderRequestTimer = { reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, triggerTimeInSeconds: 10 } reminderAgent.publishReminder(timer, (err, reminderId) => { console.log("reminderId = " + reminderId); }); ``` ## reminderAgent.publishReminder publishReminder(reminderReq: ReminderRequest): Promise<number> Publishes an agent-powered reminder. This API uses a promise callback to return the result. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | reminderReq | [ReminderRequest](#reminderrequest) | Yes| Reminder to be published.| **Return value** | Type| Description| | -------- | -------- | | Promise<number> | Promise used to return the published reminder's ID.| **Example** ``` let timer : reminderAgent.ReminderRequestTimer = { reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, triggerTimeInSeconds: 10 } reminderAgent.publishReminder(timer).then((reminderId) => { console.log("reminderId = " + reminderId); }); ``` ## reminderAgent.cancelReminder cancelReminder(reminderId: number, callback: AsyncCallback<void>): void Cancels the reminder with the specified ID. This API uses an asynchronous callback to return the cancellation result. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | reminderId | number | Yes| ID of the reminder to cancel.| | callback | AsyncCallback<void> | Yes| Asynchronous callback used to return the result.| **Example** ``` reminderAgent.cancelReminder(1, (err, data) => { console.log("cancelReminder callback"); }); ``` ## reminderAgent.cancelReminder cancelReminder(reminderId: number): Promise<void> Cancels the reminder with the specified ID. This API uses a promise to return the cancellation result. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | reminderId | number | Yes| ID of the reminder to cancel.| **Return value** | Type| Description| | -------- | -------- | | Promise<void> | Promise used to return the result.| **Example** ``` reminderAgent.cancelReminder(1).then(() => { console.log("cancelReminder promise"); }); ``` ## reminderAgent.getValidReminders getValidReminders(callback: AsyncCallback<Array<ReminderRequest>>): void Obtains all valid (not yet expired) reminders set by the current application. This API uses an asynchronous callback to return the reminders. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | callback | AsyncCallback<Array<[ReminderRequest](#reminderrequest)>> | Yes| Asynchronous callback used to return an array of all valid reminders set by the current application.| **Example** ``` reminderAgent.getValidReminders((err, reminders) => { console.log("getValidReminders length = " + reminders.length); for (let i = 0; i < reminders.length; i++) { console.log("getValidReminders = " + reminders[i]); console.log("getValidReminders, reminderType = " + reminders[i].reminderType); for (let j = 0; j < reminders[i].actionButton.length; j++) { console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title); console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type); } console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName); console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName); console.log("getValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].maxScreenWantAgent.pkgName); console.log("getValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].maxScreenWantAgent.abilityName); console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration); console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes); console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval); console.log("getValidReminders, title = " + reminders[i].title); console.log("getValidReminders, content = " + reminders[i].content); console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent); console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent); console.log("getValidReminders, notificationId = " + reminders[i].notificationId); console.log("getValidReminders, slotType = " + reminders[i].slotType); } }) ``` ## reminderAgent.getValidReminders getValidReminders(): Promise<Array<ReminderRequest>> Obtains all valid (not yet expired) reminders set by the current application. This API uses a promise to return the reminders. **System capability**: SystemCapability.Notification.ReminderAgent **Return value** | Type| Description| | -------- | -------- | | Promise<Array<[ReminderRequest](#reminderrequest)>> | Promise used to return an array of all valid reminders set by the current application.| **Example** ``` reminderAgent.getValidReminders().then((reminders) => { console.log("getValidReminders length = " + reminders.length); for (let i = 0; i < reminders.length; i++) { console.log("getValidReminders = " + reminders[i]); console.log("getValidReminders, reminderType = " + reminders[i].reminderType); for (let j = 0; j < reminders[i].actionButton.length; j++) { console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title); console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type); } console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName); console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName); console.log("getValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].maxScreenWantAgent.pkgName); console.log("getValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].maxScreenWantAgent.abilityName); console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration); console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes); console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval); console.log("getValidReminders, title = " + reminders[i].title); console.log("getValidReminders, content = " + reminders[i].content); console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent); console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent); console.log("getValidReminders, notificationId = " + reminders[i].notificationId); console.log("getValidReminders, slotType = " + reminders[i].slotType); } }) ``` ## reminderAgent.cancelAllReminders cancelAllReminders(callback: AsyncCallback<void>): void Cancels all reminders set by the current application. This API uses an asynchronous callback to return the cancellation result. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | callback | AsyncCallback<void> | Yes| Asynchronous callback used to return the result.| **Example** ``` reminderAgent.cancelAllReminders((err, data) =>{ console.log("cancelAllReminders callback") }) ``` ## reminderAgent.cancelAllReminders cancelAllReminders(): Promise<void> Cancels all reminders set by the current application. This API uses a promise to return the cancellation result. **System capability**: SystemCapability.Notification.ReminderAgent **Return value** | Type| Description| | -------- | -------- | | Promise<void> | Promise used to return the result.| **Example** ``` reminderAgent.cancelAllReminders().then(() => { console.log("cancelAllReminders promise") }) ``` ## reminderAgent.addNotificationSlot addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback<void>): void Adds a reminder notification slot. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | slot | [NotificationSlot](js-apis-notification.md#notificationslot) | Yes| Reminder notification slot to add.| | callback | AsyncCallback<void> | Yes| Asynchronous callback used to return the result.| **Example** ``` mySlot: { type: 3, sound: "/sdcard/music2.mp3" } reminderAgent.addNotificationSlot(mySlot, (err, data) => { console.log("addNotificationSlot callback"); }); ``` ## reminderAgent.addNotificationSlot addNotificationSlot(slot: NotificationSlot): Promise<void> Adds a reminder notification slot. This API uses a promise to return the result. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | slot | [NotificationSlot](js-apis-notification.md#notificationslot) | Yes| Reminder notification slot to add.| **Return value** | Type| Description| | -------- | -------- | | Promise<void> | Promise used to return the result.| **Example** ``` export default { data: { mySlot: { type: 3, sound: "/sdcard/music2.mp3" } }, addSlot() { reminderAgent.addNotificationSlot(mySlot).then(() => { console.log("do next"); }); } } ``` ## reminderAgent.removeNotificationSlot removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback<void>): void Removes a notification slot of a specified type. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | slotType | [notification.SlotType](js-apis-notification.md#slottype) | Yes| Type of the reminder notification slot to remove.| | callback | AsyncCallback<void> | Yes| Asynchronous callback used to return the result.| **Example** ``` reminderAgent.removeNotificationSlot(notification.SlotType.CONTENT_INFORMATION, (err, data) => { console.log("removeNotificationSlot callback"); }); ``` ## reminderAgent.removeNotificationSlot removeNotificationSlot(slotType: notification.SlotType): Promise<void> Removes a notification slot of a specified type. This API uses a promise to return the result. **System capability**: SystemCapability.Notification.ReminderAgent **Parameters** | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | slotType | [notification.SlotType](js-apis-notification.md#slottype) | Yes| Type of the reminder notification slot to remove.| **Return value** | Type| Description| | -------- | -------- | | Promise<void> | Promise used to return the result.| **Example** ``` reminderAgent.removeNotificationSlot(notification.SlotType.CONTENT_INFORMATION).then(() => { console.log("removeNotificationSlot promise"); }); ``` ## ActionButtonType Enumerates button types. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Default Value| Description| | -------- | -------- | -------- | | ACTION_BUTTON_TYPE_CLOSE | 0 | Button for closing the reminder.| | ACTION_BUTTON_TYPE_SNOOZE | 1 | Button for snoozing the reminder.| ## ReminderType Enumerates reminder types. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Default Value| Description| | -------- | -------- | -------- | | REMINDER_TYPE_TIMER | 0 | Countdown reminder.| | REMINDER_TYPE_CALENDAR | 1 | Calendar reminder.| | REMINDER_TYPE_ALARM | 2 | Alarm reminder.| ## ActionButton Defines a button displayed in the reminder notification. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | title | string | Yes| Text on the button.| | type | [ActionButtonType](#actionbuttontype) | Yes| Button type.| ## WantAgent Sets the package and ability that are redirected to when the reminder notification is clicked. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | pkgName | string | Yes| Name of the package that is redirected to when the reminder notification is clicked.| | abilityName | string | Yes| Name of the ability that is redirected to when the reminder notification is clicked.| ## MaxScreenWantAgent Sets the name of the target package and ability to start automatically when the reminder arrives and the device is not in use. If the device is in use, a notification will be displayed. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | pkgName | string | Yes| Name of the package that is automatically started when the reminder arrives and the device is not in use.| | abilityName | string | Yes| Name of the ability that is automatically started when the reminder arrives and the device is not in use.| ## ReminderRequest Defines the reminder to publish. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | reminderType | ReminderType | Yes| Type of the reminder.| | actionButton | [ActionButton?, ActionButton?] | No| Action button displayed in the reminder notification. (The parameter is optional. Up to two buttons are supported.)| | wantAgent | WantAgent | No| Information about the ability that is redirected to when the notification is clicked.| | maxScreenWantAgent | MaxScreenWantAgent | No| Information about the ability that is automatically started when the reminder arrives. If the device is in use, a notification will be displayed.| | ringDuration | number | No| Ringing duration.| | snoozeTimes | number | No| Number of reminder snooze times.| | timeInterval | number | No| Reminder snooze interval.| | title | string | No| Reminder title.| | content | string | No| Reminder content.| | expiredContent | string | No| Content to be displayed after the reminder expires.| | snoozeContent | string | No| Content to be displayed when the reminder is snoozing.| | notificationId | number | No| Notification ID used by the reminder. If there are reminders with the same notification ID, the later one will overwrite the earlier one.| | slotType | [notification.SlotType](js-apis-notification.md#slottype) | No| Type of the slot used by the reminder.| ## ReminderRequestCalendar ReminderRequestCalendar extends ReminderRequest Defines a reminder for a calendar event. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | dateTime | [LocalDateTime](#localdatetime) | Yes| Reminder time.| | repeatMonths | Array<number> | No| Month in which the reminder repeats.| | repeatDays | Array<number> | No| Date on which the reminder repeats.| ## ReminderRequestAlarm ReminderRequestAlarm extends ReminderRequest Defines a reminder for an alarm. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | hour | number | Yes| Hour portion of the reminder time.| | minute | number | Yes| Minute portion of the reminder time.| | daysOfWeek | Array<number> | No| Days of a week when the reminder repeats.| ## ReminderRequestTimer ReminderRequestTimer extends ReminderRequest Defines a reminder for a scheduled timer. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | triggerTimeInSeconds | number | Yes| Number of seconds in the countdown timer.| ## LocalDateTime Sets the time information for a calendar reminder. **System capability**: SystemCapability.Notification.ReminderAgent | Name| Type| Mandatory| Description| | -------- | -------- | -------- | -------- | | year | number | Yes| Year.| | month | number | Yes| Month.| | day | number | Yes| Date.| | hour | number | Yes| Hour.| | minute | number | Yes| Minute.| | second | number | No| Second.|