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%')
  }
}
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值