当前位置: 首页 > news >正文

HarmonyOS4.0从零开始的开发教程18后台代理提醒

HarmonyOS(十六)后台代理提醒

简介

随着生活节奏的加快,我们有时会忘记一些重要的事情或日子,所以提醒功能必不可少。应用可能需要在指定的时刻,向用户发送一些业务提醒通知。例如购物类应用,希望在指定时间点提醒用户有优惠活动。为满足此类业务诉求,HarmonyOS提供后台代理提醒功能,在应用退居后台或退出后,计时和提醒通知功能被系统后台代理接管。

后台代理提醒业务类型:

  • 倒计时类:基于倒计时的提醒功能,适用于短时的计时提醒业务。
  • 日历类:基于日历的提醒功能,适用于较长时间的提醒业务。
  • 闹钟类:基于时钟的提醒功能,适用于指定时刻的提醒业务。

点击放大

后台代理提醒就是由系统后台进程代理应用的提醒功能。后台代理提醒服务通过reminderAgentManager模块提供提醒定义、创建提醒、取消提醒等能力。

后台代理提醒服务提供统一的提醒管理能力,在应用退居后台或退出后,计时和提醒通知功能被系统后台代理接管。

点击放大

以新增一个9点的喝水提醒为例:

假设用户在8点新增这个喝水提醒,应用根据用户设置的信息生成提醒实例并发布提醒。由后台代理提醒服务调用系统服务启动计时。

到9点时,系统唤醒后台代理提醒服务发布通知,最终由通知服务触发桌面显示通知。

点击放大

在整个流程中,应用仅需:

  1. 使用reminderAgentManager模块的ReminderRequest类定义提醒实例;
  2. 使用reminderAgentManager模块的publishReminder接口发布提醒。

无需关注计时和通知发布等功能如何实现。

若是删除提醒流程,需要使用reminderAgentManager模块的cancelReminder接口取消提醒;若是修改提醒流程,则需要先删除旧的提醒,再新增新的提醒。

给你的应用添加提醒

点击放大

以闹钟应用为例,实现提醒功能有以下前置条件:

  • 添加后台代理提醒使用权限。

    "module": {..."requestPermissions": [{"name": "ohos.permission.PUBLISH_AGENT_REMINDER"}]
    }
    
  • 导入后台代理提醒reminderAgentManager模块,将此模块命名为reminderAgent。

    import reminderAgent from '@ohos.reminderAgentManager';
    

如果是新增提醒,实现步骤如下:

  1. 用reminderAgent.ReminderRequest类定义提醒实例。

    import reminderAgent from '@ohos.reminderAgentManager';
    ...export class ReminderService {public addReminder(alarmItem: ReminderItem, callback?: (reminderId: number) => void) {let reminder = this.initReminder(alarmItem);reminderAgent.publishReminder(reminder, (err, reminderId) => {if (callback != null) {callback(reminderId);}});}private initReminder(item: ReminderItem): reminderAgent.ReminderRequestAlarm {return {reminderType: item.remindType,hour: item.hour,minute: item.minute,daysOfWeek: item.repeatDays,title: item.name,ringDuration: item.duration * Constants.DEFAULT_TOTAL_MINUTE,snoozeTimes: item.intervalTimes,timeInterval: item.intervalMinute,actionButton: [{title: '关闭',type: reminderAgent.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE},...],wantAgent: {pkgName: globalThis.bundleName,abilityName: globalThis.abilityName},notificationId: item.notificationId,...}}...
    }
    
  2. 发布提醒。

    import reminderAgent from '@ohos.reminderAgentManager';
    ...export class ReminderService {public addReminder(alarmItem: ReminderItem, callback?: (reminderId: number) => void) {let reminder = this.initReminder(alarmItem);reminderAgent.publishReminder(reminder, (err, reminderId) => {if (callback != null) {callback(reminderId);}});}private initReminder(item: ReminderItem): reminderAgent.ReminderRequestAlarm {...}...
    }
    

如果需要删除提醒,可以调用cancelReminder()接口实现。

import reminderAgent from '@ohos.reminderAgentManager';
...export class ReminderService {public deleteReminder(reminderId: number) {reminderAgent.cancelReminder(reminderId);}...
}

如果需要修改提醒,则需要先进行旧提醒的删除,再新增新的提醒。

public async setAlarmRemind(alarmItem: AlarmItem) {let index = await this.findAlarmWithId(alarmItem.id);if (index !== Constants.DEFAULT_NUMBER_NEGATIVE) {this.reminderService.deleteReminder(alarmItem.id);} else {...}this.reminderService.addReminder(alarmItem, (newId) => {alarmItem.id = newId;...})
}

参考

更多后台代理提醒场景和相关知识请参考开发指南和API参考:

  • 后台代理提醒
  • @ohos.reminderAgentManager (后台代理提醒)
http://www.lryc.cn/news/263372.html

相关文章:

  • 智能优化算法应用:基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 在vue中通过js动态绘制table,并且合并连续相同内容的行,支持点击编辑单元格内容
  • 输电线路定位:精确导航,确保电力传输安全
  • ZKP Commitment (1)
  • 【难点】【LRU】146.LRU缓存
  • 基于YOLOv8深度学习的吸烟/抽烟行为检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
  • 菜鸟学习日记(python)——匿名函数
  • CompleteFuture与Future的比较
  • 数据分享 I 全国市级商品房屋销售数据,shp/excel格式,2005-2020年数据
  • 面试题总结(十一)【C++】【华清远见西安中心】
  • c++_01_名字空间_复合类型_缺省参数_哑元函数
  • 前端常见面试题之html和css篇
  • 使用libaom处理av1编码教程
  • 面试题总结(十)【数据库】【华清远见西安中心】
  • 计算机网络:物理层(三种数据交换方式)
  • ubuntu18.04 64 位安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理
  • Nvidia 驱动安装不完整记录
  • 龙芯loongarch64服务器编译安装gcc-8.3.0
  • 宏基因组学Metagenome-磷循环Pcycle功能基因分析-从分析过程到代码及结果演示-超详细保姆级流程
  • element plus 日期范围 自定义内容
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • JSON Ajax
  • ElasticSearch与HBase的分布式存储设计
  • 回归预测 | MATLAB实现NGO-SCN北方苍鹰算法优化随机配置网络的数据回归预测 (多指标,多图)
  • Bezier 曲线 2D
  • Linux静态ip
  • 一种基于外观-运动语义表示一致性的视频异常检测框架 论文阅读
  • Netty—NIO万字详解
  • 面试经典150题(32-37)
  • 手撕分布式缓存---HTTP Client搭建