首页 > 其他分享 >HarmonyOS 发送系统通知 基础通知

HarmonyOS 发送系统通知 基础通知

时间:2024-03-14 18:30:59浏览次数:22  
标签:notificationManager console log 通知 ids 发送 HarmonyOS reason

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参数

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

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

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

标签:notificationManager,console,log,通知,ids,发送,HarmonyOS,reason
From: https://blog.csdn.net/weixin_45966674/article/details/136670594

相关文章

  • HarmonyOS 鸿蒙 arkts 自定义组件插槽
    HarmonyOS鸿蒙arkts中自定义组件中要传入其他组件的时候就可以使用自定义组件插槽。Container组件添加child属性后,表示该组件具备了额外添加子组件的能力,接下来在需要添加子组件的地方使用child属性做占位即可。自定义组件@ComponentexportstructContainer{@Bu......
  • 微信小程序开发中的推送消息和通知功能
    推送消息和通知功能在微信小程序开发中是非常常用的功能,可以用于向用户发送重要信息、活动通知等。本文将通过代码案例的方式来详细介绍微信小程序中的推送消息和通知功能。一、推送消息推送消息是指将消息发送给用户手机上的微信客户端,用户可以通过微信客户端接收和查看消息......
  • HarmonyOS-基础之开关切换案例
    需求,点击按钮切换图片代码:@Entry//代表组件的入口(类装饰器)@Component//代表的自定义的组件->组件配置路由->页面structIndex{//定义响应式数据(属性装饰器)@StateisOn:boolean=false;@Statecount:number=0;//build:书写UI地方//内部......
  • HarmonyOS-基础之HelloWorld
    1、工具安装后续补上2、创建工程3、点击右侧预览页面进行预览注意:如果没有预览页面的话我们就勾选出预览窗口view-->ToolWindows-->Previewer4、项目运行的三种方式(1)预览(2)模拟器(3)真机TODO很抱歉,没有鸿蒙系统的手机...后面买了开发机再补充上来4、......
  • 安语未公告通知
    亲爱的朋友们,首先,我要感谢大家在这段时间里对我的支持和关注。然而,我必须向大家传达一个令人遗憾的消息。根据2024年安语未公告,国内社交平台将暂时逐渐关闭,国际与国内暂时统一使用[email protected]邮箱保留联系。这意味着,我们将无法再通过QQ、微信、抖音、简书等平台进行及时沟通......
  • gitlab-ci 使用钉钉进行Job通知
    首先注册登录钉钉自行查询方法吧1、这里要提一下钉钉注册登录好之后在手机上是无法看到钉钉的webhook信息的,需要使用PC登录查看具体方法如下首先钉钉创建群聊,选择机器人  添加机器人 我这里添加了两个机器人gitlab 和自定义 先了解下gitlab机器人配置方法......
  • python实现发送邮件
    python实现自动化邮件发送测试环境:os:windows10编译软件:pycharm,python发送端:[email protected]接收端:[email protected],[email protected] 1.发送端需开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。我这里使用的是QQ,需要去mail.qq.com开启此服务:【登录】-【设置】-【账号】-【OP3/IMA......
  • Jmeter —— jmeter利用取样器中http发送请求
    使用Jmeter发送HTTP请求取样器是用来模拟用户操作,向服务器发送请求以及接收服务器的响应数据的一类元件,其中HTTP请求取样器是用来模拟常用的http请求的步骤如下:步骤一:添加线程组右击测试计划——添加——线程(用户)——线程组如下图:“线程组”的意思:JMeter是由Java实现的,并......
  • Rancher怎么设置把日志发送给elasticsearch
    搭建elascsearch集群不详述配置日志发送打开日志Rancher配置日志发送其实时在node启用了Daemonset使用fluentd进行日志收集#kubectlgetdaemonset-ncattle-loggingNAMEDESIREDCURRENTREADYUP-TO-DATEAVAILABLEN......
  • 带你走进 HarmonyOS:前端如何迎接新技术的到来
    一、HarmonyOS简介HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。2024年开始,更新后的鸿蒙,Androi......