写点什么

【FAQ】HarmonyOS SDK 闭源开放能力 —Notification Kit

作者:HarmonyOS SDK
  • 2024-11-12
    贵州
  • 本文字数:2150 字

    阅读完需:约 7 分钟

1.问题描述:


notificationFlagStatus 如何引入?文档中搜索不到相关内容。


解决方案:


1.notificationFlags 是 NotificationRequest 类中定义的属性,这个属性是“只读”类型,因此在使用时,不支持修改 notificationFlags 的值。


2.如果想要实现消息有铃声、震动等能力,可以通过 SlotType 属性来设置通知渠道的类型。 比如社交通信、服务提醒等场景是有铃声、震动等强提醒。 而内容资讯、其他等渠道类型是没有铃声震动等强提醒的,具体可参考下方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/notification-slot-0000001774120666。


2.问题描述:


文档写的 ExtensionPayload 通知扩展消息,要求 notification.category 取值为“EXPRESS”。是否可以反过来理解,当 notification.category 取值为 “EXPRESS” 时,就是 ExtensionPayload 通知扩展消息?


解决方案:


1.推送 push-type=0 普通通知,指定 category=EXPRESS,终端设备的表现:展示普通通知,这么理解是没有问题的


2.推送 push-type=2 拓展通知,指定 category=EXPRESS,终端设备的表现:展示普通通知+语音播报效果


第二点可以这么理解:


1、应用进程不存在:消息会触发 ExtensionAbility 组件-继承自 RemoteNotificationExtensionAbility(通知扩展 Ability),然后开发者自行实现语音播报的能力-然后通过开发者再返回 return 对象, 就可以通知栏消息和语音播报能力。


2、当应用进程存在:无论应用在前台或者在后台均不弹出通知提醒,可以通过 receiveMessage()方法实时获取通知扩展消息数据,


具体可以查看下发链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-send-extend-noti-0000001873171369-V5#section7799156112814


3.问题描述:


如何通过系统通知跳转 App,进入某个 ts 处理通知携带的参数。在 module.json5 新增 extensionAbilities,点击系统通知没有进入指定的 ts?


解决方案:


点击通知跳转可以设置 WantAgent 动作


1、可以参考文档创建 WantAgentInfo 信息场景一,点击消息拉起 UIAbility,首先需要在 module.json5 配置文件的 abilities 标签中声明需要跳转的 UIAbility。


2、WantAgent 的 WantAgentInfo 信息中,bundleName 设置应用包名、abilityName 设置为需要跳转的 UIAbility 即可跳转,也可以通过 action 字段等方式跳转,详情参考 API 文档说明。


https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/notification-with-wantagent-V5


4.问题描述:


申请后台音频播放长时间任务失败,报错 9800006 Notification verification failed. The title or text of the notification cannot be empty,使用官方的 demo 可以申请成功,但是移植对应的逻辑到项目中失败,如何解决?


解决方案:


后台任务有匹配规则,不能在 HOME 里添加 uris,可以在 skills 列表数据中另起一个匹配规则,不影响隐式跳转匹配,也不影响后台任务的匹配,例如: ts "skills": [ { "entities": [ "entity.system.home", ], "actions": [ "action.system.home", ] }, { "actions": [ "ohos.want.action.viewData" ], "uris": [ { "scheme": 'amap' } ] } ]


5.问题描述:


怎么打开推送通知权限,若是用户没有开权限,跳转到设置页面打开权限


解决方案:


一、可以通过 isNotificationEnabled():Promise<boolean> 查询通知是否授权。


https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/notification-enable-V5


二、如果应用首次拒绝了消息通知,应用希望能够引导用户拉起设置应用设置允许通知,用来接收应用内的推送消息;并且在设置完后返回页面可以监听到修改后的状态。可以参考以下案例:


1、通过 startability 显式拉起设置应用-通知管理界面,配置相应的 want 信息(不推荐使用隐式拉起的方式)。


2、在进入页面时通过 Notification.requestEnableNotification()监听应用请求通知使能


核心代码


为 Button 绑定拉起事件



Button(this.buttonText).onClick(()=&gt;{
let context = getContext(this) as common.UIAbilityContext;
let want: Want = {
bundleName: 'com.huawei.hmos.settings',//设置应用bundleName
abilityName: 'com.huawei.hmos.settings.MainAbility',//设置应用abilityName
uri: "systemui_notification_settings",//通知管理页面
parameters: {
pushParams: {
bundleName:context.abilityInfo.bundleName//拉起方应用包名
}
};
context.startAbility(want)
}).margin(10)
Text(this.message)
复制代码


在打开页面时获取通知管理中按钮状态,Notification.requestEnableNotification()请求发送通知的许可,第一次调用会弹窗让用户选择。



onPageShow(): void {
Notification.requestEnableNotification().then(() =&gt; {
//已打开通知
this.message = "已允许接收消息推送。"
this.buttonText = "去关闭通知"
console.info("requestEnableNotification success");
}).catch((err:Error) =&gt; {
//未打开通知
this.message = "已禁止接收消息推送。"
this.buttonText = "去开启通知"
console.info("requestEnableNotification error");
});
}</boolean>
复制代码


用户头像

HarmonyOS SDK

关注

HarmonyOS SDK 2022-06-16 加入

HarmonyOS SDK通过将HarmonyOS系统级能力对外开放,支撑开发者高效打造更纯净、更智能、更精致、更易用的鸿蒙原生应用,和开发者共同成长。

评论

发布
暂无评论
【FAQ】HarmonyOS SDK 闭源开放能力 —Notification Kit_HarmonyOS_HarmonyOS SDK_InfoQ写作社区