通知订阅扩展能力概述
介绍
NotificationSubscriberExtensionAbility提供扩展能力,允许第三方应用接收系统通知并将其同步到穿戴设备上。该能力主要用于支持手机与第三方穿戴设备之间的通知协同。
效果预览

使用说明
1.启动应用后,弹出是否允许访问蓝牙的弹窗,点击允许后开始操作。
2.点击主页面[openSubscriberSettings]按钮,调用openSubscriberSettings接口,打开通知扩展订阅设置页面,该页面以半模态弹窗显示。
3.点击主页面queryBluetooth按钮,获取已蓝牙配对设备信息。
4.连接穿戴设备,使用蓝牙模块接口获取地址,通过subscribe/unsubscribe按钮调用接口订阅或取消订阅通知。
工程目录
entry/src/main/ets
|--- entryability
| |--- EntryAbility.ets
|--- extensionability
| |--- NotificationSubscriberExtAbility.ets // 通知订阅扩展能力
|--- pages
| |--- Index.ets // 主页面
|--- utils
| |--- SppClientManager.ets // 蓝牙模块接口能力
相关权限
ohos.permission.SUBSCRIBE_NOTIFICATION
ohos.permission.ACCESS_BLUETOOTH
具体实现
- 通知订阅扩展能力封装在NotificationSubscriberExtAbility中,源码参考:NotificationSubscriberExtAbility.ets
- 收到通知后,通过SppClientManager将notificationInfo序列化并发送到对端蓝牙设备;发送前若通道未就绪,先触发startConnect 并等待 3 s 握手完成,失败自动再重连一次。
- 通知被取消时,将hashCodes数组封装后调用sendCancelNotificationData,异常捕获后同收到通知逻辑,再次调用sendCancelNotificationData方法。
- 能力销毁时onDestroy 中统一 stopConnect,防止蓝牙句柄泄漏。
- 连接地址动态获取:
- 通过 getSubscribeInfo 读取订阅信息,取首条记录的 addr 字段作为对端地址;后续重连均沿用该值。
约束与限制
- 本示例仅支持标准系统上运行,支持设备:手机和平板。
- 本示例支持API version 22及以上版本的SDK。
- 本示例已支持使DevEco Studio 6.0.2 Release及以上版本才可编译运行。
- 本示例涉及ohos.permission.SUBSCRIBE_NOTIFICATION权限为system_basic级别,需要配置高权限签名。
下载
git init
git config core.sparsecheckout true
echo code/DocsSample/Notification/ThirdpartyWearableDemo/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master