ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Notification Kit:穿戴设备通知订阅与蓝牙消息同步链路【鸿蒙心迹】

Notification Kit:穿戴设备通知订阅与蓝牙消息同步链路【鸿蒙心迹】 手机收到微信通知手表几乎同时也弹出来了——这通知是怎么过去的做穿戴设备通知同步的时候最开始的思路很简单手机收到通知通过蓝牙发给手表就行了。结果跑了一段时间发现问题手机上通知都删了手表上还在。手机都锁屏了通知还在不停往手表推。才意识到通知同步不是简单的发过去是一整套订阅和同步链路。一、通知订阅和发布通知是两回事很多人以为我发通知手表就能收到。不对。类型谁来做发布通知应用自己发订阅通知穿戴设备订阅手机的通知发布通知是应用自己往系统发通知。订阅通知是穿戴设备订阅系统的通知系统收到通知就转发给穿戴设备。这是两条完全不同的链路。二、NotificationSubscriberExtensionAbility 是什么API 26 提供了 NotificationSubscriberExtensionAbility就是用来订阅手机通知的。这段代码解决什么问题订阅手机通知并同步到穿戴设备。文件notification/SubscriberExtensionAbility.ets用途穿戴设备通知同步接入位置扩展 Abilityimport{notificationSubscriberExtensionAbility}fromkit.NotificationKit;exportdefaultclassSubscriberAbilityextendsnotificationSubscriberExtensionAbility.NotificationSubscriberExtensionAbility{onReceiveMessage(data){// 收到手机通知转发到穿戴设备this.sendToWatch(data);}onCancelMessages(data){// 手机取消通知同步删除穿戴设备上的通知this.removeFromWatch(data);}}这里最关键的两个回调onReceiveMessage 是收到新通知onCancelMessages 是手机取消了通知。三、去重为什么很重要还有个坑通知重复了。很多人收到一个通知就往手表发一次。结果就是同一个通知手表上弹了好几个。正确的做法是根据通知 ID 去重。同一个 ID 的通知已经发过了就不要再发。四、蓝牙断开为什么还要继续发还有个容易踩的坑蓝牙断了还在不停发。蓝牙断开了你发的消息根本到不了手表。但代码还在不停发浪费资源。正确的做法是监听蓝牙连接状态。断开了就停止发送连上了再恢复。五、几个容易踩的坑第一个坑把通知订阅和发布通知混为一谈。两条完全不同的链路。第二个坑收到通知后不做去重。同一个通知手表上弹好几个。第三个坑手机取消通知但穿戴设备不删除。手机都删了手表上还在。第四个坑蓝牙断开后仍不断发送。发出去也收不到浪费资源。第五个坑扩展 Ability 生命周期结束后仍保存旧连接状态。连接都断了还以为连着。这次做穿戴通知同步最大的体会是通知同步不是发过去就行是一整套订阅、转发、去重、同步删除的链路。手机上通知的每一个变化都要同步到穿戴设备上。
返回列表