• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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| ![iamge](screenshots/main.png) | ![iamge](screenshots/publish.png) | ![iamge](screenshots/device/static.png) |
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