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