• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 通知消息跨设备协同管理(仅对系统应用开放)
2
3<!--Kit: Notification Kit-->
4<!--Subsystem: Notification-->
5<!--Owner: @peixu-->
6<!--Designer: @dongqingran; @wulong158-->
7<!--Tester: @wanghong1997-->
8<!--Adviser: @huipeizi-->
9
10默认情况下,通知消息会进行跨设备协同。如果应用已通过分布式通信能力实现跨设备协同(例如短信通知消息由短信应用本身协同到手表、平板、2in1等设备),为了避免通知消息在不同设备上重复发送,需要针对分布式通知的协同设备进行管理。
11
12从API version 18开始,支持系统应用通过以下方式对分布式通知的协同设备进行管理:
13
14- 当应用的某个通知消息仅在当前设备发布时,需要将[NotificationRequest](../reference/apis-notification-kit/js-apis-inner-notification-notificationRequest-sys.md)参数中的**notDistributed**字段配置为true。
15- 当应用的某个通知消息需要按设备管控名单发布时,需要将[NotificationRequest](../reference/apis-notification-kit/js-apis-inner-notification-notificationRequest-sys.md)参数中的**notDistributed**字段配置为false,**forceDistributed**字段为配置true。
16
17## 接口说明
18
19| **接口名**  | **描述** | **说明** |
20| -------- | -------- |-------- |
21| [publish](../reference/apis-notification-kit/js-apis-notificationManager.md#notificationmanagerpublish)(request: NotificationRequest, callback: AsyncCallback\<void\>): void | 发布通知。 | 具体使用方法见入参对象[NotificationRequest](../reference/apis-notification-kit/js-apis-inner-notification-notificationRequest-sys.md)中**notDistributed**与**forceDistributed**字段说明。 |
22
23## 前提条件
24
25 - 用户已通过手机中运动健康App连接手表。
26 - 用户已在手机的“运动健康App > 设备 > 消息通知”中,开启“同步手机消息通知至手表”开关与“支持的应用”通知开关。
27
28## 开发步骤
29
301. 导入模块。
31
32    ```typescript
33    import { notificationManager } from '@kit.NotificationKit';
34    import { BusinessError } from '@kit.BasicServicesKit';
35    ```
36
372. 通知消息跨设备协同管理。
38
39  - 配置应用通知消息仅在当前设备上发布。
40
41    ```typescript
42    // publish回调
43    let publishCallback = (err: BusinessError): void => {
44      if (err) {
45        console.error(`Failed to publish notification. Code is ${err.code}, message is ${err.message}`);
46      } else {
47        console.info(`Succeeded in publishing notification.`);
48      }
49    }
50    // 通知Request对象
51    let notificationRequest: notificationManager.NotificationRequest = {
52      id: 1,
53      content: {
54        notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
55        normal: {
56          title: 'test_title',
57          text: 'test_text',
58          additionalText: 'test_additionalText'
59        }
60      },
61      // 配置应用通知消息仅在当前设备上发布。
62      notDistributed: true
63    };
64    notificationManager.publish(notificationRequest, publishCallback);
65    ```
66
67  - 配置应用通知消息根据管控名单跨设备协同发布。
68
69    ```typescript
70    // publish回调
71    let publishCallback = (err: BusinessError): void => {
72      if (err) {
73        console.error(`Failed to publish notification. Code is ${err.code}, message is ${err.message}`);
74      } else {
75        console.info(`Succeeded in publishing notification.`);
76      }
77    }
78    // 通知Request对象
79    let notificationRequest: notificationManager.NotificationRequest = {
80      id: 1,
81      content: {
82        notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,
83        normal: {
84          title: 'test_title',
85          text: 'test_text',
86          additionalText: 'test_additionalText'
87        }
88      },
89      // 仅当应用在跨设备协同管控名单中且未配置notDistributed字段时,forceDistributed才会生效,且当forceDistributed为false按照协同管控名单显示
90      notDistributed: false,
91      forceDistributed: true
92    };
93    notificationManager.publish(notificationRequest, publishCallback);
94    ```
95