【Harmony OS - 消息通知】

应用可以通过接口发送通知消息,提醒用户关注应用中的变化。用户可以在通知栏查看和操作通知内容,通常用于当应用处于后台时,发送,本文主要来介绍在Harmony OS中的三种消息通知。

基础通知

总体流程有三步:

  1. 导入notification模块
  2. 配置通知参数之后通过publish发布通知
  3. 取消通知

1、导入notification

import notificationManager from '@ohos.notificationManager';

2、发布通知

let request: notificationManager.NotificationRequest = {id: 0,content: {contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT}}notificationManager.publish(request).then(() => {console.log('发送通知成功')}).catch(err => {console.log('发送通知失败')})

这里的id就是通知的唯一标识,后续可以通过id然后调用cancel函数来取消通知。

其中conentType有四个枚举:
在这里插入图片描述
当contentType为图片型的时候,需要传入一个PixelMap的图片数据,这个可以通过提供这样的方式来获取:

// 获取资源管理器const resourcemanage = getContext(this).resourceManager;// 获取图片资源const imgFile = await resourcemanage.getMediaContent($r('xxxx'));// 创建PixelMap数据// image需要从@ohos.multimedia.image导入image.createImageSource(imgFile.buffer).createPixelMap().then(val => this.piexlMap = val).catch(err => console.log(err))

3、取消通知
Harmony O提供了两种方式来取消通知,第一种就是上方提到的根据id取消,第二种则是调用cancelAll来取消所有的通知信息。

notificationManager.cancel(id)
notificationManager.cancelAll()

详细的request请求参数api查看官网:NotificationRequest

进度条通知

进度条通知会展示一个动态的进度条,主要用于文件下载、长任务处理的实时进度显示
主要也是三步:

  • 判断系统是否支持进度条模版
  • 配置进度条模版参数
  • 根据参数发送模版通知

1、通过isSupportTemplate是否支持,异步返回Promose回调

const isSupport = await notificationManager.isSupportTemplate('process');
if(!isSupport) return;

2、配置进度条模版参数

const templateParams = {name: 'process',data: {progressValue: this.progressValue, // 当前进度值ProgressMaxValue: 100 // 进度条最大值}}const request: notificationManager.NotificationRequest = {id: 0,template: templateParams, // 较基础通知新增进度模版配置content: {} // 配置和基础通知一致}

3、根据参数发送模版通知

notificationManager.publish(request).then(() => {console.log('发送通知成功')
}).catch(err => {console.log('发送通知失败')
})

行为意图通知

我们可以给通知或者通知中的按钮设置行为意图,从而实现拉起应用组件或发布公共事件等能力。说白了,就是我们可以通过点击消息栏中的通知重新回到指定应用或者做一些事情。
主要是三个步骤:

  • 创建wantInfo,行为意图配置
  • 创建WantAgentInfo实例
  • 发送携带意图的通知
    1、 创建行为意图配置
const wantInfo: wantAgent.WantAgentInfo = {wants: [{deviceId: '', // 默认本机bundleName: 'com.example.myapplication', // 拉起的应用abilityName: 'EntryAbility', // 拉起当前应用的那个ability}],requestCode: 0,operationType: wantAgent.OperationType.START_ABILITY, // 拉起一个abilitywantAgentFlags: [wantAgent.WantAgentFlags.CONSTANT_FLAG]}

这里只是简单列了一些,具体请查看官网:WantAgentInfo

2、创建WantAgentInfo实例

// 创建wantAgent实例
const wantAgentInstance = await wantAgent.getWantAgent(wantInfo);

3、发送携带意图的通知
和发送进度条通知一样,在基础通知中添加一个配置wantAgent即可,

const request: notificationManager.NotificationRequest = {id: 0,template: templateParams,wantAgent: this.wantAgentInstance,content: {} // 配置和基础通知一致}// 发布行为意图通知notificationManager.publish(request).then(() => {console.log('发送通知成功')
}).catch(err => {console.log('发送通知失败')
})

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

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

相关文章

Mac M1 Parallels CentOS7.9 Install Jenkins

官网: https://www.jenkins.io/ 一、Install & Check Java Env Oracle官网下载Java: https://www.oracle.com/cn/ # 拷贝到Jenkins服务器 scp Downloads/jdk-8u391-linux-aarch64.tar.gz root10.211.55.34:~# 解压 mkdir -p /opt/java && tar -zxvf jdk-8u391-li…

类名.this:内部类引用外部类实例

类名.this是啥意思? 今天在看尚硅谷的课程时里面讲了这么一句话: 集合在遍历时需要先创建一个容器,存放集合的数据,这样做浪费内存 想去验证下,就翻了翻ArrayList的迭代过程源码 在ArrayList的迭代器类Itr(…

Vue过滤器详解

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介基本用法多个过滤器的串联过滤器在指令中的应用全局过滤器 ⭐ 本期推荐 ⭐ 专栏简介 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习。每…

螺纹钢负公差轧制中的测径仪应用

1、负公差轧制意义 为了满足生产使用要求,并根据轧制水平,在产品标准冲规定钢材尺寸的波动范围,允许钢材的实际尺寸与公称尺之间有一定的偏差,这个偏差一般称公差,公差分正、负公差,钢材按负公差轧制时&…

selenium不自动关闭chrome,selenium hello world

selenium不自动关闭chrome 用visual studio的话,右键,在终端运行。 from selenium import webdriveroptions webdriver.ChromeOptions() options.add_experimental_option("detach", True) driver webdriver.Chrome(optionsoptions) url …

详细分析Java中的分布式任务调度框架 XXL-Job

目录 前言1. 基本知识2. Demo3. 实战 前言 可视化任务调度 可视化配置 1. 基本知识 在Java中,分布式任务调度框架 XXL-Job 是一个开源的分布式任务调度平台,用于实现分布式系统中的定时任务调度和分布式任务执行。 下面是关于XXL-Job的一些概念、功…

Element-ui图片懒加载

核心代码 <el-image src"https://img-blog.csdnimg.cn/direct/2236deb5c315474884599d90a85d761d.png" alt"我是图片" lazy><img slot"error" src"https://img-blog.csdnimg.cn/direct/81bf096a0dff4e5fa58e5f43fd44dcc6.png&quo…

如何构建Prompt,帮我生成QA,作为召回率检索的测试集?

最近在做搜索召回率的提升工作。粮草未动兵马先行&#xff01;在做之前应该先有一把尺子来衡量召回率的好坏。所以应该先构建测试数据集&#xff0c;然后去做标准化测试。 有了测试机集以后。再去做搜索优化&#xff0c;才能看出来效果。 当然可以选择一些开源的测试集。如果可…

Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问

Github搭建图床 github搭建静态资源库 免费CDN加速 github搭建图床使用 jsdelivr CDN免费加速访问 前言1、创建仓库2、开启 gh-pages页面功能3、访问测试 前言 写博客文章时&#xff0c;图片的上传和存放是一个问题&#xff0c;使用小众第三方图床&#xff0c;怕不稳定和倒闭&…

流程控制详解

1、Java流程控制 主要涉及三大流程控制&#xff1a;顺序、分支、循环 如下图&#xff1a; 1&#xff09;流程2 存在对用户名和密码的校验&#xff0c;是否为空&#xff0c;存在分支控制 2&#xff09;流程3 用户名和密码在数据库是否存在&#xff0c;存在分支控制 3&#xf…

VS中动态库的创建和调用

VS中动态库的创建和调用 库 ​ 库是写好的现有的&#xff0c;成熟的&#xff0c;可以复用的代码。库的存在形式本质上来说库是一种可执行代码的二进制。 ​ 库有两种&#xff1a;静态库&#xff08;.a、.lib&#xff09;和动态库&#xff08;.so、.dll&#xff09;。所谓静态…

使用 Docker 和 Diffusers 快速上手 Stable Video Diffusion 图生视频大模型

本篇文章聊聊&#xff0c;如何快速上手 Stable Video Diffusion (SVD) 图生视频大模型。 写在前面 月底计划在机器之心的“AI技术论坛”做关于使用开源模型 “Stable Diffusion 模型” 做有趣视频的实战分享。 因为会议分享时间有限&#xff0c;和之前一样&#xff0c;比较简…