HarmonyOS 发送系统通知 基础通知

harmonyos中 提供了 各种不同功能的通知 来满足我们不同的业务需求
本文呢 我们先来看 最基本的通知 它的场景和使用方式

最基本的 是 当应用被切入后台 而应用内部发生了一些变化 就可以用通知的方式 来提醒用户

就比如 我们微信 被切到了后台 而这时 别人发消息过来了
那么 通知栏 就会出现提示 让我们快去处理
在这里插入图片描述
也非常简单 调harmonyos提供的通知接口就OK了

首先 我们要在需要使用的地方 导入对应的包

import notificationManager from "@ohos.notificationManager"

这时一个 harmonyos 内置的工具
直接导入就好 不需要安装

然后 它的基础语法是

let request: notificationManager.NotificationRequest = {id: 10,content: {//通知内容}
}

id的话就是一个数字 只要保证 唯一性 就OK了
content 中装的通知内容
harmonyos中 有四类
在这里插入图片描述
话不多说 直接看
我们将 首页编写代码如下

import notificationManager from "@ohos.notificationManager"
@Entry
@Component
struct Dom {@State ids:number = 0;aboutToAppear(){}build() {Column({space: 30}) {Button("发送基本文本通知").onClick(()=>{let request: notificationManager.NotificationRequest = {id: this.ids++,content:{contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,normal:{title:'通知标题'+ this.ids,text:'通知内容详情',additionalText: '通知附加内容'}}}notificationManager.publish(request).then(()=> {console.log('发送通知成功')}).catch(reason => {console.log('发送通知失败',JSON.stringify(reason))})})}.width('100%').height('100%')}
}

这里 我们导入 @ohos.notificationManager
然后定义了一个 响应式数据 ids 主要是 避免通知id重复
然后 编写一个按钮
点击事假中 调用 notificationManager.NotificationRequest
id 用 ids ++ 这样 用于在增加 数字就不会有重复的
然后 类型 NOTIFICATION_CONTENT_BASIC_TEXT 基础文本型
标题 通知标题 拼接上 id号
然后 通知的内容 为 通知内容详情
附加 通知附加内容

我们手机开真机调试

然后 我们点击这个按钮
在这里插入图片描述
把手机的通知栏 往下拉 内容就出来了
在这里插入图片描述
然后 我们将代码修改成这样

import notificationManager from "@ohos.notificationManager"
@Entry
@Component
struct Dom {@State ids:number = 0;aboutToAppear(){}build() {Column({space: 30}) {Button("发送长文本").onClick(()=>{let request: notificationManager.NotificationRequest = {id: this.ids++,content:{contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_LONG_TEXT,longText: {title:'通知标题'+ this.ids,text:'通知内容详情',additionalText: '通知附加内容',longText: '通知中的长文本,我很长,我很长,我很长,我很长,我很长,我很长,我很长',briefText:'通知概要和总结',expandedTitle:'通知展开时的标题'+this.ids}}}notificationManager.publish(request).then(()=> {console.log('发送通知成功')}).catch(reason => {console.log('发送通知失败',JSON.stringify(reason))})})}.width('100%').height('100%')}
}

长文本类型 基本的语法都还是一样的 我们直接真机运行

会发现 基本还是一样的 不过 多了一个向下的小箭头
在这里插入图片描述
我们点开这个箭头 就可以看到下面的具体内容
在这里插入图片描述
然后 代码改成这样

import notificationManager from "@ohos.notificationManager"
@Entry
@Component
struct Dom {@State ids:number = 0;aboutToAppear(){}build() {Column({space: 30}) {Button("多行文本型").onClick(()=>{let request: notificationManager.NotificationRequest = {id: this.ids++,content:{contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_MULTILINE,multiLine: {title:'通知标题'+ this.ids,text:'通知内容详情',additionalText: '通知附加内容',briefText:'通知概要和总结',longTitle:'展开时的标题,我很宽,我很宽,我很宽',lines: ["第一行","第二行","第三行","第四行"]}}}notificationManager.publish(request).then(()=> {console.log('发送通知成功')}).catch(reason => {console.log('发送通知失败',JSON.stringify(reason))})})}.width('100%').height('100%')}
}

多行文本型
直接开真机调试
在这里插入图片描述
点击按钮后 还是这个样子 下面有一个向下箭头
然后 我们点击展开

这里 就会展示出 每一行的内容
在这里插入图片描述
最后一个是图片类型 那么 我们需要找一个图片放到 对应模块下的 media下面去
在这里插入图片描述
这里 我有个问题 图片最好用png的 好像jpg显示不出来

然后 我们将代码改成

import notificationManager from "@ohos.notificationManager"
import image from '@ohos.multimedia.image';
@Entry
@Component
struct Dom {@State ids:number = 0;pixel:PixelMap;async aboutToAppear(){let rm = getContext(this).resourceManager;//读取图片let file = await rm.getMediaContent($r("app.media.Text"));image.createImageSource(file.buffer).createPixelMap().then((value) => {this.pixel = value}).catch((reason) => {console.log('testTag','加载图片异常',JSON.stringify(reason))})}build() {Column({space: 30}) {Button("图片通知").onClick(()=>{let request: notificationManager.NotificationRequest = {id: this.ids++,content:{contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_PICTURE,picture: {title:'通知标题'+ this.ids,text:'通知内容详情',additionalText: '通知附加内容',briefText:'通知概要和总结',expandedTitle:'展开后标题'+this.ids,picture: this.pixel}}}notificationManager.publish(request).then(()=> {console.log('发送通知成功')}).catch(reason => {console.log('发送通知失败',JSON.stringify(reason))})})}.width('100%').height('100%')}
}

这是个 NOTIFICATION_CONTENT_PICTURE 图片型的通知 这里 需要一个 picture参数 类型会比较特殊
PixelMap 是三种图片格式的第二种 像素图
这里 我们在 aboutToAppear 生命周期中处理这个逻辑 加载 media模块下的 Test 资源文件 就是我们刚才放进去的那个图片
然后 将它转为 PixelMap 赋值给 pixel
然后 用 pixel 做 picture参数

我们真机运行
然后 我们开真机运行

这里 可能是我手机鸿蒙版本低 目前看不到图片 大家可以试试
在这里插入图片描述

这里 手机鸿蒙版本不同 效果查验可能就比较大

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

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

相关文章

AI人工智能改变项目管理及控制的5种方式,最后一个你认同吗?

前言 斯蒂芬霍金说:“AI is likely to be either the best or the worst thing to happen to humanity. 人工智能可能是发生在人类身上的最好或最坏的事情”。根据Gartner的说法,它将是前者。它预测到2020年,人工智能将减少1万个就业机会&am…

指纹芯片系列——ACM32FP0 二合一(主控+TK)锁控芯片,ACM32FP4三合一(主控+算法+语音)等介绍

随着智能设备的持续发展,指纹识别技术成为了现在智能终端市场和移动支付市场中占有率最高的生物识别技术。凭借高识别率、短耗时等优势,被广泛地运用在智能门锁、智能手机、智能家居等设备上。 我们推荐的在2015年进入指纹识别应用领域,自研高…

使用ChatGPT高效完成简历制作[中篇]-有爱AI实战教程(五)

演示站点: https://ai.uaai.cn 对话模块 官方论坛: www.jingyuai.com 京娱AI 导读:在使用 ChatGPT 时,当你给的指令越精确,它的回答会越到位,举例来说,假如你要请它帮忙写文案,如果没…

基本数据类型介绍

整数类型:byte、short、int、long Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。 定义long类型的变量,赋值时需要以"l"或"L"作为后缀。 Java程序中变量通常…

【教学类-34-10】20240313 春天拼图(Midjounery生成线描图,4*4格拼图块)(AI对话大师)

作品展示: 背景需求: 利用华文彩云空心字(粗胖字体。凑满9个拼图)制作了3*3的拼图块 【教学类-34-09】20240310华文彩云学号拼图(3*3格子浅灰底图 深灰拼图块)(AI对话大师)-CSDN博…

Apache Paimon系列之:主键表

Apache Paimon系列之:主键表 一、主键表1.Bucket2.LSM Trees3.Compaction 二、数据分布1.固定Bucket2.动态Bucket3.正常动态Bucket模式4.跨分区更新插入动态存储桶模式 三、Merge Engine1.Deduplicate2.部分更新3.序列组4.聚合部分更新5.聚合6.Retract7.First Row 四…

离散化算法,以Acwing802.区间和为例子(C++实现)

目录 1.例题2.算法实现思路3.代码 1.例题 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c接下来,进行 m 次询问,每个询问包含两个整数 l 和 r&#…

【并行程序设计】实验一使用MPI6个基本函数编写并行程序

目录 一、上机目的二、上机内容与要求三、上机结果 一、上机目的 1.了解所用的并行程序设计平台的基本操作方法,学会独立部署和使用该平台。 2.了解在该系统上如何编辑、编译、连接和运行一个并行程序。 3. 通过编写运行简单的并行程序,初步了解并行源程…

[Linux][CentOs][Mysql]基于Linux-CentOs7.9系统安装并配置开机自启Mysql-8.0.28数据库

目录 一、准备工作:获取安装包和相应工具 (一)所需安装包 (二)安装包下载链接 (三)在服务器上创建文件夹并上传安装包 二、安装MySql (一)删除系统自带的mariadb …

Windows kafka 简单集群搭建

Windows kafka 简单集群搭建 文章目录 Windows kafka 简单集群搭建1.环境说明2.Zookeeper集群搭建2.1 ZooKeeper下载2.2 ZooKeeper安装2.2.1 解压zookeeper-3.4.8.tar.gz2.2.2 进入conf目录下,复制zoo_sample.cfg为zoo.cfg2.2.3 修改zoo.cfg文件2.2.4 生成myid文件2…

【C语言】Windows下的C语言线程编程详解

文章目录 1. 头文件1.1 windows.h1.2 process.h 2. 创建线程3. 线程同步3.1 线程同步方式3.1 互斥量(Mutex)3.2 事件(Event) 4. 线程的结束与资源管理5.线程池(简要) 在Windows平台下,C语言提供…

ChatGPT功能让你嘎嘎提升写代码效率和质量

PS: ChatGPT无限次数,无需魔法,登录即可使用,网页打开下面 tj4.mnsfdx.net 点击跳转链接 5个ChatGPT功能嘎嘎提升写代码效率和质量 ChatGPT在代码开发方面带来了巨大变革,尽管如此,仍有许多软件开发人员未能充分利用ChatGPT来优…