HarmonyOS--后台代理提醒

news2024/9/23 11:26:13

一、概述

        HarmonyOS提供后台代理提醒功能,在应用退居后台或退出后,计时和提醒通知功能被系统后台代理接管。后台代理提醒就是由系统后台进程代理应用的提醒功能。后台代理提醒服务通过reminderAgentManager模块提供提醒定义、创建提醒、取消提醒等能力。

后台代理提醒业务类型:

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

         

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

        

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

         

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

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

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

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

二、给你的应用添加提醒--前置条件

        1、添加后台代理提醒使用权限

"module": {
  // ...
  "requestPermissions": [
    {
     "name": "ohos.permission.PUBLISH_AGENT_REMINDER"
    }
  ]
}

         2、导入后台代理提醒reminderAgentManager模块

        将此模块命名为reminderAgentManager

import { reminderAgentManager } from '@kit.BackgroundTasksKit';

三、给你的应用添加提醒--新增提醒实现

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

import { reminderAgentManager } from '@kit.BackgroundTasksKit';
// ...

export class ReminderService {
  public addReminder(alarmItem: ReminderItem, callback?: (reminderId: number) => void) {
    let reminder = this.initReminder(alarmItem);
    reminderAgentManager.publishReminder(reminder, (err, reminderId) => {
      if (callback != null) {
        callback(reminderId);
      }
    });
  }
   
  private initReminder(item: ReminderItem): reminderAgentManager.ReminderRequestAlarm {
    return {
      reminderType: item.remindType,
      hour: item.hour,
      minute: item.minute,
      daysOfWeek: item.repeatDays,
      title: item.name,
      ringDuration: item.duration * CommonConstants.DEFAULT_TOTAL_MINUTE,
      snoozeTimes: item.intervalTimes,
      timeInterval: item.intervalMinute * CommonConstants.DEFAULT_TOTAL_MINUTE,
      actionButton: [
        {
          title: '关闭',
          type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
        },
        // ...
      ],
      wantAgent: {
        pkgName: CommonConstants.BUNDLE_NAME,
        abilityName: CommonConstants.ABILITY_NAME
      },
      notificationId: item.notificationId,
      // ...
    }
  }
    
  // ...
}

        2、发布提醒

import { reminderAgentManager } from '@kit.BackgroundTasksKit';
// ...

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

四、给你的应用添加提醒--删除提醒实现

import { reminderAgentManager } from '@kit.BackgroundTasksKit';
// ...

export class ReminderService {
  public deleteReminder(reminderId: number) {
    reminderAgentManager.cancelReminder(reminderId);
  }
        
  // ...
}

五、给你的应用添加提醒--修改提醒实现

        需要先进行旧提醒的删除,再新增新的提醒。 

public async setAlarmRemind(alarmItem: AlarmItem) {
  let index: number = await this.findAlarmWithId(alarmItem.id);
  if (index !== CommonConstants.DEFAULT_NUMBER_NEGATIVE) {
    this.reminderService.deleteReminder(alarmItem.id);
  } else {
    // ...
  }

  this.reminderService.addReminder(alarmItem, (newId: number) => {
    alarmItem.id = newId;
    // ...
  })
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2099900.html

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

相关文章

zdppy+vue3+onlyoffice文档管理系统实战 20240902 上课笔记 登录功能优化

遗留问题 1、登录以后跳转最近文档2、如果用户没有登录应该自动跳转登录页面3、如果用户的token校验失败,应该自动调整登录界面4、按回车键自动跳转登录页面 登录以后跳转最近文档 const router useRouter() router.push("/")实际代码: c…

C++篇:C向C++迈进(下)

目录 引言 缺省参数 1.缺省参数的概念 2.缺省参数的分类 2.1 全缺省 2.2 半缺省 3.注意事项 函数重载 1.函数重载的定义 2.函数重载的基本规则 3.函数重载的运用场景 引用 1.引用的概念 2.引用的主要特性 3.常引用 4.引用的使用场景 4.1 函数参数传递 4.2 函…

计算机网络-VRRP基础概念

回顾一下以前我们学习的网络通信基础,终端通过交换机可以相互进行通信,而如果是不同网段间的通信需要经过三层网关,网关进行路由寻址和转发,所以基本的网络结构就是终端--交换机--路由器网关--网络出口--Internet。 一、VRRP虚拟路…

逻辑回归算法详解

目录 原理推导 逻辑回归求解 项目实战--信用卡欺诈检测 数据分析与预处理 数据读取与分析 样本不均衡解决方案 特征标准化 下采样方案 交叉验证 模型评估方法 正则化惩罚 逻辑回归模型 参数对结果的影响 混淆矩阵 分类阈值对结果的影响 过采样方案 SMOTE数据生…

点击率预测模型Embedding层的学习和训练

导读: 本文将简要介绍推荐模型的发展历史,现状,和下一步的研究趋势。并重点介绍针对embedding数据的模型训练及优化。主要包含以下几大部分内容: CTR预测模型(CTR Models)连续值处理(Continuou…

OpenAI“草莓项目”最快今年秋季发布!苹果将于9月10号推出首款AI iPhone|AI日报

文章推荐 吴恩达辞任Landing AI CEO,专注AI投资?数学家斯蒂芬预言哲学家引领AI未来|AI日报 与人类产生情感共鸣?数字华夏推出“夏澜”人形机器人;微软Azure AI语音服务推出虚拟人形象|AI日报 今日热点 …

行程问题

某直升机原定以260公里的时速飞往目的地,因任务紧急,飞行时速提高到360公里,结果提前1小时到达,则总的航程是( )公里。 A 900 B 936【正确答案】 C 1200 D 1296 第一步,本题考察行程问题&#x…

自行车租赁管理系统设计与实现

第三章 系统分析 3.1 系统可行性分析 可行性研究(Feasibility Study)是通过对项目的主要内容和配套条件,如市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等,从技术、经济、工程等方面进行调查研究和分析比较&…

使用mybatis对学生管理系统的完整功能实现

一、什么是mybatis: MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Pla…

大赛题目公布,鸣志电器,对不起了

大家好,我是博主,夏目 即9/2发布组织第一届 电机电磁仿真大赛后,有很多朋友跃跃欲试,但也有不少顾虑。 跃跃欲试的原因是,对于这种新颖的活动,参与其中,也是一种乐趣,一种经验的积…

什么是I2C总线?

1.什么是I2C? 1.1 I2C的由来 在电视机内部电路中,众多功能需要用到许多集成电路IC来实现,包括主控器件微控制器和众多外围设备器件。这些器件相互之间要传递数据信息,那么就需要用导线相互连接,如此众多IC器件的互连&…

ArcGIS Pro 发布松散型切片

使用ArcGIS Pro发布松散型切片问题,有时候会出现切片方案写了松散型,但是自动切片完成后依然是紧凑型的问题,这时候可以采用手动修改然后再切片的方式。 1. 发布切片服务 选择手动切片方式 2. 手动修改服务的切片方案文件 修改cache服务…

htop的使用详解

1. htop简介: htop 是一个基于 ncurses 的跨平台进程查看器。 它与 top 类似,但允许您垂直和水平滚动,并使用指针设备(鼠标)进行交互。您可以观察系统上运行的所有进程及其命令行参数,以及以树形格式查看它…

Golang | Leetcode Golang题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; func isSubsequence(s string, t string) bool {n, m : len(s), len(t)f : make([][26]int, m 1)for i : 0; i < 26; i {f[m][i] m}for i : m - 1; i > 0; i-- {for j : 0; j < 26; j {if t[i] byte(j a) {f[i][j] i} else {…

Python | Leetcode Python题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; class Solution:def isSubsequence(self, s: str, t: str) -> bool:n, m len(s), len(t)f [[0] * 26 for _ in range(m)]f.append([m] * 26)for i in range(m - 1, -1, -1):for j in range(26):f[i][j] i if ord(t[i]) j ord(a) el…

软件工程-图书管理系统的需求分析

软件需求规格说明书 目录 软件需求规格说明书 一、引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 二、任务概述 2.1目标 2.2用户特点 2.3假定和约束 三、需求规定 3.1功能划分 3.1.1系统功能组成 3.1.2功能编号和优先级 3.2功能描述 3.3性能 3.4输入输出 …

VUE2.0 elementUI el-input-number 数据更新,视图不更新——基础积累

今天遇到一个问题&#xff0c;是关于el-input-number组件的&#xff0c;发现数据明明已经更改了&#xff0c;但是页面上组件输入框中还是之前的值。 比如上方输入框中&#xff0c;我输入120.5&#xff0c;就会出现下面的诡异现象 回显此值是120.779&#xff0c;但是页面上输入…

WPF MVVM如何在ViewModel直接操作控件对象

早些年在WPF中使用COM组件时&#xff0c;需要在ViewModel中操作COM组件中的控件对象&#xff0c;但是这个控件对象又不支持绑定&#xff0c; 后面的解决办法是在窗口加载时&#xff0c;将控件对象以参数传递到Loaded事件的处理命令中&#xff0c;然后将这个对象记录下来&#…

uniapp基础知识点补充

一. 响应式单位rpx和绝对单位px 1.px的作用及理解 绝对单位&#xff1a;px 是一个绝对单位&#xff0c;表示屏幕上的实际像素数量,不随屏幕尺寸或分辨率变化而变化。广泛适用&#xff1a;在Web开发中广泛使用&#xff0c;适用于各种浏览器和设备,适用于CSS中的各种属性&#xf…

线性代数 第四讲 极大线性无关组,等价向量组,向量组的秩

文章目录 1.极大线性无关组2.等价向量组2.1 等价向量组的判断 3.向量组的秩4.等价矩阵和等价向量组5. 重难点题型总结5.1 极大线性无关组的计算5.2 AB的行向量表示与AB的列向量表示 1.极大线性无关组 定义: 在一个向量组中&#xff0c;取部分向量组成新的向量组&#xff0c;这…