1# 后台代理提醒 2 3本模块提供后台代理提醒的能力。 4 5开发应用时,开发者可以调用后台提醒发布的接口创建定时提醒,包括倒计时、日历、闹钟三种提醒类型。使用后台代理提醒能力后,应用可以被冻结或退出,计时和弹出提醒的功能将被后台系统服务代理。 6 7> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 8> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 9 10 11## 导入模块 12 13``` 14import reminderAgent from'@ohos.reminderAgent'; 15``` 16 17 18## reminderAgent.publishReminder 19 20publishReminder(reminderReq: ReminderRequest, callback: AsyncCallback<number>): void 21 22发布一个后台代理提醒,使用callback方式实现异步调用,该方法需要申请通知弹窗[Notification.requestEnableNotification](js-apis-notification.md#notificationrequestenablenotification8)后才能调用。 23 24**需要权限**: ohos.permission.PUBLISH_AGENT_REMINDER 25 26**系统能力**: SystemCapability.Notification.ReminderAgent 27 28**参数**: 29 30 | 参数名 | 类型 | 必填 | 说明 | 31 | -------- | -------- | -------- | -------- | 32 | reminderReq | [ReminderRequest](#reminderrequest) | 是 | 需要发布的提醒实例。 | 33 | callback | AsyncCallback<number> | 是 | 异步回调,返回当前发布的提醒的reminderId。 | 34 35**示例**: 36 ``` 37 export default { 38 data: { 39 timer: { 40 reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, 41 triggerTimeInSeconds: 3 42 } 43 }, 44 startTimer() { 45 reminderAgent.publishReminder(timer, (err, reminderId) => { console.log("reminderId = " + reminderId); 46 }); 47 } 48 } 49 ``` 50 51 52## reminderAgent.publishReminder 53 54publishReminder(reminderReq: ReminderRequest): Promise<number> 55 56发布一个后台代理提醒,使用Promise方式实现异步调用,该方法需要申请通知弹窗[Notification.requestEnableNotification](js-apis-notification.md#notificationrequestenablenotification8)后才能调用。 57 58**系统能力**: SystemCapability.Notification.ReminderAgent 59 60**参数**: 61 | 参数名 | 类型 | 必填 | 说明 | 62 | -------- | -------- | -------- | -------- | 63 | reminderReq | [ReminderRequest](#reminderrequest) | 是 | 需要发布的提醒实例。 | 64 65**返回值**: 66 | 类型 | 说明 | 67 | -------- | -------- | 68 | Promise<number> | 返回提醒的reminderId。 | 69 70**示例**: 71 ``` 72 export default { 73 data: 74 {timer: { 75 reminderType: reminderAgent.ReminderType.REMINDER_TYPE_TIMER, 76 triggerTimeInSeconds: 3 77 } 78 }, 79 startTimer() { 80 reminderAgent.publishReminder(this.timer).then((reminderId) => { 81 console.log("reminderId = " + reminderId); 82 }); 83 } 84 } 85 ``` 86 87 88## reminderAgent.cancelReminder 89 90cancelReminder(reminderId: number, callback: AsyncCallback<void>): void 91 92取消指定id的提醒,使用callback方式实现异步调用。 93 94**系统能力**: SystemCapability.Notification.ReminderAgent 95 96**参数**: 97 98| 参数名 | 类型 | 必填 | 说明 | 99| -------- | -------- | -------- | -------- | 100| reminderId | number | 是 | 目标reminder的id号。 | 101| callback | AsyncCallback<void> | 是 | 异步回调。 | 102 103**示例**: 104 105``` 106export default { 107 cancel() { 108 reminderAgent.cancelReminder(1, (err, data) => { 109 console.log("do next"); 110 }); 111 } 112} 113``` 114 115 116## reminderAgent.cancelReminder 117 118cancelReminder(reminderId: number): Promise<void> 119 120取消指定id的提醒,使用Promise方式实现异步调用。 121 122**系统能力**: SystemCapability.Notification.ReminderAgent 123 124**参数**: 125 126| 参数名 | 类型 | 必填 | 说明 | 127| -------- | -------- | -------- | -------- | 128| reminderId | number | 是 | 目标reminder的id号。 | 129 130**返回值**: 131 132| 类型 | 说明 | 133| -------- | -------- | 134| Promise<void> | Promise类型异步回调。 | 135 136**示例**: 137 138``` 139export default { 140 cancel() { 141 reminderAgent.cancelReminder(1).then(() => { 142 console.log("do next"); 143 }); 144 } 145} 146``` 147 148 149## reminderAgent.getValidReminders 150 151getValidReminders(callback: AsyncCallback<Array<ReminderRequest>>): void 152 153获取当前应用已设置的所有有效(未过期)的提醒,使用callback方式实现异步调用。 154 155**系统能力**: SystemCapability.Notification.ReminderAgent 156 157**参数**: 158 159| 参数名 | 类型 | 必填 | 说明 | 160| -------- | -------- | -------- | -------- | 161| callback | AsyncCallback<Array<[ReminderRequest](#reminderrequest)>> | 是 | 异步回调,返回当前应用已设置的所有有效(未过期)的提醒。 | 162 163**示例**: 164 165``` 166reminderAgent.getValidReminders((err, reminders) => { 167 for (let i = 0; i < reminders.length; i++) { 168 console.log("getValidReminders = " + reminders[i]); 169 console.log("getValidReminders, reminderType = " + reminders[i].reminderType); 170 for (let j = 0; j < reminders[i].actionButton.length; j++) { 171 console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title); 172 console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type); 173 } 174 console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName); 175 console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName); 176 console.log("getValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].maxScreenWantAgent.pkgName); 177 console.log("getValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].maxScreenWantAgent.abilityName); 178 console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration); 179 console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes); 180 console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval); 181 console.log("getValidReminders, title = " + reminders[i].title); 182 console.log("getValidReminders, content = " + reminders[i].content); 183 console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent); 184 console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent); 185 console.log("getValidReminders, notificationId = " + reminders[i].notificationId); 186 console.log("getValidReminders, slotType = " + reminders[i].slotType); 187 } 188}) 189``` 190 191 192## reminderAgent.getValidReminders 193 194getValidReminders(): Promise<Array<ReminderRequest>> 195 196获取当前应用已设置的所有有效(未过期)的提醒,使用Promise方式实现异步调用。 197 198**系统能力**: SystemCapability.Notification.ReminderAgent 199 200**返回值**: 201 202| 类型 | 说明 | 203| -------- | -------- | 204| Promise<Array<[ReminderRequest](#reminderrequest)>> | 返回当前应用已设置的所有有效(未过期)的提醒。 | 205 206**示例**: 207 208``` 209reminderAgent.getValidReminders().then((reminders) => { 210 for (let i = 0; i < reminders.length; i++) { 211 console.log("getValidReminders = " + reminders[i]); 212 console.log("getValidReminders, reminderType = " + reminders[i].reminderType); 213 for (let j = 0; j < reminders[i].actionButton.length; j++) { 214 console.log("getValidReminders, actionButton.title = " + reminders[i].actionButton[j].title); 215 console.log("getValidReminders, actionButton.type = " + reminders[i].actionButton[j].type); 216 } 217 console.log("getValidReminders, wantAgent.pkgName = " + reminders[i].wantAgent.pkgName); 218 console.log("getValidReminders, wantAgent.abilityName = " + reminders[i].wantAgent.abilityName); 219 console.log("getValidReminders, maxScreenWantAgent.pkgName = " + reminders[i].maxScreenWantAgent.pkgName); 220 console.log("getValidReminders, maxScreenWantAgent.abilityName = " + reminders[i].maxScreenWantAgent.abilityName); 221 console.log("getValidReminders, ringDuration = " + reminders[i].ringDuration); 222 console.log("getValidReminders, snoozeTimes = " + reminders[i].snoozeTimes); 223 console.log("getValidReminders, timeInterval = " + reminders[i].timeInterval); 224 console.log("getValidReminders, title = " + reminders[i].title); 225 console.log("getValidReminders, content = " + reminders[i].content); 226 console.log("getValidReminders, expiredContent = " + reminders[i].expiredContent); 227 console.log("getValidReminders, snoozeContent = " + reminders[i].snoozeContent); 228 console.log("getValidReminders, notificationId = " + reminders[i].notificationId); 229 console.log("getValidReminders, slotType = " + reminders[i].slotType); 230 } 231}) 232``` 233 234 235## reminderAgent.cancelAllReminders 236 237cancelAllReminders(callback: AsyncCallback<void>): void 238 239取消当前应用所有的提醒,使用callback方式实现异步调用。 240 241**系统能力**: SystemCapability.Notification.ReminderAgent 242 243**参数**: 244 245| 参数名 | 类型 | 必填 | 说明 | 246| -------- | -------- | -------- | -------- | 247| callback | AsyncCallback<void> | 是 | 异步回调。 | 248 249**示例**: 250 251``` 252reminderAgent.cancelAllReminders((err, data) =>{ 253 console.log("do next")}) 254``` 255 256 257## reminderAgent.cancelAllReminders 258 259cancelAllReminders(): Promise<void> 260 261取消当前应用所有的提醒,使用Promise方式实现异步调用。 262 263**系统能力**: SystemCapability.Notification.ReminderAgent 264 265**返回值**: 266 267| 类型 | 说明 | 268| -------- | -------- | 269| Promise<void> | Promise类型异步回调。 | 270 271**示例**: 272 273``` 274reminderAgent.cancelAllReminders().then(() => { 275 console.log("do next")}) 276``` 277 278 279## reminderAgent.addNotificationSlot 280 281addNotificationSlot(slot: NotificationSlot, callback: AsyncCallback<void>): void 282 283添加一个NotificationSlot,使用callback方式实现异步调用。 284 285**系统能力**: SystemCapability.Notification.ReminderAgent 286 287**参数**: 288 289| 参数名 | 类型 | 必填 | 说明 | 290| -------- | -------- | -------- | -------- | 291| slot | [NotificationSlot](js-apis-notification.md#notificationslot) | 是 | notification slot实例。 | 292| callback | AsyncCallback<void> | 是 | 异步回调。 | 293 294**示例**: 295 296``` 297export default { data: { mySlot: { 298 type: 3, 299 sound: "/sdcard/music2.mp3" 300 } }, 301 addSlot() { 302 reminderAgent.addNotificationSlot(this.mySlot, (err, data) => { 303 console.log("do next"); 304 }); 305 } 306} 307``` 308 309 310## reminderAgent.addNotificationSlot 311 312addNotificationSlot(slot: NotificationSlot): Promise<void> 313 314添加一个NotificationSlot,使用Promise方式实现异步调用。 315 316**系统能力**: SystemCapability.Notification.ReminderAgent 317 318**参数**: 319 320| 参数名 | 类型 | 必填 | 说明 | 321| -------- | -------- | -------- | -------- | 322| slot | [NotificationSlot](js-apis-notification.md#notificationslot) | 是 | notification slot实例。 | 323 324**返回值**: 325 326| 类型 | 说明 | 327| -------- | -------- | 328| Promise<void> | Promise类型异步回调。 | 329 330**示例**: 331 332``` 333export default { data: { mySlot: { 334 type: 3, 335 sound: "/sdcard/music2.mp3" 336 } }, 337 addSlot() { 338 reminderAgent.addNotificationSlot(this.mySlot).then(() => { 339 console.log("do next"); 340 }); 341 } 342} 343``` 344 345 346## reminderAgent.removeNotificationSlot 347 348removeNotificationSlot(slotType: notification.SlotType, callback: AsyncCallback<void>): void 349 350删除目标NotificationSlot,使用callback方式实现异步调用。 351 352**系统能力**: SystemCapability.Notification.ReminderAgent 353 354**参数**: 355 356| 参数名 | 类型 | 必填 | 说明 | 357| -------- | -------- | -------- | -------- | 358| slotType | [notification.SlotType](js-apis-notification.md#slottype) | 是 | 目标notification slot的类型。 | 359| callback | AsyncCallback<void> | 是 | 异步回调。 | 360 361**示例**: 362 363``` 364export default { 365 removeSlot() {reminderAgent.removeNotificationSlot(notification.SlotType.CONTENT_INFORMATION, (err, data) => { 366 console.log("do next"); 367}); 368 } 369} 370``` 371 372 373## reminderAgent.removeNotificationSlot 374 375removeNotificationSlot(slotType: notification.SlotType): Promise<void> 376 377删除目标NotificationSlot,使用Promise方式实现异步调用。 378 379**系统能力**: SystemCapability.Notification.ReminderAgent 380 381**参数**: 382 383| 参数名 | 类型 | 必填 | 说明 | 384| -------- | -------- | -------- | -------- | 385| slotType | [notification.SlotType](js-apis-notification.md#slottype) | 是 | 目标notification slot的类型。 | 386 387**返回值**: 388 389| 类型 | 说明 | 390| -------- | -------- | 391| Promise<void> | Promise类型异步回调。 | 392 393**示例**: 394 395``` 396export default { 397 removeSlot() { reminderAgent.removeNotificationSlot(notification.SlotType.CONTENT_INFORMATION).then(() => { 398 console.log("do next"); 399 }); 400 } 401} 402``` 403 404 405## ActionButtonType 406 407按钮的类型。 408 409**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 410 411| 名称 | 默认值 | 说明 | 412| -------- | -------- | -------- | 413| ACTION_BUTTON_TYPE_CLOSE | 0 | 表示关闭提醒的按钮。 | 414| ACTION_BUTTON_TYPE_SNOOZE | 1 | 表示延迟提醒的按钮。 | 415 416 417## ReminderType 418 419提醒的类型。 420 421**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 422 423| 名称 | 默认值 | 说明 | 424| -------- | -------- | -------- | 425| REMINDER_TYPE_TIMER | 0 | 表示提醒类型:倒计时。 | 426| REMINDER_TYPE_CALENDAR | 1 | 表示提醒类型:日历。 | 427| REMINDER_TYPE_ALARM | 2 | 表示提醒类型:闹钟。 | 428 429 430## ActionButton 431 432用于设置弹出的提醒通知信息上显示的按钮类型和标题。 433 434**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 435 436| 名称 | 参数类型 | 必填 | 说明 | 437| -------- | -------- | -------- | -------- | 438| title | string | 是 | 按钮显示的标题。 | 439| type | [ActionButtonType](#actionbuttontype) | 是 | 按钮的类型。 | 440 441 442## WantAgent 443 444点击提醒通知后跳转的目标ability信息。 445 446**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 447 448| 名称 | 参数类型 | 必填 | 说明 | 449| -------- | -------- | -------- | -------- | 450| pkgName | string | 是 | 指明点击提醒通知栏后跳转的目标hap包名。 | 451| abilityName | string | 是 | 指明点击提醒通知栏后跳转的目标ability名称。 | 452 453 454## MaxScreenWantAgent 455 456全屏显示提醒到达时自动拉起的目标ability信息,该接口预留。 457 458**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 459 460| 名称 | 参数类型 | 必填 | 说明 | 461| -------- | -------- | -------- | -------- | 462| pkgName | string | 是 | 指明提醒到达时自动拉起的目标hap包名(如果设备在使用中,则只弹出通知横幅框)。 | 463| abilityName | string | 是 | 指明提醒到达时自动拉起的目标ability名(如果设备在使用中,则只弹出通知横幅框)。 | 464 465 466## ReminderRequest 467 468提醒实例对象,用于设置提醒类型、响铃时长等具体信息。 469 470**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 471 472| 名称 | 参数类型 | 必填 | 说明 | 473| -------- | -------- | -------- | -------- | 474| reminderType | ReminderType | 是 | 指明提醒类型。 | 475| actionButton | [ActionButton?, ActionButton?] | 否 | 弹出的提醒通知栏中显示的按钮(参数可选,支持0/1/2个按钮)。 | 476| wantAgent | WantAgent | 否 | 点击通知后需要跳转的目标ability信息。 | 477| maxScreenWantAgent | MaxScreenWantAgent | 否 | 提醒到达时跳转的目标包。如果设备正在使用中,则弹出一个通知框。 | 478| ringDuration | number | 否 | 指明响铃时长。 | 479| snoozeTimes | number | 否 | 指明延迟提醒次数。 | 480| timeInterval | number | 否 | 执行延迟提醒间隔。 | 481| title | string | 否 | 指明提醒标题。 | 482| content | string | 否 | 指明提醒内容。 | 483| expiredContent | string | 否 | 指明提醒过期后需要显示的内容。 | 484| snoozeContent | string | 否 | 指明延迟提醒时需要显示的内容。 | 485| notificationId | number | 否 | 指明提醒使用的通知的id号,相同id号的提醒会覆盖。 | 486| slotType | [notification.SlotType](js-apis-notification.md#slottype) | 否 | 指明提醒的slot类型。 | 487 488 489## ReminderRequestCalendar 490 491ReminderRequestCalendar extends ReminderRequest 492 493日历实例对象,用于设置提醒的时间。 494 495**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 496 497| 名称 | 参数类型 | 必填 | 说明 | 498| -------- | -------- | -------- | -------- | 499| dateTime | [LocalDateTime](#localdatetime) | 是 | 指明提醒的目标时间。 | 500| repeatMonths | Array<number> | 否 | 指明重复提醒的月份。 | 501| repeatDays | Array<number> | 否 | 指明重复提醒的日期。 | 502 503 504## ReminderRequestAlarm 505 506ReminderRequestAlarm extends ReminderRequest 507 508闹钟实例对象,用于设置提醒的时间。 509 510**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 511 512| 名称 | 参数类型 | 必填 | 说明 | 513| -------- | -------- | -------- | -------- | 514| hour | number | 是 | 指明提醒的目标时刻。 | 515| minute | number | 是 | 指明提醒的目标分钟。 | 516| daysOfWeek | Array<number> | 否 | 指明每周哪几天需要重复提醒。 | 517 518 519## ReminderRequestTimer 520 521ReminderRequestTimer extends ReminderRequest 522 523倒计时实例对象,用于设置提醒的时间。 524 525**系统能力**:SystemCapability.Notification.ReminderAgent 526 527| 名称 | 参数类型 | 必填 | 说明 | 528| -------- | -------- | -------- | -------- | 529| triggerTimeInSeconds | number | 是 | 指明倒计时的秒数。 | 530 531 532## LocalDateTime 533 534用于日历类提醒设置时指定时间信息。 535 536**系统能力**:以下各项对应的系统能力均为SystemCapability.Notification.ReminderAgent 537 538| 名称 | 参数类型 | 必填 | 说明 | 539| -------- | -------- | -------- | -------- | 540| year | number | 是 | 年 | 541| month | number | 是 | 月 | 542| day | number | 是 | 日 | 543| hour | number | 是 | 时 | 544| minute | number | 是 | 分 | 545| second | number | 否 | 秒 | 546