Harmony OS 后台任务-代理提醒

news2025/2/24 9:12:14

三、代理提醒

传送门

1.什么是代理提醒

  • 应用退到后台或进程终止后,仍然有一些提醒用户的定时类任务,例如购物类应用抢购提醒等,为满足此类功能场景,系统提供了代理提醒(reminderAgentManager)的能力。当应用退至后台或进程终止后,系统会代理应用做相应的提醒。当前支持的提醒类型包括:
    • 倒计时:基于倒计时的提醒功能
    • 日历:基于日历的提醒功能
    • 闹钟:基于时钟的提醒功能
  • 不同的代理提醒主要是通过 reminderType 来设置
    • 倒计时 reminderAgentManager.ReminderType.REMINDER_TYPE_TIMER
    • 日历 reminderAgentManager.ReminderType.REMINDER_TYPE_CALENDAR
    • 闹钟 reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM
  • 倒计时类, 日历类, 闹钟类 代理提醒的操作步骤是一样的, 只不过最初始定义的对象内容不一样。

2.代理提醒限制

  • 一个三方应用支持最多30个有效提醒(有效即发布成功),一个系统应用支持最多10000个有效提醒,整个系统最多支持12000个有效提醒
  • 点击提醒通知后跳转的应用必须是申请代理提醒的本应用
  • 需要一个通知权限, 因为不管是闹钟还是倒计时, 到位以后需要一个提示出现,当你没有申请通知的时候, 这个代理提醒是不会生效的

3.代理提醒api

在这里插入图片描述

4.开启代理提醒

4.1 引入依赖
import { reminderAgentManager } from '@kit.BackgroundTasksKit'
import { notificationManager } from '@kit.NotificationKit'
4.2 通知权限申请
// 申请一下通知权限
notificationManager
  .isNotificationEnabled()
  .then((data: boolean) => {
    if (!data) {
      // 表示没有通知权限, 我们申请一个通知权限, 然后在发布代理提醒
      notificationManager
        .requestEnableNotification(this.context)
        .then(() => {
          // 用户同意了通知发送
          // sendReminder()
        })
        .catch(() => console.log('wuwuwu => 用户选择禁用按钮了'))
    } else {
      // 表示有通知权限, 直接发布代理提醒
      this.sendReminder()
    }
  })
  .catch(() => {
    console.log('wuwuwu => 检测到目前通知权限为禁用状态')
  })
4.3 创建 agent 对象
// 倒计时
@State targetReminderAgent: reminderAgentManager.ReminderRequestTimer = Object()
// 日历
@State targetReminderAgent: reminderAgentManager.ReminderRequestCalendar = Object()
// 闹钟
@State targetReminderAgent: reminderAgentManager.ReminderRequestAlarm = Object()
4.3 倒计时类提醒
  // 2. 初始化 agent 对象
  this.targetReminderAgent = {
    // 代理提醒类型
    reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_TIMER,
    // 触发时间( 多少秒以后 )
    triggerTimeInSeconds: 15,
    // ================ 以下为可选参数 ================
    // 通知的标题
    title: 'title',
    // 通知的内容
    content: 'content',
    // 通知的 id 编号( 两个一样的编号会覆盖 )
    notificationId: 111111,
    // 通知类型
    slotType: notificationManager.SlotType.SOCIAL_COMMUNICATION,
    // 给通知添加一些按钮
    actionButton: [
      {
        // 按钮名称
        title: '关闭按钮',
        // 按钮类型( 其实就是你点击按钮的时候能执行的操作 )
        // 关闭按钮的意思( 当你点击这个按钮的时候, 直接关闭通知 )
        type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
      }
    ],
    // 添加一个简单的 want 对象
    // 是被 reminder 修饰过的 want 对象( 只能添加一些简单的信息 )
    wantAgent: {
      // 当前 App 包名
      pkgName: 'com.example.mytask',
      // 对应拉起的 ability 名称
      abilityName: 'EntryAbility'
    }
  }
4.4 日历类提醒
this.targetReminderAgent = {
  reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_CALENDAR,
  dateTime: {
    // 指明提醒的目标时间
    year: 2024,
    month: 8,
    day: 12,
    hour: 15,
    minute: 30,
    second: 10
  },
  repeatMonths: [8], // 指明重复提醒的月份
  repeatDays: [12], // 指明重复提醒的日期
  wantAgent: {
    // 点击提醒通知后跳转的目标UIAbility信息
    pkgName: 'com.example.mybackgroundtask',
    abilityName: 'EntryAbility'
  },
  ringDuration: 5, // 指明响铃时长(单位:秒)
  snoozeTimes: 2, // 指明延迟提醒次数
  timeInterval: 5, // 执行延迟提醒间隔(单位:秒)

  title: 'this is title', // 指明提醒标题
  content: 'this is content', // 指明提醒内容
  expiredContent: 'this reminder has expired', // 指明提醒过期后需要显示的内容
  snoozeContent: 'remind later', // 指明延迟提醒时需要显示的内容
  notificationId: 1100, // 指明提醒使用的通知的ID号,相同ID号的提醒会覆盖
  slotType: notificationManager.SlotType.SOCIAL_COMMUNICATION // 指明提醒的Slot类型
}
4.5 闹钟类提醒
this.targetReminderAgent = {
  reminderType: reminderAgentManager.ReminderType.REMINDER_TYPE_ALARM,
  hour: 15, // 指明提醒的目标时刻
  minute: 50, // 指明提醒的目标分钟
  daysOfWeek: [1], // 指明每周哪几天需要重复提醒
  wantAgent: {
    // 点击提醒通知后跳转的目标UIAbility信息
    pkgName: 'com.example.mybackgroundtask',
    abilityName: 'EntryAbility'
  },
  actionButton: [// 设置弹出的提醒通知信息上显示的按钮类型和标题
    {
      title: 'close',
      type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_CLOSE
    },
    {
      title: 'snooze',
      type: reminderAgentManager.ActionButtonType.ACTION_BUTTON_TYPE_SNOOZE
    },
  ],
  ringDuration: 5, // 指明响铃时长(单位:秒)
  snoozeTimes: 2, // 指明延迟提醒次数
  timeInterval: 5, // 执行延迟提醒间隔(单位:秒)
  title: 'this is title', // 指明提醒标题
  content: 'this is content', // 指明提醒内容
  expiredContent: 'this reminder has expired', // 指明提醒过期后需要显示的内容
  snoozeContent: 'remind later', // 指明延迟提醒时需要显示的内容
  notificationId: 99, // 指明提醒使用的通知的ID号,相同ID号的提醒会覆盖
  slotType: notificationManager.SlotType.SOCIAL_COMMUNICATION // 指明提醒的Slot类型
}
4.6 发送提醒
reminderAgentManager.publishReminder(this.targetReminderAgent)
  .then(() => {
    console.log('wuwuwu => 发布定时提醒成功 ^_^')
  })
  .catch((err: BusinessError) => {
    console.log('wuwuwu => 发布定时提醒失败 : ' + JSON.stringify(err))
  })

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

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

相关文章

Linux系统使用Typecho搭建个人网站并一键发布公网远程管理本地站点

文章目录 前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 💡 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大…

Python 数据可视化,怎么选出合适数据的图表

数据可视化最佳实践 1. 引言:为什么数据可视化最佳实践很重要 数据可视化是数据分析和决策过程中不可或缺的一部分。通过有效的可视化,复杂的数据可以转化为易于理解的信息,从而帮助观众快速做出正确的判断。然而,糟糕的可视化可…

Qt-认识tT(1)

目录 QT是做什么的? 什么是QT GUI开发的各种技术方案 QT支持的平台 Qt的版本和优点 开发工具概述 Qt是做什么的? Qt是用来干嘛的? 什么是Qt Qt是⼀个跨平台的C图形用户界⾯应用程序框架。它为应用程序开发者提供了建立艺术级图形界⾯所…

Vue3+Ts封装类似el-drawer的抽屉组件

提供9个字段对drawer组件进行控制: modelValue: 对抽屉显示隐藏进行控制, width: 控制抽屉的宽度, title: 控制抽屉的标题, appendToBody: 是否将抽屉添加至body, closeOnClickModal: 是否点击遮罩层关闭抽屉, showConfirm: 是否显示确认按钮, showCancel: 是…

Linux网络:基于OS的网络架构

Linux网络:OS视角下的网络架构 网络分层模型OSI 七层模型TCP/IP 五层模型 协议操作系统与网络网络相关命令ifconfigpingnetstat 本博客将基于操作系统,讲解计算机网络的设计理念,帮助大家理解操作系统与网络之间的关系。 网络分层模型 网络…

DIAdem 与 LabVIEW

DIAdem 和 LabVIEW 都是 NI (National Instruments) 公司开发的产品,尽管它们有不同的核心功能和用途,但它们在工程、测试和测量领域中常常一起使用,以形成一个完整的数据采集、分析、处理和报告生成的解决方案。 1. 功能和用途 LabVIEW (Lab…

杭州造价信息_杭州造价信息网建设工程材料信息价

杭州造价信息,全称为《杭州造价信息》,简称为“杭州市信息价”或“杭州市建材信息价”,是杭州市建设工程主管部门发布的建筑建材市场指导价,也是杭州市建筑工程项目招标与结算的建材价格标准。这一信息由杭州市住建局或共享建材汇…

【深度学习基础】关于卷积神经网络你了解多少?

文章目录 卷积稀疏交互参数共享池化层全连接层转置卷积空洞卷积卷积神经网络与全连接神经网络 本篇博客主要是讲解一些本人对于卷积的理解,包括: 为什么会出现卷积操作?最基本的卷积操作?卷积的优缺点。空洞卷积等等。卷积操作牵扯…

启明智显借 AI 之翼重塑人机交互,强劲赋能智能硬件升级腾飞

在科技日新月异的今天,启明智显作为人机交互(HMI)与物联网人工智能(AIoT)硬件领域的领航者,正以前所未有的决心和行动力,推动着智能硬件行业的深刻变革。公司不仅致力于将最先进的人工智能技术融…

Java 中高级面试题:16题

1. Java 中有哪些不同类型的线程优先级?JVM 分配的线程默认优先级是多少? 线程优先级是这样的概念:每个线程都有一个优先级,用外行人的语言来说,可以说每个对象都有优先级,用 1 到 10 之间的数字表示。Jav…

Openleyer 获取features样式

目录 一、需求说明: 二、业务功能分析: 三、地图点击事件 四、地图要素select事件 五、地图双击事件 六、移动到地图点事件 一、需求说明: 若聚合情况下,点击聚合要素,若只有一个要素,则显示详情信息…

【安卓】WebView的用法与HTTP访问网络

文章目录 WebView的用法使用http访问网络使用HttpURLConnection使用OkHttp 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站。 WebView的用法 新建一个WebViewTest项目,然后修…

管易云与金蝶K3-WISE对接集成发货单查询打通新增其他出库

管易云与金蝶K3-WISE对接集成发货单查询打通新增其他出库 对接系统:管易云 管易云是金蝶旗下专注提供电商企业管理软件服务的子品牌,先后开发了C-ERP、EC-OMS、EC-WMS、E店管家、BBC、B2B、B2C商城网站建设等产品和服务,涵盖电商业务全流程。…

本地连接服务器上docker中的redis

在上一篇本地连接服务器redis这篇文章中详细介绍了。 这里连接服务器中docker中的redis,同样的操作步骤 1.看一下服务器上redis实例的运行状态: [rootiZuf67k70ucx14s6zcv54dZ var]# ps aux | grep redis-server若显示: 则说明服务器上do…

Denser Retriever: RAG中更强大的AI检索器,让您10 分钟内构建聊天机器人应用

一、Denser Retriever 介绍 Denser Retriever 是一个企业级的RAG检索器,将多种搜索技术整合到一个平台中。在MTEB数据集上的实验表明,Denser Retriever可以显著提升向量搜索(VS)的基线(snowflake-arctic-embed-m模型,…

如何在PyCharm使用conda虚拟环境,如何使用远程Linux系统上的conda虚拟环境。

目录 在PyCharm使用conda虚拟环境(windows) 使用远程Linux系统上的conda虚拟环境 在PyCharm使用conda虚拟环境(windows) 首先请创建好虚拟环境 点击输入 conda create -n pyspark python3.8 # conda create -n 名字任取 py…

智谱AI与和鲸科技签署战略合作协议,共拓大模型产业应用与人才培养新未来

8月9日,北京智谱华章科技有限公司(智谱 AI)与上海和今信息科技有限公司(和鲸科技)在北京签署战略合作协议。智谱 AI 总裁王绍兰与和鲸科技创始人、CEO 范向伟亲临现场,发表致辞并见证签约。智谱 AI AIGC 事…

Python软件包和PIP镜像下载地址

一、Python软件下载地址 1. 官网下载 https://www.python.org/downloads/ 2. 国内第三方镜像 https://mirrors.huaweicloud.com/python/ https://registry.npmmirror.com/binary.html?pathpython/ 从以上国内镜像即可下载安装程序,Windows平台,不论是In…

网络安全 DVWA通关指南 DVWA File Inclusion(文件包含)

DVWA File Inclusion(文件包含) 文章目录 DVWA File Inclusion(文件包含)本地文件包含(LFI)漏洞利用 远程文件包含(RFL)漏洞利用 修复建议 LowMediumHighImpossible 本地文件包含(LFI) 文件包含漏洞的产生原因是 PHP 语言在通过引…

我的世界 异地联机教程 无需公网IP、服务器

主要内容 什么是Minecraft(JAVA国际版) 搭建该服务,需要准备什么 详细步骤 1.启动器 安装MC并运行MC 2.运行 MoleSDN 进行异地联机 3.小伙伴皮蛋加入鼠鼠的MC 完成联机 什么是我的世界 一款3D沙盒电子游戏,由Mojang Studio…