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.mzph.cn/news/234065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地运行vue脚手架 从下载node开始到创建vue

vue2node 1.安装node vue2版本我node一般使用的是14版本左右 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f886442c20114e62aef8113425e34ad2.pngnode官网 假如我node版本过低 你就找到控制面板 找到node卸载掉 我一般下载两个版本 安装vue cli vuecl…

BurpSuite抓不到本地包

目录 前言 一、方法一 二、方法二 三、方法三 四、方法四 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Filotimo__✍️原创,首发于CSDN📚。 &#x1f…

基础数据结构(1):链表

在学习算法时,发现用什么数据结构来存储数据是很重要的,所以学习数据结构也是必须的,先从基础数据结构:数组,字符串,链表,栈,队列,树,矩阵,邻接表…

利用虚继承解决菱形继承(钻石继承)的问题 学习笔记

菱形继承概念: 两个派生类继承同一个基类 又有某个类同时继承两个派生类 这种继承又被称为菱形继承,或者钻石继承 定义一个基类Animal,两个派生类Sheep、Camal,SheepCame继承于两个派生类 class Animal { public:int m_Age; }…

Bert-vits2-v2.2新版本本地训练推理整合包(原神八重神子英文模型miko)

近日,Bert-vits2-v2.2如约更新,该新版本v2.2主要把Emotion 模型换用CLAP多模态模型,推理支持输入text prompt提示词和audio prompt提示语音来进行引导风格化合成,让推理音色更具情感特色,并且推出了新的预处理webuI&am…

fdbus和vsomeip的对比

近日发现,在智能座舱系统里核间通讯,有项目团队使用了fdbus这一开源项目作为解决方案,于是特意调研了下。 一. 核间通讯 无论是虚拟化平台上的,HOST系统和GUEST系统,亦或是硬隔离方案里的2个OS(跑在不同的…

【Java -jar】无主清单文件 命令行启动失败问题

问题原因:打包后在jar包中的META-INF中的MANIFEST.MF中的信息有误。找不到类加载器和主运行文件等信息。 解决思路:可以判定为不是简单的package到本地,而是在pom.xml缺少了打包信息,添加如下信息,打包后执行java -ja…

SpringMVC---详细介绍+使用

文章目录 什么是SpringMVC?使用SpringMVCSpringMVC创建和连接创建连接RequestMapping的基础使用 获取参数返回数据返回静态页面返回非页面的普通数据(text/html)返回JSON对象请求转发或者请求重定向 什么是SpringMVC? SpringMVC它…

【ES】--Elasticsearch的索引别名和主副分片

目录 一、ES的别名二、ES的分片三、ES的别名的增删改查3.1、创建别名/分片的代码示例3.2、CRUD代码示例 一、ES的别名 为什么使用ES别名? 灵活的扩容。 动态的滚动查询。 例如“在不同的索引创建窗口”。 进行索引分组。 使用别名过滤器来屏蔽文档,他们…

【Spring】14 ApplicationEventPublisherAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动3.5 工作流程图 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点,其中之一是 Bean 生命周期中的回调接口。本文将专注介绍一个与事件发布相关的接口 Applicatio…

【SQLite】SQLite数据库简单使用与Navicat安装-加密

Sqlite为免安装数据库,安装步骤总结: 官网下载Sqlit数据库,官网下载地址:https://www.sqlite.org/download.html 下载: sqlite-dll-win64-x64-3390400.zip或者32位sqlite-dll-win32 sqlite-tools-win-x64-3440200.zip或者32位sqlite-tools-wi…

Opencv入门五 (显示图片灰度值)

源码如下&#xff1a; #include <opencv2/opencv.hpp> int main(int argc, char** argv) { cv::Mat img_rgb, img_gry, img_cny; cv::namedWindow("Example Gray",cv::WINDOW_AUTOSIZE); cv::namedWindow("Example Canny", cv::WINDOW_…

java获取时间相差8小时的各种情况

1&#xff1a;三种时间差错情况 1-1&#xff1a;java的new date&#xff08;&#xff09;获取的时间和本地时间相差8小时&#xff0c;解决方法 //可以main启动方法设置 TimeZone.setDefault(TimeZone.getTimeZone("GMT8"));1-2&#xff1a;存入mysql数据库的时候时间…

数据结构算法-二分查找算法

引言 二分查找算法 我们应该也不陌生 就在分治法把他说得彻彻底底了 但分而治之算法思想 只是算法的部分 递归 和循环那个效率高呢 很明显循环 所以不必要多说 直接干 二分查找算法核心思路 二分查找算法是一种在有序数组中查找特定元素的搜索算法。 它的核心思路是每次查找…

若依vue前端 报错error:0308010C:digital envelope routines::unsupported一步到胃的解决方法

第一步: 直接打开package.json 第二步: 直接替换scripts的内容为下面的内容 "scripts": {"dev": "SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-service serve","build:prod": "SET NODE_OPTIONS--openssl-leg…

无源晶振电路中两端电阻和电容的作用

无源晶振电路中两端电阻和电容的作用是什么&#xff0c;今天晶发电子就详细讲讲&#xff0c;具体如下&#xff1a; 一、并联电阻的作用 配合IC内部电路组成负反馈、移相&#xff0c;使放大器工作在线性区。 并联降低谐振阻抗&#xff0c;使无源晶振易启动。 并联电阻取值大小…

【深度学习】语言模型与注意力机制以及Bert实战指引之二

文章目录 前言 前言 这一篇是bert实战的完结篇&#xff0c;准备中。

BeanPostProcessor 接口的概述

目录 作用与功能 主要方法 使用场景 注意事项 结论 作用与功能 BeanPostProcessor 是 Spring 框架提供的一个扩展接口&#xff0c;允许开发者在 Spring 容器的 bean 创建过程中&#xff0c;即实例化及初始化阶段&#xff08;依赖注入之后&#xff09;&#xff0c;插入自定…

StringBad的构造函数和解析函数

// pass by value-程序清单 12.3 vegnews.cpp // vegnews.cpp -- using new and delete with classes // compile with strngbad.cpp #include <iostream> using std :: cout: finclude "strngbad.h"void callmel (StringBad 6): // pass by reference void ca…

Excel_VBA实现:弹出对话框进行打开另存(附FileDialog 属性)

excel_vba可实现弹窗进行人机交互&#xff0c;本案例实现弹窗选择需要打开的excel文件&#xff0c;选择文件后打开该文件&#xff0c;然后弹窗提示该文件另存为路径及目录&#xff0c;代码如下&#xff1a; Sub 打开文件对话框() On Error Resume Next With Application.FileD…