当前位置:   article > 正文

HarmonyOS鸿蒙开发为通知添加行为意图_鸿蒙应用发布通知的行为意图

鸿蒙应用发布通知的行为意图

前情提要:笔者也只是小白,各方面能力都比较普通,分享平时遇见的问题,也为自己做好问题记录,如果阅读文章的朋友发现有啥问题欢迎评论指正,当然更欢迎大佬提出更好的解决方案,帮助大家进步,最后文档参考的文献我也会尽量注明,有朋友发现标错也欢迎评论。

概要

HarmonyOS鸿蒙开发为通知添加行为意图

实现方式

发布通知的应用向应用组件管理服务AMS(Ability Manager Service)申请WantAgent,然后随其他通知信息一起发送给桌面,当用户在桌面通知栏上点击通知时,触发WantAgent动作。
简单解释就是:我们使用手机点击通知栏可以跳转到通知对应app去。例如我们收到微信信息,点击微信的通知内容就自动跳转到微信的聊天对话框。

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

img

开发步骤

  1. 导入模块。

    import NotificationManager from '@ohos.notificationManager';
    import wantAgent from '@ohos.app.ability.wantAgent';
    
    • 1
    • 2
  2. 创建拉起Ability的WantAgentInfo信息。

// 用于保存创建成功的wantAgent对象,后续使用其完成触发的动作。
wantAgentObj: WantAgent = null // 定义在struct内的成员属性

async aboutToAppear(){
    // 2.创建拉取当前应用的行为意图
    // 2.1.创建wantInfo信息
    // 通过WantAgentInfo的operationType设置动作类型。
    let wantInfo: wantAgent.WantAgentInfo = {
      wants: [
        {
          bundleName: '这里写你的模块名称(在AppScope/app.json5中可以查看)',
          abilityName: 'EntryAbility',
        }
      ],
      requestCode: 0,
      operationType: wantAgent.OperationType.START_ABILITY,
      wantAgentFlags: [wantAgent.WantAgentFlags.CONSTANT_FLAG]
    } 
    
  }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  1. 创建WantAgent。
// 2.2.创建wantAgent实例
// 法一:使用Promise和async/await提供异步并发能力
// this.wantAgentObj = await wantAgent.getWantAgent(wantInfo)
// 法二:官网提供的判断选择分支结构
wantAgent.getWantAgent(wantInfo, (err, data) => {
      if (err) {
        console.error('[WantAgent]getWantAgent err=' + JSON.stringify(err));
      } else {
        console.info('[WantAgent]getWantAgent success');
        this.wantAgentObj = data;
      }
    });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 构造NotificationRequest对象。
let request: notify.NotificationRequest = {
      id: this.idx++, //为了区别通知在struct中设置了通知id的成员属性
      wantAgent: this.wantAgentObj, // 携带行为意图,不同通知不需要
      content: {
        contentType: notify.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
        normal: {
          title: '通知标题' + this.idx,
          text: '通知内容详情',
          additionalText: '通知附加内容'
        }
      },
      showDeliveryTime: true,
      deliveryTime: new Date().getTime(), // 显示通知发送的时间
      groupName: 'wechat', // 通知的分组名称,可以把同一个应用的通知信息整合在一起
      slotType: notify.SlotType.SOCIAL_COMMUNICATION
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  1. 发布WantAgent通知。
// 3.发送通知
    notify.publish(request)
      .then(() => console.log('test', '通知发送成功'))
      .catch(reason => console.log('test', '通知发送失败!', JSON.stringify(reason)))
  • 1
  • 2
  • 3
  • 4

效果展示

收到的通知:
(这里就体现了设置通知groupName的作用:同一应用的通知归整在一起,可以点击下三角图标来展开显示)
在这里插入图片描述
点击下三角图标来展开显示:
在这里插入图片描述点击通知内容,触发WantAgent动作,跳转到应用内:

在这里插入图片描述

参考文献

https://www.bilibili.com/video/BV1Sa4y1Z7B1?p=34&vd_source=3310fbe4a110471bdf67e351a0079fd8

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/224750
推荐阅读
相关标签
  

闽ICP备14008679号