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

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 查询通知是否授权。

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

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

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

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

核心代码

为Button绑定拉起事件


Button(this.buttonText).onClick(()=>{

         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(() => {

      //已打开通知

      this.message = "已允许接收消息推送。"

      this.buttonText = "去关闭通知"

      console.info("requestEnableNotification success");

    }).catch((err:Error) => {

      //未打开通知

      this.message = "已禁止接收消息推送。"

      this.buttonText = "去开启通知"

      console.info("requestEnableNotification error");

    });

}</boolean>
posted @ 2024-11-12 15:56  HarmonyOS_SDK  阅读(6)  评论(0编辑  收藏  举报