1# 静态订阅(仅对系统应用开放) 2 3### 介绍 4 5本示例主要展示了静态订阅的创建与使用,以及静态订阅的使能和去使能。通过[CommonEventManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-commonEventManager.md)发布自定义事件,使能和去使能静态订阅。通过[StaticSubscriberExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-application-staticSubscriberExtensionAbility.md)、[NotificationManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-notificationManager.md)静态订阅已发布的自定义事件,订阅后即可自动收到该事件,收到该事件后,发送通知将自定义事件数据显示在通知栏。 6 7### 效果预览 8 9| 主页 | 发布通知 | 通知栏 | 10| ------------------------------ | --------------------------------- | --------------------------------------- | 11|  |  |  | 12 13使用说明: 14 151. 在entry/src/main/resources/base/profile/subscribe.json中添加需要订阅的目标事件。 16 172. 修改系统配置文件/system/etc/app/install_list_capability.json,将应用的包名添加至该json文件中。 18 193. 本示例编译后共有两个hap包,包括静态订阅hap包和自定义事件发布hap包,需要全部安装。静态订阅hap包需要签名成系统应用并安装才可实现对目标事件的静态订阅,安装后即默认订阅了目标事件;自定义事件发布hap包直接安装即可,发布事件后即可被静态订阅方收到。 20 214. 点击关闭静态订阅按钮将不再进行静态订阅,不会收到相关通知,点击开启静态订阅会重新恢复。 22 23### 工程目录 24 25``` 26entry/src/main/ets/ 27|---Application 28| |---AbilityStage.ts 29|---MainAbility 30| |---MainAbility.ts 31|---model 32| |---Logger.ts // 日志工具 33|---pages 34| |---Index.ets // 首页 35|---StaticSubscriber 36| |---StaticSubscriber.ts // 静态订阅 37``` 38 39### 具体实现 40 41* 通过CommonEventManager.publish方法发布自定义事件,该自定义事件为数据传输事件。 42 43* 源码链接:[Index.ets](publish/src/main/ets/pages/Index.ets) 44 45* 接口参考:[@ohos.commonEventManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-commonEventManager.md) 46 47* 通过CommonEventManager.setStaticSubscriberState方法为当前应用设置静态订阅事件使能或去使能状态。 48 49* 源码链接:[Index.ets](publish/src/main/ets/pages/Index.ets) 50 51* 接口参考:[@ohos.commonEventManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-commonEventManager.md) 52 53* 通过StaticSubscriberExtensionAbility接口静态订阅已发布的自定义事件,订阅后即可自动收到该事件,收到该事件后,setNotificationEnable,ContentType方法发送通知将自定义事件数据显示在通知栏。 54 55* 源码链接:[StaticSubscriber.ts](entry/src/main/ets/StaticSubscriber/StaticSubscriber.ts) 56 57* 接口参考:[@ohos.application.StaticSubscriberExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-application-staticSubscriberExtensionAbility.md),[@ohos.notificationManager](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-notificationManager.md) 58 59### 相关权限 60 61[ohos.permission.NOTIFICATION_CONTROLLER](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/permission-list.md#ohospermissionnotification_controller) 62 63### 依赖 64 65不涉及 66 67### 约束与限制 68 691.本示例仅支持标准系统上运行,支持设备:RK3568。 70 712.本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release)。 72 733.本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。 74 754.静态订阅仅支持系统应用,需要配置系统应用签名,可以参考[特殊权限配置方法](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/security/hapsigntool-overview.md/),把配置文件中的“apl”字段信息改为“system_core”。 76 775.本示例开发中需要手动替换Full SDK才能编译通过,具体操作可参考[替换指南](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/quick-start/full-sdk-switch-guide.md/)。 78 796.实现静态订阅的应用需要经过性能功耗团队评审符合功耗要求,如果您希望在调试阶段尝试使用该功能,可修改系统配置文件/system/etc/app/install_list_capability.json,将待调试应用的包名添加至json文件中。 80 817.修改系统配置文件可以参考[静态订阅公共事件](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/application-models/common-event-static-subscription.md)。 82 838.本示例需要使用DevEco Studio 4.0 Beta2 (Build Version: 4.0.0.400 构建 2023年8月2日)及以上版本才可编译运行。 84 85### 下载 86 87如需单独下载本工程,执行如下命令: 88 89``` 90git init 91git config core.sparsecheckout true 92echo code/SystemFeature/ApplicationModels/StaticSubscriber/ > .git/info/sparse-checkout 93git remote add origin https://gitee.com/openharmony/applications_app_samples.git 94git pull origin master 95``` 96