1# @ohos.reminderAgentManager (后台代理提醒)
2
3本模块提供后台代理提醒的能力,即当应用被冻结或应用退出时,计时和提醒的功能将被系统服务代理。开发者可以调用本模块接口创建定时提醒,提醒类型支持倒计时、日历、闹钟三种。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9
10## 导入模块
11
12```ts
13import { reminderAgentManager } from '@kit.BackgroundTasksKit';
14```
15
16## reminderAgentManager.publishReminder
17
18publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback\<number>): void
19
20发布后台代理提醒。使用callback异步回调。
21
22> **说明:**
23>
24> 该接口需要申请通知弹窗权限[NotificationManager.requestEnableNotification](../apis-notification-kit/js-apis-notificationManager.md#notificationmanagerrequestenablenotification10)后调用。
25>
26> <!--RP1--><!--RP1End-->
27
28**需要权限**: ohos.permission.PUBLISH_AGENT_REMINDER
29
30**系统能力**: SystemCapability.Notification.ReminderAgent
31
32**参数**:
33
34  | 参数名 | 类型 | 必填 | 说明 |
35  | -------- | -------- | -------- | -------- |
36  | reminderReq | [ReminderRequest](#reminderrequest) | 是 | 需要发布的代理提醒实例。 |
37  | callback | AsyncCallback\<number> | 是 | 回调函数,返回当前发布提醒的id。 |
38
39**错误码:**
40
41以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
42
43| 错误码ID   | 错误信息 |
44| --------- | ------- |
45| 401 | If the input parameter is not valid parameter. |
46| 1700001    | Notification is not enabled. |
47| 1700002    | The number of reminders exceeds the limit. |
48
49**示例**:
50```ts
51import { BusinessError } from '@kit.BasicServicesKit';
52
53let timer: reminderAgentManager.ReminderRequestTimer = {
54  reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_TIMER,
55  triggerTimeInSeconds: 10
56}
57
58reminderAgentManager.publishReminder(timer, (err: BusinessError, reminderId: number) => {
59  if (err.code) {
60    console.error("callback err code:" + err.code + " message:" + err.message);
61  } else {
62    console.log("callback, reminderId = " + reminderId);
63  }
64});
65```
66
67## reminderAgentManager.publishReminder
68
69publishReminder(reminderReq: ReminderRequest): Promise\<number>
70
71发布后台代理提醒。使用promise异步回调。
72
73> **说明:**
74>
75> 该接口需要申请通知弹窗权限[NotificationManager.requestEnableNotification](../apis-notification-kit/js-apis-notificationManager.md#notificationmanagerrequestenablenotification10)后调用。
76>
77> <!--RP1--><!--RP1End-->
78
79**需要权限**: ohos.permission.PUBLISH_AGENT_REMINDER
80
81**系统能力**: SystemCapability.Notification.ReminderAgent
82
83**参数**:
84
85  | 参数名 | 类型 | 必填 | 说明 |
86  | -------- | -------- | -------- | -------- |
87  | reminderReq | [ReminderRequest](#reminderrequest) | 是 | 需要发布的代理提醒实例。 |
88
89**返回值**:
90
91| 类型 | 说明 |
92| -------- | -------- |
93| Promise\<number> | Promise对象,返回当前发布提醒的id。 |
94
95**错误码:**
96
97以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
98
99| 错误码ID   | 错误信息 |
100| --------- | ------- |
101| 401 | If the input parameter is not valid parameter. |
102| 1700001    | Notification is not enabled. |
103| 1700002    | The number of reminders exceeds the limit. |
104
105**示例**:
106```ts
107import { BusinessError } from '@kit.BasicServicesKit';
108
109let timer: reminderAgentManager.ReminderRequestTimer = {
110  reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_TIMER,
111  triggerTimeInSeconds: 10
112}
113
114reminderAgentManager.publishReminder(timer).then((reminderId: number) => {
115  console.log("promise, reminderId = " + reminderId);
116}).catch((err: BusinessError) => {
117  console.error("promise err code:" + err.code + " message:" + err.message);
118});
119```
120
121
122## reminderAgentManager.cancelReminder
123
124cancelReminder(reminderId: number, callback: AsyncCallback\<void>): void
125
126取消指定id的代理提醒。使用callback异步回调。
127
128**系统能力**: SystemCapability.Notification.ReminderAgent
129
130**参数**:
131
132| 参数名 | 类型 | 必填 | 说明 |
133| -------- | -------- | -------- | -------- |
134| reminderId | number | 是 | 需要取消的代理提醒的id。 |
135| callback | AsyncCallback\<void> | 是 | 回调函数,取消代理提醒成功,err为undefined,否则返回err信息。 |
136
137**错误码:**
138
139以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
140
141| 错误码ID   | 错误信息 |
142| --------- | ------- |
143| 401 | If the input parameter is not valid parameter. |
144| 1700003    | The reminder does not exist. |
145| 1700004    | The bundle name does not exist. |
146
147**示例**:
148
149```ts
150import { BusinessError } from '@kit.BasicServicesKit';
151
152let reminderId: number = 1;
153reminderAgentManager.cancelReminder(reminderId, (err: BusinessError) => {
154  if (err.code) {
155    console.error("callback err code:" + err.code + " message:" + err.message);
156  } else {
157    console.log("cancelReminder callback");
158  }
159});
160```
161
162## reminderAgentManager.cancelReminder
163
164cancelReminder(reminderId: number): Promise\<void>
165
166取消指定id的代理提醒。使用Promise异步回调。
167
168**系统能力**: SystemCapability.Notification.ReminderAgent
169
170**参数**:
171
172| 参数名 | 类型 | 必填 | 说明 |
173| -------- | -------- | -------- | -------- |
174| reminderId | number | 是 | 需要取消的代理提醒的id。 |
175
176**返回值**:
177
178| 类型 | 说明 |
179| -------- | -------- |
180| Promise\<void> | 无返回结果的Promise对象。 |
181
182**错误码:**
183
184以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
185
186| 错误码ID   | 错误信息 |
187| --------- | ------- |
188| 401 | If the input parameter is not valid parameter. |
189| 1700003    | The reminder does not exist. |
190| 1700004    | The bundle name does not exist. |
191
192**示例**:
193
194```ts
195import { BusinessError } from '@kit.BasicServicesKit';
196
197let reminderId: number = 1;
198reminderAgentManager.cancelReminder(reminderId).then(() => {
199  console.log("cancelReminder promise");
200}).catch((err: BusinessError) => {
201  console.error("promise err code:" + err.code + " message:" + err.message);
202});
203```
204
205## reminderAgentManager.getValidReminders
206
207getValidReminders(callback: AsyncCallback<Array\<ReminderRequest>>): void
208
209获取当前应用设置的所有[有效(未过期)的代理提醒](../../task-management/agent-powered-reminder.md#约束与限制)。使用callback异步回调。
210
211**系统能力**: SystemCapability.Notification.ReminderAgent
212
213**参数**:
214
215| 参数名 | 类型 | 必填 | 说明 |
216| -------- | -------- | -------- | -------- |
217| callback | AsyncCallback\<Array\<[ReminderRequest](#reminderrequest)>> | 是 | 回调函数,返回当前应用设置的所有有效(未过期)的代理提醒。 |
218
219**错误码:**
220
221以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
222
223| 错误码ID   | 错误信息 |
224| --------- | ------- |
225| 401 | If the input parameter is not valid parameter. |
226| 1700004    | The bundle name does not exist. |
227
228**示例**:
229
230```ts
231import { BusinessError } from '@kit.BasicServicesKit';
232
233reminderAgentManager.getValidReminders((err: BusinessError, reminders: Array<reminderAgentManager.ReminderRequest>) => {
234  if (err.code) {
235    console.error("callback err code:" + err.code + " message:" + err.message);
236  } else {
237    console.log("callback, getValidReminders length = " + reminders.length);
238    for (let i = 0; i < reminders.length; i++) {
239      console.log("getValidReminders = " + reminders[i]);
240      console.log("getValidReminders, reminderType = " + reminders[i].reminderType);
241      const actionButton = reminders[i].actionButton || [];
242      for (let j = 0; j < actionButton.length; j++) {
243        console.log("getValidReminders, actionButton.title = " + actionButton[j]?.title);
244        console.log("getValidReminders, actionButton.type = " + actionButton[j]?.type);
245      }
246      console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent?.pkgName);
247      console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent?.abilityName);
248      console.log("getValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].maxScreenWantAgent?.pkgName);
249      console.log("getValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].maxScreenWantAgent?.abilityName);
250      console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration);
251      console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes);
252      console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval);
253      console.log("getValidReminders, title = " + reminders[i].title);
254      console.log("getValidReminders, content = " + reminders[i].content);
255      console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent);
256      console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent);
257      console.log("getValidReminders, notificationId = " + reminders[i].notificationId);
258      console.log("getValidReminders, slotType = " + reminders[i].slotType);
259    }
260  }
261});
262```
263
264## reminderAgentManager.getValidReminders
265
266getValidReminders(): Promise\<Array\<ReminderRequest>>
267
268获取当前应用设置的所有[有效(未过期)的代理提醒](../../task-management/agent-powered-reminder.md#约束与限制)。使用promise异步回调。
269
270**系统能力**: SystemCapability.Notification.ReminderAgent
271
272**返回值**:
273
274| 类型 | 说明 |
275| -------- | -------- |
276| Promise\<Array\<[ReminderRequest](#reminderrequest)>> | Promise对象,返回当前应用设置的所有有效(未过期)的代理提醒。 |
277
278**错误码:**
279
280以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
281
282| 错误码ID   | 错误信息 |
283| --------- | ------- |
284| 401 | If the input parameter is not valid parameter. |
285| 1700004    | The bundle name does not exist. |
286
287**示例**:
288
289```ts
290import { BusinessError } from '@kit.BasicServicesKit';
291
292reminderAgentManager.getValidReminders().then((reminders: Array<reminderAgentManager.ReminderRequest>) => {
293  console.log("promise, getValidReminders length = " + reminders.length);
294  for (let i = 0; i < reminders.length; i++) {
295    console.log("getValidReminders = " + reminders[i]);
296    console.log("getValidReminders, reminderType = " + reminders[i].reminderType);
297    const actionButton = reminders[i].actionButton || [];
298    for (let j = 0; j < actionButton.length; j++) {
299      console.log("getValidReminders, actionButton.title = " + actionButton[j]?.title);
300      console.log("getValidReminders, actionButton.type = " + actionButton[j]?.type);
301    }
302    console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent?.pkgName);
303    console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent?.abilityName);
304    console.log("getValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].maxScreenWantAgent?.pkgName);
305    console.log("getValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].maxScreenWantAgent?.abilityName);
306    console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration);
307    console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes);
308    console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval);
309    console.log("getValidReminders, title = " + reminders[i].title);
310    console.log("getValidReminders, content = " + reminders[i].content);
311    console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent);
312    console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent);
313    console.log("getValidReminders, notificationId = " + reminders[i].notificationId);
314    console.log("getValidReminders, slotType = " + reminders[i].slotType);
315  }
316}).catch((err: BusinessError) => {
317  console.error("promise err code:" + err.code + " message:" + err.message);
318});
319```
320
321## reminderAgentManager.cancelAllReminders
322
323cancelAllReminders(callback: AsyncCallback\<void>): void
324
325取消当前应用设置的所有代理提醒。使用callback异步回调。
326
327**系统能力**: SystemCapability.Notification.ReminderAgent
328
329**参数**:
330
331| 参数名 | 类型 | 必填 | 说明 |
332| -------- | -------- | -------- | -------- |
333| callback | AsyncCallback\<void> | 是 | 回调函数,取消代理提醒成功,err为undefined,否则为错误对象。  |
334
335**错误码:**
336
337以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
338
339| 错误码ID   | 错误信息 |
340| --------- | ------- |
341| 401 | If the input parameter is not valid parameter. |
342| 1700004    | The bundle name does not exist. |
343
344**示例**:
345
346```ts
347import { BusinessError } from '@kit.BasicServicesKit';
348
349reminderAgentManager.cancelAllReminders((err: BusinessError) =>{
350  if (err.code) {
351    console.error("callback err code:" + err.code + " message:" + err.message);
352  } else {
353    console.log("cancelAllReminders callback")
354  }
355});
356```
357
358## reminderAgentManager.cancelAllReminders
359
360cancelAllReminders(): Promise\<void>
361
362取消当前应用设置的所有代理提醒。使用Promise异步回调。
363
364**系统能力**: SystemCapability.Notification.ReminderAgent
365
366**返回值**:
367
368| 类型 | 说明 |
369| -------- | -------- |
370| Promise\<void> | 无返回结果的Promise对象。 |
371
372**错误码:**
373
374以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
375
376| 错误码ID   | 错误信息 |
377| --------- | ------- |
378| 401 | If the input parameter is not valid parameter. |
379| 1700004    | The bundle name does not exist. |
380
381**示例**:
382
383```ts
384import { BusinessError } from '@kit.BasicServicesKit';
385
386reminderAgentManager.cancelAllReminders().then(() => {
387  console.log("cancelAllReminders promise")
388}).catch((err: BusinessError) => {
389  console.error("promise err code:" + err.code + " message:" + err.message);
390});
391```
392
393
394## reminderAgentManager.addNotificationSlot
395
396addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback\<void>): void
397
398添加通知槽。使用callback异步回调。
399
400**系统能力**: SystemCapability.Notification.ReminderAgent
401
402**参数**:
403
404| 参数名 | 类型 | 必填 | 说明 |
405| -------- | -------- | -------- | -------- |
406| slot | [NotificationSlot](../apis-notification-kit/js-apis-inner-notification-notificationSlot.md#notificationslot) | 是 | notificationManager\.slot实例,仅支持设置其notificationType属性。 |
407| callback | AsyncCallback\<void> | 是 | 回调函数,添加NotificationSlot成功时,err为undefined,否则err为错误对象。 |
408
409**错误码:**
410
411以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
412
413| 错误码ID | 错误信息                                       |
414| -------- | ---------------------------------------------- |
415| 401      | If the input parameter is not valid parameter. |
416
417**示例**:
418
419```ts
420import { notificationManager } from '@kit.NotificationKit';
421import { BusinessError } from '@kit.BasicServicesKit';
422
423let mySlot: notificationManager.NotificationSlot = {
424  notificationType: notificationManager.SlotType.SOCIAL_COMMUNICATION
425}
426
427reminderAgentManager.addNotificationSlot(mySlot, (err: BusinessError) => {
428  if (err.code) {
429    console.error("callback err code:" + err.code + " message:" + err.message);
430  } else {
431    console.log("addNotificationSlot callback");
432  }
433});
434```
435
436
437## reminderAgentManager.addNotificationSlot
438
439addNotificationSlot(slot: NotificationSlot): Promise\<void>
440
441添加通知槽。使用promise异步回调。
442
443**系统能力**: SystemCapability.Notification.ReminderAgent
444
445**参数**:
446
447| 参数名 | 类型 | 必填 | 说明 |
448| -------- | -------- | -------- | -------- |
449| slot | [NotificationSlot](../apis-notification-kit/js-apis-inner-notification-notificationSlot.md#notificationslot) | 是 | notificationManager\.slot实例,仅支持设置其notificationType属性。 |
450
451**返回值**:
452
453| 类型 | 说明 |
454| -------- | -------- |
455| Promise\<void> | 无返回结果的Promise对象。 |
456
457**错误码:**
458
459以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
460
461| 错误码ID | 错误信息                                       |
462| -------- | ---------------------------------------------- |
463| 401      | If the input parameter is not valid parameter. |
464
465**示例**:
466
467```ts
468import { notificationManager } from '@kit.NotificationKit';
469import { BusinessError } from '@kit.BasicServicesKit';
470
471let mySlot: notificationManager.NotificationSlot = {
472  notificationType: notificationManager.SlotType.SOCIAL_COMMUNICATION
473}
474reminderAgentManager.addNotificationSlot(mySlot).then(() => {
475  console.log("addNotificationSlot promise");
476}).catch((err: BusinessError) => {
477  console.error("promise err code:" + err.code + " message:" + err.message);
478});
479```
480
481
482## reminderAgentManager.removeNotificationSlot
483
484removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback\<void>): void
485
486删除目标通知槽,使用callback异步回调。
487
488**系统能力**: SystemCapability.Notification.ReminderAgent
489
490**参数**:
491
492| 参数名 | 类型 | 必填 | 说明 |
493| -------- | -------- | -------- | -------- |
494| slotType | [notification.SlotType](../apis-notification-kit/js-apis-notification.md#slottype) | 是 | 通知渠道类型。 |
495| callback | AsyncCallback\<void> | 是 | 回调函数,当删除成功时,err为undefined,否则为错误对象。 |
496
497**错误码:**
498
499以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
500
501| 错误码ID | 错误信息                                       |
502| -------- | ---------------------------------------------- |
503| 401      | If the input parameter is not valid parameter. |
504
505**示例**:
506
507```ts
508import { notificationManager } from '@kit.NotificationKit';
509import { BusinessError } from '@kit.BasicServicesKit';
510
511reminderAgentManager.removeNotificationSlot(notificationManager.SlotType.CONTENT_INFORMATION,
512  (err: BusinessError) => {
513  if (err.code) {
514    console.error("callback err code:" + err.code + " message:" + err.message);
515  } else {
516    console.log("removeNotificationSlot callback");
517  }
518});
519```
520
521
522## reminderAgentManager.removeNotificationSlot
523
524removeNotificationSlot(slotType: notification.SlotType): Promise\<void>
525
526删除目标通知槽,使用Promise异步回调。
527
528**系统能力**: SystemCapability.Notification.ReminderAgent
529
530**参数**:
531
532| 参数名 | 类型 | 必填 | 说明 |
533| -------- | -------- | -------- | -------- |
534| slotType | [notification.SlotType](../apis-notification-kit/js-apis-notification.md#slottype) | 是 | 通知渠道类型。 |
535
536**返回值**:
537
538| 类型 | 说明 |
539| -------- | -------- |
540| Promise\<void> | 无返回结果的Promise对象。 |
541
542**错误码:**
543
544以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
545
546| 错误码ID | 错误信息                                       |
547| -------- | ---------------------------------------------- |
548| 401      | If the input parameter is not valid parameter. |
549
550**示例**:
551
552```ts
553import { notificationManager } from '@kit.NotificationKit';
554import { BusinessError } from '@kit.BasicServicesKit';
555
556reminderAgentManager.removeNotificationSlot(notificationManager.SlotType.CONTENT_INFORMATION).then(() => {
557  console.log("removeNotificationSlot promise");
558}).catch((err: BusinessError) => {
559  console.error("promise err code:" + err.code + " message:" + err.message);
560});
561```
562
563## reminderAgentManager.getAllValidReminders<sup>12+</sup>
564
565getAllValidReminders(): Promise\<Array\<ReminderInfo>>
566
567获取当前应用设置的所有[有效(未过期)的代理提醒](../../task-management/agent-powered-reminder.md#约束与限制)。使用promise异步回调。
568
569**系统能力**: SystemCapability.Notification.ReminderAgent
570
571**返回值**:
572
573| 类型                                              | 说明                                                         |
574| ------------------------------------------------- | ------------------------------------------------------------ |
575| Promise\<Array\<[ReminderInfo](#reminderinfo12)>> | Promise对象,返回当前应用设置的所有有效(未过期)的代理提醒。 |
576
577**错误码:**
578
579以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。
580
581| 错误码ID | 错误信息           |
582| -------- | ------------------ |
583| 201      | Permission denied. |
584
585**示例**:
586
587```ts
588import { BusinessError } from '@kit.BasicServicesKit';
589
590reminderAgentManager.getAllValidReminders().then((reminders: Array<reminderAgentManager.ReminderInfo>) => {
591  console.log("promise, getAllValidReminders length = " + reminders.length);
592  for (let i = 0; i < reminders.length; i++) {
593    console.log("getAllValidReminders, reminderId = " + reminders[i].reminderId);
594    console.log("getAllValidReminders, reminderType = " + reminders[i].reminderReq.reminderType);
595    const actionButton = reminders[i].reminderReq.actionButton || [];
596    for (let j = 0; j < actionButton.length; j++) {
597      console.log("getAllValidReminders, actionButton.title = " + actionButton[j]?.title);
598      console.log("getAllValidReminders, actionButton.type = " + actionButton[j]?.type);
599    }
600    console.log("getAllValidReminders, wantAgent.pkgName = " + reminders[i].reminderReq.wantAgent?.pkgName);
601    console.log("getAllValidReminders, wantAgent.abilityName = " + reminders[i].reminderReq.wantAgent?.abilityName);
602    console.log("getAllValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].reminderReq.maxScreenWantAgent?.pkgName);
603    console.log("getAllValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].reminderReq.maxScreenWantAgent?.abilityName);
604    console.log("getAllValidReminders, ringDuration = " + reminders[i].reminderReq.ringDuration);
605    console.log("getAllValidReminders, snoozeTimes = " + reminders[i].reminderReq.snoozeTimes);
606    console.log("getAllValidReminders, timeInterval = " + reminders[i].reminderReq.timeInterval);
607    console.log("getAllValidReminders, title = " + reminders[i].reminderReq.title);
608    console.log("getAllValidReminders, content = " + reminders[i].reminderReq.content);
609    console.log("getAllValidReminders, expiredContent = " + reminders[i].reminderReq.expiredContent);
610    console.log("getAllValidReminders, snoozeContent = " + reminders[i].reminderReq.snoozeContent);
611    console.log("getAllValidReminders, notificationId = " + reminders[i].reminderReq.notificationId);
612    console.log("getAllValidReminders, slotType = " + reminders[i].reminderReq.slotType);
613  }
614}).catch((err: BusinessError) => {
615  console.error("promise err code:" + err.code + " message:" + err.message);
616});
617```
618
619## reminderAgentManager.addExcludeDate<sup>12+</sup>
620
621addExcludeDate(reminderId: number, date: Date): Promise\<void>
622
623为指定id的周期性的日历提醒,添加不提醒日期(如每天提醒的日历,设置周二不提醒)。使用Promise异步回调。
624
625**系统能力**: SystemCapability.Notification.ReminderAgent
626
627**参数**:
628
629| 参数名     | 类型   | 必填 | 说明                               |
630| ---------- | ------ | ---- | ---------------------------------- |
631| reminderId | number | 是   | 需要添加不提醒日期的周期性日历id。 |
632| date       | Date   | 是   | 不提醒的日期。                     |
633
634**返回值**:
635
636| 类型           | 说明                      |
637| -------------- | ------------------------- |
638| Promise\<void> | 无返回结果的Promise对象。 |
639
640**错误码:**
641
642以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
643
644| 错误码ID | 错误信息                                       |
645| -------- | ---------------------------------------------- |
646| 201      | Permission denied.                             |
647| 401      | If the input parameter is not valid parameter. |
648| 1700003  | The reminder does not exist.                   |
649
650**示例**:
651
652```ts
653import { BusinessError } from '@kit.BasicServicesKit';
654
655let reminderId: number = 1;
656let date = new Date();
657reminderAgentManager.addExcludeDate(reminderId, date).then(() => {
658  console.log("addExcludeDate promise");
659}).catch((err: BusinessError) => {
660  console.error("promise err code:" + err.code + " message:" + err.message);
661});
662```
663
664## reminderAgentManager.deleteExcludeDates<sup>12+</sup>
665
666deleteExcludeDates(reminderId: number): Promise\<void>
667
668为指定id的周期性的日历提醒,删除设置的所有不提醒日期。使用Promise异步回调。
669
670**系统能力**: SystemCapability.Notification.ReminderAgent
671
672**参数**:
673
674| 参数名     | 类型   | 必填 | 说明                               |
675| ---------- | ------ | ---- | ---------------------------------- |
676| reminderId | number | 是   | 需要删除不提醒日期的周期性日历id。 |
677
678**返回值**:
679
680| 类型           | 说明                      |
681| -------------- | ------------------------- |
682| Promise\<void> | 无返回结果的Promise对象。 |
683
684**错误码:**
685
686以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
687
688| 错误码ID | 错误信息                     |
689| -------- | ---------------------------- |
690| 201      | Permission denied.           |
691| 1700003  | The reminder does not exist. |
692
693**示例**:
694
695```ts
696import { BusinessError } from '@kit.BasicServicesKit';
697
698let reminderId: number = 1;
699reminderAgentManager.deleteExcludeDates(reminderId).then(() => {
700  console.log("deleteExcludeDates promise");
701}).catch((err: BusinessError) => {
702  console.error("promise err code:" + err.code + " message:" + err.message);
703});
704```
705
706## reminderAgentManager.getExcludeDates<sup>12+</sup>
707
708getExcludeDates(reminderId: number): Promise\<Array\<Date>>
709
710为指定id的周期性的日历提醒,查询设置的所有不提醒日期。使用Promise异步回调。
711
712**系统能力**: SystemCapability.Notification.ReminderAgent
713
714**参数**:
715
716| 参数名     | 类型   | 必填 | 说明                               |
717| ---------- | ------ | ---- | ---------------------------------- |
718| reminderId | number | 是   | 需要查询不提醒日期的周期性日历id。 |
719
720**返回值**:
721
722| 类型                   | 说明                              |
723| ---------------------- | --------------------------------- |
724| Promise\<Array\<Date>> | Promise对象。返回特定日历设置的所有不提醒日期。 |
725
726**错误码:**
727
728以下错误码的详细介绍请参见[reminderAgentManager错误码](errorcode-reminderAgentManager.md)和[通用错误码](../errorcode-universal.md)。
729
730| 错误码ID | 错误信息                     |
731| -------- | ---------------------------- |
732| 201      | Permission denied.           |
733| 1700003  | The reminder does not exist. |
734
735**示例**:
736
737```ts
738import { BusinessError } from '@kit.BasicServicesKit';
739
740let reminderId: number = 1;
741reminderAgentManager.getExcludeDates(reminderId).then((dates) => {
742  console.log("getExcludeDates promise length: " + dates.length);
743  for (let i = 0; i < dates.length; i++) {
744	console.log("getExcludeDates promise date is: " + dates[i].toString());
745  }
746}).catch((err: BusinessError) => {
747  console.error("promise err code:" + err.code + " message:" + err.message);
748});
749```
750
751## ActionButtonType
752
753提醒上的按钮的类型。
754
755**系统能力**:SystemCapability.Notification.ReminderAgent
756
757| 名称 | 值 | 说明 |
758| -------- | -------- | -------- |
759| ACTION_BUTTON_TYPE_CLOSE | 0 | 表示关闭提醒的按钮。 |
760| ACTION_BUTTON_TYPE_SNOOZE | 1 | 表示延时提醒的按钮,提醒次数和间隔通过 [ReminderRequest](#reminderrequest) 中snoozeTimes和timeInterval设置。 |
761
762## ReminderType
763
764提醒的类型。
765
766**系统能力**:SystemCapability.Notification.ReminderAgent
767
768| 名称 | 值 | 说明 |
769| -------- | -------- | -------- |
770| REMINDER_TYPE_TIMER | 0 | 表示提醒类型:倒计时。 |
771| REMINDER_TYPE_CALENDAR | 1 | 表示提醒类型:日历。 |
772| REMINDER_TYPE_ALARM | 2 | 表示提醒类型:闹钟。 |
773
774
775## ActionButton
776
777弹出的提醒中按钮的类型和标题。
778
779**系统能力**:SystemCapability.Notification.ReminderAgent
780
781| 名称 | 类型 | 必填 | 说明 |
782| -------- | -------- | -------- | -------- |
783| title | string | 是 | 按钮显示的标题。 |
784| titleResource<sup>11+</sup> | string | 否 | 标题的资源ID,用于切换系统语言后读取对应标题信息。 |
785| type | [ActionButtonType](#actionbuttontype) | 是 | 按钮的类型。 |
786
787
788## WantAgent
789
790跳转目标的ability信息。
791
792**系统能力**:SystemCapability.Notification.ReminderAgent
793
794
795| 名称 | 类型 | 必填 | 说明 |
796| -------- | -------- | -------- | -------- |
797| pkgName | string | 是 | 指明跳转目标的包名。 |
798| abilityName | string | 是 | 指明跳转目标的ability名称。 |
799| parameters<sup>12+</sup> | Record\<string, Object> | 否 | 需要传递到目标的参数。 |
800| uri<sup>12+</sup> | string | 否 | 指明跳转目标的uri信息。 |
801
802
803## MaxScreenWantAgent
804
805通知中心弹出提醒时,全屏显示自动拉起目标的ability信息。该接口为预留接口,暂不支持使用。
806
807**系统能力**:SystemCapability.Notification.ReminderAgent
808
809| 名称 | 类型 | 必填 | 说明 |
810| -------- | -------- | -------- | -------- |
811| pkgName | string | 是 | 指明提醒到达时自动拉起的目标包名(如果设备在使用中,则只弹出通知横幅框)。 |
812| abilityName | string | 是 | 指明提醒到达时自动拉起的目标ability名(如果设备在使用中,则只弹出通知横幅框)。 |
813
814
815## ReminderRequest
816
817代理提醒对象,用于设置提醒类型、响铃时长等具体信息。
818
819**系统能力**:SystemCapability.Notification.ReminderAgent
820
821| 名称 | 类型 | 必填 | 说明 |
822| -------- | -------- | -------- | -------- |
823| reminderType | [ReminderType](#remindertype) | 是 | 指明代理提醒类型。 |
824| actionButton | [[ActionButton?, ActionButton?, ActionButton?]](#actionbutton) | 否 | 弹出的提醒通知中显示的按钮。<br>-普通应用:最多支持两个按钮。<br>-系统应用:API9最多支持两个按钮,在API10开始最多支持三个按钮。 |
825| wantAgent | [WantAgent](#wantagent) | 否 | 点击通知后需要跳转的目标ability信息。 |
826| maxScreenWantAgent | [MaxScreenWantAgent](#maxscreenwantagent) | 否 | 提醒到达时,全屏显示自动拉起目标的ability信息。如果设备正在使用中,则弹出一个通知横幅框。 <br> 说明:该接口为预留接口,暂不支持使用。|
827| ringDuration | number | 否 | 指明响铃时长(单位:秒),默认1秒。 |
828| snoozeTimes | number | 否 | 指明延时提醒次数,默认0次(不适用于倒计时提醒类型)。 |
829| timeInterval | number | 否 | 执行延时提醒间隔(单位:秒),最少5分钟(不适用于倒计时提醒类型)。 |
830| title | string | 否 | 指明提醒标题。 |
831| content | string | 否 | 指明提醒内容。 |
832| expiredContent | string | 否 | 指明提醒过期后需要显示的内容。 |
833| snoozeContent | string | 否 | 指明延时提醒时需要显示的内容(不适用于倒计时提醒类型)。 |
834| notificationId | number | 否 | 指明提醒使用的通知的id号,需开发者传入,相同id号的提醒会覆盖。 |
835| groupId<sup>11+</sup> | string | 否 | 指明提醒使用相同的组id。相同组id中,一个提醒被点击不在提醒后,组内其他提醒也会被取消。 |
836| slotType | [notification.SlotType](../apis-notification-kit/js-apis-notificationManager.md#slottype) | 否 | 指明提醒的通道渠道类型。 |
837| tapDismissed<sup>10+</sup> | boolean | 否 | 通知是否自动清除,具体请参考[NotificationRequest.tapDismissed](../apis-notification-kit/js-apis-inner-notification-notificationRequest.md#notificationrequest)。  |
838| autoDeletedTime<sup>10+</sup> | number | 否 | 自动清除的时间,具体请参考[NotificationRequest.autoDeletedTime](../apis-notification-kit/js-apis-inner-notification-notificationRequest.md#notificationrequest)。 |
839| snoozeSlotType<sup>11+</sup> | [notification.SlotType](../apis-notification-kit/js-apis-notificationManager.md#slottype) | 否 | 指明延时提醒的通道渠道类型(不适用于倒计时提醒类型)。 |
840| customRingUri<sup>11+</sup> | string | 否 | 指明自定义提示音的uri,提示音文件必须放在resources/rawfile目录下,支持m4a、aac、mp3、ogg、wav、flac、amr等格式。 |
841
842## ReminderRequestCalendar
843
844ReminderRequestCalendar extends ReminderRequest
845
846日历实例对象,用于设置提醒的时间。
847
848**系统能力**:SystemCapability.Notification.ReminderAgent
849
850| 名称 | 类型 | 必填 | 说明 |
851| -------- | -------- | -------- | -------- |
852| dateTime | [LocalDateTime](#localdatetime) | 是 | 指明提醒的目标时间。 |
853| repeatMonths | Array\<number> | 否 | 指明重复提醒的月份。 |
854| repeatDays | Array\<number> | 否 | 指明重复提醒的日期。 |
855| daysOfWeek<sup>11+</sup> | Array\<number> | 否 | 指明每周哪几天需要重复提醒。范围为周一到周日,对应数字为1到7。 |
856| endDateTime<sup>12+</sup> | [LocalDateTime](#localdatetime) | 否 | 指明提醒的结束时间。 |
857
858
859## ReminderRequestAlarm
860
861ReminderRequestAlarm extends ReminderRequest
862
863闹钟实例对象,用于设置提醒的时间。
864
865**系统能力**:SystemCapability.Notification.ReminderAgent
866
867| 名称 | 类型 | 必填 | 说明 |
868| -------- | -------- | -------- | -------- |
869| hour | number | 是 | 指明提醒的目标时刻。 |
870| minute | number | 是 | 指明提醒的目标分钟。 |
871| daysOfWeek | Array\<number> | 否 | 指明每周哪几天需要重复提醒。范围为周一到周日,对应数字为1到7。 |
872
873
874## ReminderRequestTimer
875
876ReminderRequestTimer extends ReminderRequest
877
878倒计时实例对象,用于设置提醒的时间。
879
880**系统能力**:SystemCapability.Notification.ReminderAgent
881
882| 名称 | 类型 | 必填 | 说明 |
883| -------- | -------- | -------- | -------- |
884| triggerTimeInSeconds | number | 是 | 指明倒计时的秒数。 |
885
886
887## LocalDateTime
888
889用于日历类提醒设置时指定时间信息。
890
891**系统能力**:SystemCapability.Notification.ReminderAgent
892
893| 名称 | 类型 | 必填 | 说明 |
894| -------- | -------- | -------- | -------- |
895| year | number | 是 | 年 |
896| month | number | 是 | 月,取值范围是[1, 12]。 |
897| day | number | 是 | 日,取值范围是[1, 31]。 |
898| hour | number | 是 | 时,取值范围是[0, 23]。 |
899| minute | number | 是 | 分,取值范围是[0, 59]。 |
900| second | number | 否 | 秒,取值范围是[0, 59]。 |
901
902## ReminderInfo<sup>12+</sup>
903
904代理提醒信息,包含 ReminderRequest 和 ReminderId。
905
906**系统能力**:SystemCapability.Notification.ReminderAgent
907
908| 名称        | 类型                                | 只读 | 可选 | 说明                 |
909| ----------- | ----------------------------------- | ---- | ---- | -------------------- |
910| reminderId  | number                              | 否   | 否   | 发布提醒后返回的id。 |
911| reminderReq | [ReminderRequest](#reminderrequest) | 否   | 否   | 代理提醒对象。       |
912
913