首页
社区
课程
招聘
【FAQ】HarmonyOS SDK 闭源开放能力 —Notification Kit
发表于: 2024-11-12 15:56 3286

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

2024-11-12 15:56
3286

1.问题描述:

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

解决方案:

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

2.如果想要实现消息有铃声、震动等能力,可以通过SlotType属性来设置通知渠道的类型。 比如社交通信、服务提醒等场景是有铃声、震动等强提醒。 而内容资讯、其他等渠道类型是没有铃声震动等强提醒的,具体可参考下方文档:ac9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1k6%4g2A6k6r3g2K6i4K6u0r3L8X3!0@1K9h3k6A6j5$3q4@1K9h3!0F1i4K6u0V1M7$3I4G2N6q4)9J5k6o6l9H3x3o6l9H3x3o6p5%4y4K6b7I4x3U0l9$3y4U0k6Q4c8e0y4Q4z5o6m8Q4z5o6t1`.

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()方法实时获取通知扩展消息数据,

具体可以查看下发链接:1a5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1k6%4g2A6k6r3g2K6i4K6u0V1g2U0g2Q4x3V1k6H3N6i4y4Z5i4K6u0V1M7$3g2F1k6q4)9J5k6r3g2^5N6r3g2F1k6q4)9J5k6r3&6G2N6r3W2Q4x3X3b7H3x3o6l9H3x3o6l9I4z5o6M7K6x3e0M7I4x3K6j5&6i4K6u0V1g2U0g2Q4x3U0y4K6k6h3y4@1K9h3!0F1y4K6M7&6z5e0p5#2y4U0p5I4x3U0R3I4y4l9`.`.

3.问题描述:

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

解决方案:

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

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

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

168K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1k6%4g2A6k6r3g2K6i4K6u0V1g2U0g2Q4x3V1k6F1L8%4c8A6k6X3W2U0j5i4c8A6L8$3&6Q4x3X3c8%4K9i4c8Z5i4K6u0V1N6$3q4F1N6r3q4Y4k6h3&6@1i4K6u0V1g2U0f1`.

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

8cbK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1k6i4k6W2L8r3!0H3k6i4u0Q4x3X3g2Z5N6h3q4%4k6h3W2Q4x3X3g2U0L8$3#2Q4x3V1k6U0L8$3&6K6N6h3#2W2M7W2)9J5c8X3y4F1i4K6u0r3k6r3!0U0i4K6u0r3K9r3q4J5L8h3!0F1P5h3!0K6i4K6u0V1k6%4g2A6k6r3g2K6i4K6u0V1g2U0g2Q4x3V1k6F1L8%4c8A6k6X3W2U0j5i4c8A6L8$3&6Q4x3X3c8W2L8X3q4T1L8r3g2Q4x3X3c8h3y4b7`.`.

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

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

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

核心代码

为Button绑定拉起事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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()请求发送通知的许可,第一次调用会弹窗让用户选择。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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>

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回