ArtTS系统能力-通知的学习(3.1)

上篇回顾: ArtTS语言基础类库-容器类库内容的学习(2.10.2)

本篇内容: ArtTS系统能力-通知的学习(3.1)

一、 知识储备

1. 基础类型通知

按内容分成四类:

类型描述
NOTIFICATION_CONTENT_BASIC_TEXT普通文本类型
NOTIFICATION_CONTENT_LONG_TEXT长文本类型
NOTIFICATION_CONTENT_MULTILINE多行文本类型
NOTIFICATION_CONTENT_PICTURE图片类型

2. 带进度类型通知

在这里插入图片描述

3. 带事件响应类型通知

二、 效果一览

在这里插入图片描述

三、 源码剖析

import notificationManager from '@ohos.notificationManager'
import http from '@ohos.net.http'
import ResponseCode from '@ohos.net.http'
import image from '@ohos.multimedia.image'
import wantAgent from '@ohos.app.ability.wantAgent'

function basicText() {

  let notificationRequest = {
    id: 1,
    content: {
      contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
      normal: {
        title: '通知类型',
        text: '普通文本类型',
        additionalText: '我是补充标题'
      }
    }
  }

  notificationManager.publish(notificationRequest, err => {
    if (err) {
      console.error(`普通文本类型通知发布失败: ${err}`)
      return;
    }
    console.info('普通文本类型通知发布成功')
  })
}

function longText() {
  let notificationRequest = {
    id: 2,
    content: {
      contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_LONG_TEXT,
      longText: {
        title: '通知类型', //无效
        text: '长文本类型', //无效
        additionalText: '我是补充标题 ',

        longText: '我是长文本我是长文本我是长文本',
        briefText: '我是简明信息', //无效
        expandedTitle: '我是扩展文本'
      }
    }
  }

  notificationManager.publish(notificationRequest, err => {
    if (err) {
      console.error('长文本类型通知发布失败:' + err)
      return;
    }
    console.info('长文本类型通知发布成功')
  })
}

function multiline() {
  let notificationRequest = {
    id: 3,
    content: {
      contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_MULTILINE,
      multiLine: {
        title: '通知类型', //无效
        additionalText: '我是补充标题',
        text: '多行文本类型', //无效
        briefText: '我是简明信息', //无效
        longTitle: '我是长文本标题',
        lines: ['第一行', '第二行', '第三行', '第四行', '第五行']
      }
    }
  }

  notificationManager.publish(notificationRequest, err => {
    if (err) {
      console.error(`多行文本通知发布失败: ${err}`)
      return;
    }
    console.info('多行文本通知发布成功')
  })
}

function picture() {
  let imgUrl: string = 'https://img1.baidu.com/it/u=3241660985,1063915045&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=1194';
  http.createHttp().request(imgUrl, (err, data) => {
    if (err) {
      console.error(`err is ${JSON.stringify(err)}`)
    } else {
      let code = data.responseCode;
      if (ResponseCode.ResponseCode.OK == code) {
        let res: any = data.result;
        let imageSource = image.createImageSource(res)
        let options = {
          alphaTye: 0, //透明度
          editable: false, //是否可编辑
          pixelFormat: 3, //像素格式
          scaleMode: 1, //缩略值
          size: { height: 100, wight: 100 } //创建图片大小
        }
        imageSource.createPixelMap(options).then(pixelMap => {
          let imagePixelMap: PixelMap = undefined;

          imagePixelMap = pixelMap;

          let notificationRequest = {
            id: 4,
            content: {
              contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_PICTURE,
              picture: {
                title: '通知类型',
                text: '图片通知',
                additionalText: '我是补充标题',
                briefText: '我是简明信息',
                expandedTitle: '扩展消息',
                picture: imagePixelMap
              }
            }
          }

          notificationManager.publish(notificationRequest, err => { //	官方解释 :2024.06.30 图片类型通知。(预留能力,暂未支持)。
            if (err) {
              console.error(`图片类型通知发布失败: ${err}`)
              return;
            }
            console.info('图片类型通知发布成功')
          })
        })
      }
    }
  })
}

function progress() {
  let progress = 1;
  // for (let i = 0; i < 100; i++) {
  //   setTimeout(() => {
  //     progress += 1;
  //
  //   }, 100);
  // }

  //需要先查询系统是否支持进度条模板
  notificationManager.isSupportTemplate('downloadTemplate').then((data) => {
    let isSupport: boolean = data;
    if (isSupport) {
      let notificationRequest = {
        id: 5,
        content: {
          contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
          normal: {
            title: '下载通知',
            text: '我正在下载',
            additionalText: '下载通知标题'
          }
        },
        template: { // 构造进度条模板,name字段当前需要固定配置为 downloadTemplate
          name: 'downloadTemplate',
          data: {
            title: '文档下载',
            fileName: '阿吉',
            progressValue: 22
          }
        }
      }

      notificationManager.publish(notificationRequest, err => {
        if (err) {
          console.error(`下载进度提醒失败 ${err}`)
          return;
        }
        console.info('下载进度提醒正常')
      })
    }
  }).catch(err => {
    console.error(`暂不支持:${err.message}`)
  })
}

function action() {
  let wantAgentObj = null; //用于保存创建成功的wantAgent对象,后续使用其完成触发的动作
  let wantAgentInfo = { //通过 wantAgentInfo的operationType设置动作类型
    wants: [
      {
        deviceId: '',
        bundleName: 'com.aji.first',
        abilityName: 'com.aji.first.SecondAbility',
        action: '',
        entities: [],
        uri: '',
        parameters: {}
      }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
    wantAgentFlags: [wantAgent.WantAgentFlags.CONSTANT_FLAG]
  }

  wantAgent.getWantAgent(wantAgentInfo, (err, data) => {
    if (err) {
      console.error('失败: ' + JSON.stringify(err))
    } else {
      wantAgentObj = data;
    }
  })

  let notificationRequest = {6
    id: 6,
    content: {
      contentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
      normal: {
        title: '标题',
        text: '进入应用',
        additionalText: '欢迎再次使用'
      },
      label: '阿吉',
      wantAgent: wantAgentObj
    }
  }

  notificationManager.publish(notificationRequest, err => {
    if (err) {
      console.error('发布失败' + err)
      return;
    }
    console.info('发布成功')
  })
}


@Entry
@Component
struct Index {
  build() {
    Column() {
      Button('普通文本类型').onClick(() => {
        basicText();
      })
        .margin(20)

      Button('长文本类型').onClick(() => {
        longText();
      })
        .margin(20)

      Button('多行文本类型').onClick(() => {
        multiline();
      })
        .margin(20)

      Button('图片类型').onClick(() => {
        picture();
      })
        .margin(20)

      Button('进度条类型').onClick(() => {
        progress();
      })
        .margin(20)

      Button('带意图类型').onClick(() => {
        action();
      })
        .margin(20)

    }
    .width('100%')
    .height('100%')
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于STM32的智能农业环境监控系统

目录 引言环境准备智能农业环境监控系统基础代码实现&#xff1a;实现智能农业环境监控系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景&#xff1a;农业环境管理与优化问题解决方案与优化收尾与总结 1. 引言 智能农业环境监控系…

Linux rpm与yum

一、rpm包管理 rpm用于互联网下载包的打包及安装工具&#xff0c;它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager (RedHat软件包管理工具&#xff09;的缩写&#xff0c;类似windows的setup.exe&#xff0c;这一文件格式名称虽然打上了R…

技术打包 催化剂浸渍制作方法设备

网盘 https://pan.baidu.com/s/1Bybbyy5qEA2uTUlaELmWwg?pwdepdk 改性加氢处理催化剂载体、催化剂及其制备方法和应用.pdf 水滑石基催化剂在高浓度糖转化到1,2-丙二醇中的应用.pdf 海泡石负载铁锰双金属催化剂及其制备方法和应用.pdf 甘油氢解催化剂及其制备方法和应用.pdf 用…

LeetCode-Leetcode 1120:子树的最大平均值

LeetCode-Leetcode 1120&#xff1a;子树的最大平均值 题目描述&#xff1a;解题思路一&#xff1a;递归解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给你一棵二叉树的根节点 root&#xff0c;找出这棵树的 每一棵 子树的 平均值 中的 最大 值。 子…

Redis 7.x 系列【10】数据类型之有序集合(ZSet)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 ZADD2.2 ZCARD2.3 ZSCORE2.4 ZRANGE2.5 ZREVRANGE2.6 ZRANK2.7…

ssm网上旅游信息管理系统-计算机毕业设计源码06975

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据新增流程 2.2.2 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 系统总体设…

【课程总结】Day13(上):使用YOLO进行目标检测

前言 在上一章《【课程总结】Day11&#xff08;下&#xff09;&#xff1a;YOLO的入门使用》的学习中&#xff0c;我们通过YOLO实现了对图片的分类任务。本章的学习内容&#xff0c;将以目标检测为切入口&#xff0c;了解目标检测流程&#xff0c;包括&#xff1a;数据标准、模…

Spring Boot集成jasypt快速入门Demo

1.什么是Jasypt&#xff1f; Jasypt&#xff08;Java Simplified Encryption&#xff09;是一个专注于简化Java加密操作的工具。 它提供了一种简单而强大的方式来处理数据的加密和解密&#xff0c;使开发者能够轻松地保护应用程序中的敏感信息&#xff0c;如数据库密码、API密…

使用NFS网关功能将HDFS挂载到本地系统

HDFS安装教程 HDFS安装教程http://t.csdnimg.cn/2ziFd 使用NFS网关功能将HDFS挂载到本地系统 简介 HDFS提供了基于NFS&#xff08;Network File System&#xff09;的插件&#xff0c;可以对外提供NFS网关&#xff0c;供其它系统挂载使用。 NFS 网关支持 NFSv3&#xff0c;并…

DDD学习笔记四

领域模型的构建 基础领域模型的基本组成有名称、属性、关联、职责、事件和异常 发掘领域概念3种策略&#xff1a; 1&#xff09;学习已有系统&#xff0c;重用已有模型 2&#xff09;使用分类标签。分类标签来源于领域&#xff0c;需要我们研究一些资料并做一些提炼。从采用5W…

聚焦 HW 行动,构筑重保邮件安全防线

随着信息技术的飞速发展&#xff0c;网络安全已成为国家安全的重要组成部分。HW行动作为国家级网络安全演练&#xff0c;通过模拟实战攻防&#xff0c;检验和提升国家关键信息基础设施的防护能力。 CACTER凭借多年HW防护经验&#xff0c;提供全面的邮件安全防护体系&#xff0…

汽车电子行业知识:什么是车载智能座舱

1.什么是车载智能座舱 车载智能座舱是指搭载在汽车内部的一种智能系统&#xff0c;它集成了各种功能和技术&#xff0c;旨在提升驾驶体验、增加安全性和提供更多的便利。这种系统可以包括诸如智能驾驶辅助、信息娱乐、智能语音控制、车内环境控制、车辆健康监测等功能。通过车…

13_旷视轻量化网络--ShuffleNet V2

回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客 1.1 简介 ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型&#xff0c;主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本&#xff0c;重点在于提供更高效的模…

Java知识点整理 12 — 前端 Ant Design Pro 初始化模板使用

一. 项目初始化 Ant Design Pro 是基于 Ant Design 和 umi 封装的一整套企业级中后台前端设计框架&#xff0c;致力于在设计规范和基本组件的基础上&#xff0c;继续向上构建&#xff0c;提炼出典型模板或配套设计资源&#xff0c;进一步提升企业级中后台产品设计研发过程中的…

【Qt知识】window frame 对窗口坐标的影响

在Qt中&#xff0c;窗口框架&#xff08;Window Frame&#xff09;对Widget的尺寸计算和坐标定位有着直接的影响&#xff0c;这主要是因为窗口框架本身占据了一定的空间&#xff0c;包括标题栏、最小化/最大化/关闭按钮以及边框。这部分额外的空间在不同的应用场景下需要被考虑…

Android Graphics 显示系统 - BufferQueue的状态监测

“ BufferQueue作为连接生产者和消费者的桥梁&#xff0c;时刻掌握队列中每一块Buffer的状态&#xff0c;对于解决一些卡死卡顿问题很有帮助&#xff0c;辨别是否有生产者或消费者长期持有大量Buffer不放导致运行不畅的情况。” 01 — 前言 在Android系统中&#xff0c;应用U…

C#进阶-ASP.NET WebForms调用ASMX的WebService接口

ASMX 文件在 ASP.NET WebForms 中提供了创建 Web 服务的便捷方式&#xff0c;通过公开 Web 方法&#xff0c;允许远程客户端调用这些方法并获取数据。本文介绍了 ASMX 文件的基本功能、如何定义 WebService 接口、通过 HTTP 和 SOAP 请求调用 WebService 接口&#xff0c;以及使…

【ESP32】打造全网最强esp-idf基础教程——14.VFS与SPIFFS文件系统

VFS与SPIFFS文件系统 这几天忙着搬砖&#xff0c;差点没时间更新博客了&#xff0c;所谓一日未脱贫&#xff0c;打工不能停&#xff0c;搬砖不狠&#xff0c;明天地位不稳呀。 不多说了&#xff0c;且看以下内容吧~ 一、VFS虚拟文件系统 先来看下文件系统的定义&#x…

ThreadPoolExecutor 工作线程Worker自身锁设计

个人博客 ThreadPoolExecutor 工作线程Worker自身锁设计 | iwts’s blog 总集 想要完整了解下ThreadPoolExecutor&#xff1f;可以参考&#xff1a; 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog Worker-工作线程管理 线程池设计了内部类Worker&#xff0c;主…

【LeetCode】 740. 删除并获得点数

这真是一道好题&#xff01;这道题不仅考察了抽象思维&#xff0c;还考察了分析能力、化繁为简的能力&#xff0c;同时还有对基本功的考察。想顺利地做出这道题还挺不容易&#xff01;我倒在了第一步与第二步&#xff1a;抽象思维和化繁为简。题目的要求稍微复杂一些&#xff0…