首页 > 其他分享 >【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(下)

【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(下)

时间:2023-10-04 20:46:33浏览次数:44  
标签:err 进度条 WantAgent 通知 wantAgent 中秋 HarmonyOS 模板

【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(下)

一、发布进度条类型通知

进度条通知也是常见的通知类型,主要应用于文件下载、事务处理进度显示。HarmonyOS提供了进度条模板,发布通知应用设置好进度条模板的属性值,如模板名、模板数据,通过通知子系统发送到通知栏显示。

目前系统模板仅支持进度条模板,通知模板NotificationTemplate中的data参数为用户自定义数据,用于显示与模块相关的数据,效果示意如下图所示。
file

接口说明

isSupportTemplate()是查询模板是否支持接口,目前仅支持进度条模板。

接口名 描述
isSupportTemplate(templateName: string, callback: AsyncCallback): void 查询模板是否存在。

开发步骤

​ 1. 导入模块。

import NotificationManager from '@ohos.notificationManager';

​ 2. 系统是否支持进度条模板,查询结果为支持downloadTemplate模板类通知。

NotificationManager.isSupportTemplate('downloadTemplate').then((data) => {
  console.info(`[ANS] isSupportTemplate success`);
  let isSupportTpl: boolean = data; // isSupportTpl的值为true表示支持支持downloadTemplate模板类通知,false表示不支持
  // ...
}).catch((err) => {
  console.error(`[ANS] isSupportTemplate failed, error[${err}]`);
});

说明

查询系统支持进度条模板后,再进行后续的步骤操作。

​ 3. 构造进度条模板对象,并发布通知。

let template = {
  name:'downloadTemplate',
  data: {
    title: '标题:',
    fileName: 'music.mp4',
    progressValue: 30,
    progressMaxValue:100,
  }
}
//构造NotificationRequest对象
let notificationRquest = {
  id: 1,
  slotType: notify.SlotType.OTHER_TYPES,
  template: template,
  content: {
    contentType: notify.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
    normal: {
      title: template.data.title + template.data.fileName,
      text: "sendTemplate",
      additionalText: "30%"
    }
  },
  deliveryTime: new Date().getTime(),
  showDeliveryTime: true
}
notify.publish(notificationRquest).then(() => {
  console.info(`[ANS] publish success `);
}).catch((err) => {
  console.error(`[ANS] failed to publish, error[${err}]`);
});

二、为通知添加行为意图

WantAgent提供了封装行为意图的能力,这里所说的行为意图主要是指拉起指定的应用组件及发布公共事件等能力。HarmonyOS支持以通知的形式,将WantAgent从发布方传递至接收方,从而在接收方触发WantAgent中指定的意图。例如,在通知消息的发布者发布通知时,通常期望用户可以通过通知栏点击拉起目标应用组件。为了达成这一目标,开发者可以将WantAgent封装至通知消息中,当系统接收到WantAgent后,在用户点击通知栏时触发WantAgent的意图,从而拉起目标应用组件。

为通知添加行为意图的实现方式如下图所示:发布通知的应用向应用组件管理服务AMS(Ability Manager Service)申请WantAgent,然后随其他通知信息一起发送给桌面,当用户在桌面通知栏上点击通知时,触发WantAgent动作。

图1 携带行为意图的通知运行机制
file

接口说明

具体接口描述,详见WantAgent接口文档

接口名 描述
getWantAgent(info: WantAgentInfo, callback: AsyncCallback): void 创建WantAgent。
trigger(agent: WantAgent, triggerInfo: TriggerInfo, callback?: Callback): void 触发WantAgent意图。
cancel(agent: WantAgent, callback: AsyncCallback): void 取消WantAgent。
getWant(agent: WantAgent, callback: AsyncCallback): void 获取WantAgent的want。
equal(agent: WantAgent, otherAgent: WantAgent, callback: AsyncCallback): void 判断两个WantAgent实例是否相等。

开发步骤

​ 1. 导入模块。

import NotificationManager from '@ohos.notificationManager';
import wantAgent from '@ohos.app.ability.wantAgent';

2.创建WantAgentInfo信息。

场景一:创建拉起Ability的WantAgent的WantAgentInfo信息。

let wantAgentObj = null; // 用于保存创建成功的wantAgent对象,后续使用其完成触发的动作。

// 通过WantAgentInfo的operationType设置动作类型。
let wantAgentInfo = {
    wants: [
        {
            deviceId: '',
            bundleName: 'com.example.test',
            abilityName: 'com.example.test.MainAbility',
            action: '',
            entities: [],
            uri: '',
            parameters: {}
        }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
    wantAgentFlags:[wantAgent.WantAgentFlags.CONSTANT_FLAG]
}

场景二:创建发布公共事件的WantAgent的WantAgentInfo信息。

let wantAgentObj = null; // 用于保存创建成功的WantAgent对象,后续使用其完成触发的动作。

// wantAgentInfo
let wantAgentInfo = {
    wants: [
        {
            action: 'event_name', // 设置事件名。
            parameters: {},
        }
    ],
    operationType: wantAgent.OperationType.SEND_COMMON_EVENT,
    requestCode: 0,
    wantAgentFlags: [wantAgent.WantAgentFlags.CONSTANT_FLAG],
}

​ 3. 创建WantAgent。

// 创建WantAgent
wantAgent.getWantAgent(wantAgentInfo, (err, data) => {
    if (err) {
        console.error('[WantAgent]getWantAgent err=' + JSON.stringify(err));
    } else {
        console.info('[WantAgent]getWantAgent success');
        wantAgentObj = data;
    }
});

​ 4. 构造NotificationRequest对象。

// 构造NotificationRequest对象
let notificationRequest = {
    content: {
        contentType: NotificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
        normal: {
            title: 'Test_Title',
            text: 'Test_Text',
            additionalText: 'Test_AdditionalText',
        },
    },
    id: 1,
    label: 'TEST',
    wantAgent: wantAgentObj,
}

​ 5. 发布WantAgent通知。

// 通知发送
NotificationManager.publish(notificationRequest, (err) => {
    if (err) {
        console.error(`[ANS] failed to publish, error[${err}]`);
        return;
    }
    console.info(`[ANS] publish success `);
});

​ 6. 用户通过点击通知栏上的通知,即可触发WantAgent的动作。

本文由博客一文多发平台 OpenWrite 发布!

标签:err,进度条,WantAgent,通知,wantAgent,中秋,HarmonyOS,模板
From: https://www.cnblogs.com/HarmonyOSDev/p/17742706.html

相关文章

  • 【中秋国庆不断更】OpenHarmony组件内状态变量使用:@State装饰器
    【中秋国庆不断更】OpenHarmony组件内状态变量使用:@State装饰器@State装饰的变量,或称为状态变量,一旦变量拥有了状态属性,就和自定义组件的渲染绑定起来。当状态改变时,UI会发生对应的渲染改变。在状态变量相关装饰器中,@State是最基础的,使变量拥有状态属性的装饰器,它也是大部分状态......
  • 修改typecho为鸿蒙字体HarmonyOS_Sans
    参考http://www.manongjc.com/detail/62-rolomyvbgjluyan.html在后台CSS样式添加以下代码:@font-face{font-family:HarmonyOS_Sans_SC_Medium;font-style:normal;font-display:swap;src:url('https://jsdelivr.panbaidu.cn/gh/baige007/ttf/HarmonyOS_Sans_SC_Me......
  • FreeRTOS 原理 --- 任务通知
    简介任务通知核心包含是一个32位的无符号整数和一个8位的通知状态,这两个在任务控制块中,通知任务就是一个任务或者中断改写另外一个任务中的32位的无符号整数,改写这个整数的方式可以有所不同可以让这个整数加1,模拟信号量设置该整数的指定的某些位,模拟事件组直接选择覆盖或者不......
  • 【中秋国庆不断更】OpenHarmony多态样式stateStyles使用场景
    @Styles和@Extend仅仅应用于静态页面的样式复用,stateStyles可以依据组件的内部状态的不同,快速设置不同样式。这就是我们本章要介绍的内容stateStyles(又称为:多态样式)。概述stateStyles是属性方法,可以根据UI内部状态来设置样式,类似于css伪类,但语法不同。ArkUI提供以下四种状态:​......
  • 【中秋国庆不断更】OpenHarmony多态样式stateStyles使用场景
    @Styles和@Extend仅仅应用于静态页面的样式复用,stateStyles可以依据组件的内部状态的不同,快速设置不同样式。这就是我们本章要介绍的内容stateStyles(又称为:多态样式)。概述stateStyles是属性方法,可以根据UI内部状态来设置样式,类似于css伪类,但语法不同。ArkUI提供以下四种状态:......
  • 【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(上)
    【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(上)一、通知概述通知简介应用可以通过通知接口发送通知消息,终端用户可以通过通知栏查看通知内容,也可以点击通知来打开应用。通知常见的使用场景:​●显示接收到的短消息、即时消息等。​......
  • 【中秋国庆不断更】OpenHarmony多态样式stateStyles使用场景
    @Styles和@Extend仅仅应用于静态页面的样式复用,stateStyles可以依据组件的内部状态的不同,快速设置不同样式。这就是我们本章要介绍的内容stateStyles(又称为:多态样式)。概述stateStyles是属性方法,可以根据UI内部状态来设置样式,类似于css伪类,但语法不同。ArkUI提供以下四种状态:​......
  • 【不靠谱程序员】接收到回调通知的异步处理
    ​支付系统中,像资金下发这种业务,通常是在我们系统发给第三方支付通道后,第三方支付通道会进行资金业务处理。然后,付款完成后,会主动发起回调,即,调用我们系统API,将付款结果通知给我们系统。假定我们的支付系统对三方通道回调通知的处理逻辑包括:①修改本地付款单的付款状态;②将付款......
  • 【中秋国庆不断更】OpenHarmony定义可动画属性:@AnimatableExtend装饰器
    【中秋国庆不断更】OpenHarmony定义可动画属性:@AnimatableExtend装饰器@AnimatableExtend装饰器用于自定义可动画的属性方法,在这个属性方法中修改组件不可动画的属性。在动画执行过程时,通过逐帧回调函数修改不可动画属性值,让不可动画属性也能实现动画效果。​●......
  • 【中秋国庆不断更】XML在HarmonyOS中的生成,解析与转换(下)
    一、XML解析对于以XML作为载体传递的数据,实际使用中需要对相关的节点进行解析,一般包括解析XML标签和标签值、解析XML属性和属性值、解析XML事件类型和元素深度三类场景。XML模块提供XmlPullParser类对XML文件解析,输入为含有XML文本的ArrayBuffer或DataView,输出为解析得到的信息......