赞
踩
前情提要:笔者也只是小白,各方面能力都比较普通,分享平时遇见的问题,也为自己做好问题记录,如果阅读文章的朋友发现有啥问题欢迎评论指正,当然更欢迎大佬提出更好的解决方案,帮助大家进步,最后文档参考的文献我也会尽量注明,有朋友发现标错也欢迎评论。
HarmonyOS鸿蒙开发为通知添加行为意图
发布通知的应用向应用组件管理服务AMS(Ability Manager Service)申请WantAgent,然后随其他通知信息一起发送给桌面,当用户在桌面通知栏上点击通知时,触发WantAgent动作。
简单解释就是:我们使用手机点击通知栏可以跳转到通知对应app去。例如我们收到微信信息,点击微信的通知内容就自动跳转到微信的聊天对话框。
携带行为意图的通知运行机制图:
导入模块。
import NotificationManager from '@ohos.notificationManager';
import wantAgent from '@ohos.app.ability.wantAgent';
创建拉起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] } }
// 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;
}
});
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 }
// 3.发送通知
notify.publish(request)
.then(() => console.log('test', '通知发送成功'))
.catch(reason => console.log('test', '通知发送失败!', JSON.stringify(reason)))
收到的通知:
(这里就体现了设置通知groupName的作用:同一应用的通知归整在一起,可以点击下三角图标来展开显示)
点击下三角图标来展开显示:
点击通知内容,触发WantAgent动作,跳转到应用内:
https://www.bilibili.com/video/BV1Sa4y1Z7B1?p=34&vd_source=3310fbe4a110471bdf67e351a0079fd8
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。