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

news2025/1/20 21:58:41

上篇回顾: 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%')
  }
}

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

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

相关文章

大物3错题整理

平衡位置&#xff1a;在O点上的位置 相位&#xff1a; 当N很大的时候&#xff0c;wxwywz。因此&#xff0c;平均平动动能除以3&#xff0c;就是能量均分定理。 W F在x上的积分 Π时无单位 180&#xff0c;就是单位 1rad&#xff0c;rad就是单位 左手定则、右手定则、安培定…

金融科技如何多角度助力小微企业融资

一、引言 在全球化与数字化交织的时代背景下&#xff0c;金融科技&#xff08;FinTech&#xff09;作为新兴力量&#xff0c;正逐步改变传统的金融业态&#xff0c;尤其在助力小微企业融资方面&#xff0c;金融科技展现出了多元化的价值和优势。本文将从不同角度探讨金融科技如…

数据同步软件有哪些

数据同步软件有哪些呢&#xff1f;随着企业规模的扩大&#xff0c;企业数据也积累得越来越多&#xff0c;万一发生宕机风险&#xff0c;那么这个损失将不可估量。所以为了容灾备用&#xff0c;我们往往需要将数据同步到另一台备胎服务器上&#xff0c;进行冗余。 那么需要同步的…

适配手机《植物大战僵尸杂交版》最新整合包,附Android、iOS、Windows保姆级教程和工具合集!

最近&#xff0c;新版的《植物大战僵尸杂交版》火爆全网啊&#xff01;许多小伙伴不知道手机和电脑怎样安装设置才能畅玩《杂交版》&#xff0c;所以今天阿星特意为大家准备了一份安装工具集。 里面有安卓、iOS及电脑端的安装包&#xff0c;包含安装视频教程、修改器、防闪退、…

论文阅读《One-Step Image Translation with Text-to-Image Models》

Abstract. 在这项工作中&#xff0c;我们解决了现有条件扩散模型的两个局限性&#xff1a;迭代去噪过程导致的推理速度慢&#xff0c;以及模型微调对配对数据的依赖。为了解决这些问题&#xff0c;我们引入了一种通用方法&#xff0c;通过对抗学习目标将单步扩散模型适应新任务…

【C++】string基本用法(常用接口介绍)

文章目录 一、string介绍二、string类对象的创建&#xff08;常见构造&#xff09;三、string类对象的容量操作1.size()和length()2.capacity()3.empty()4.clear()5.reserve()6.resize() 四、string类对象的遍历与访问1.operator[ ]2.正向迭代器begin()和end()3.反向迭代器rbeg…

昇思25天学习打卡营第10天 | 基于MindNLP+MusicGen生成自己的个性化音乐

基于MindNLPMusicGen生成自己的个性化音乐 MusicGen是来自Meta AI的Jade Copet等人提出的基于单个语言模型&#xff08;LM&#xff09;的音乐生成模型&#xff0c;能够根据文本描述或音频提示生成高质量的音乐样本&#xff0c;相关研究成果参考论文《Simple and Controllable …

Keepalive技术

文章目录 一、Keepalive基础vrrp技术Keepalived介绍Keepalived架构 二、 Keepalived 相关文件配置文件组成全局配置虚拟路由器配置 三、配置lvs和keepalive联动服务器架构抢占模式配置配置单播、组播配置通知模块日志功能脑裂现象 四、keepalived和nginx联动keepalive和其他应用…

html文章卡片

完成效果 中医网站的文本卡片制作&#xff0c;其中用到了grid布局 css基础知识回顾 阴影样式 好的阴影样式可以保存 box-shadow: 6px 6px 5px hsla(0, 0%, 0%, 0.02), 25px 25px 20px hsla(0, 0%, 0%, 0.03), 100px 100px 80px hsla(0, 0%, 0%, 0.05); grid-template-column…

Python的numpy简单使用

1.可以调用引入numpy里面的函数&#xff0c;如add可以把俩数相加&#xff0c;也可以创建一个数组arr&#xff0c;arr.shape是数组arr的属性&#xff0c;如果后有跟&#xff08;&#xff09;就是里面的一个函数 type()函数可以知道里面是什么类型 变量.shape可以知道这个变量是…

这些并发编程技术你都知道吗?

与其碌碌无为&#xff0c;不如兴风作浪。 虽然不是所有的系统都需要很多的并发编程技术&#xff0c;但是掌握常见的高并发秘籍&#xff0c;便能让我们的系统快起来&#xff0c;面对访问量的剧增从容应对。 接下来&#xff0c;为我们一起来看看常见的高并发技术有哪些。总结起来…

NAS教程丨铁威马如何登录 SSH终端?

适用型号&#xff1a; 所有TNAS 型号 如您有特殊操作需要通过 SSH 终端登录 TNAS&#xff0c;请参照以下指引&#xff1a; (注意: 关于以下操作步骤中的"cd /"的指令,其作用是使当前 SSH/Telnet 连接的位置切换到根目录,以免造成对卷的占用.请不要遗漏它.) Windows…

Django 对模型创建的两表插入数据

1&#xff0c;添加模型 Test/app8/models.py from django.db import modelsclass User(models.Model):username models.CharField(max_length50, uniqueTrue)email models.EmailField(uniqueTrue)password models.CharField(max_length128) # 使用哈希存储密码first_name …

Excel 数据筛选难题解决

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

leetCode.98. 验证二叉搜索树

leetCode.98. 验证二叉搜索树 题目描述 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(n…

Spring 动态增强逻辑执行分析

1、假如UserService中存在被增强的public 普通方法&#xff0c;那么spring ioc时就会创建对应的代理对象放置到容器中&#xff1b; 2、那么Controller中注入的userService就是代理对象&#xff1b; Service public class UserService {Transactionalpublic void f2(String us…

理解GPT2:无监督学习的多任务语言模型

目录 一、背景与动机 二、卖点与创新 三、几个问题 四、具体是如何做的 1、更多、优质的数据&#xff0c;更大的模型 2、大数据量&#xff0c;大模型使得zero-shot成为可能 3、使用prompt做下游任务 五、一些资料 一、背景与动机 基于 Transformer 解码器的 GPT-1 证明…

WDG看门狗

1 WDG 1.1 简介 WDG是看门狗定时器&#xff08;Watchdog Timer&#xff09;的缩写&#xff0c;它是一种用于计算机和嵌入式系统中的定时器&#xff0c;用来检测和恢复系统故障。 看门狗就像是一个忠诚的宠物狗&#xff0c;它时刻盯着你的程序&#xff0c;确保它们正常运行。…

WordPress中文网址导航栏主题风格模版HaoWa

模板介绍 WordPress响应式网站中文网址导航栏主题风格模版HaoWa1.3.1源码 HaoWA主题风格除行为主体导航栏目录外&#xff0c;对主题风格需要的小控制模块都开展了敞开式的HTML在线编辑器方式的作用配备&#xff0c;另外预埋出默认设置的编码构造&#xff0c;便捷大伙儿在目前…

python解锁图片相似度的神奇力量

在这个信息爆炸的时代,图片成为了我们传递信息、表达情感和记录生活的重要方式。然而,面对海量的图片资源,如何快速准确地找到相似的图片,成为了一个亟待解决的问题。现在,让我们为您揭开图片相似度的神秘面纱,带您领略这一创新技术的魅力! 图片相似度技术,就像是一位…