• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.distributedsched.abilityConnectionManager (Cross-Device Connection Management)
2
3The **abilityConnectionManager** module provides APIs for cross-device connection management. After successful networking between devices (login with the same account and enabling of Bluetooth on the devices), a system application and a third-party application can start a [UIAbility](../apis-ability-kit/js-apis-app-ability-uiAbility.md) of the same application across these devices to establish a Bluetooth connection. This way, data (specifically, text) can be transmitted across the devices over the connection.
4
5> **NOTE**
6>
7> The initial APIs of this module are supported since API version 18. Newly added APIs will be marked with a superscript to indicate their earliest API version.
8
9## Modules to Import
10
11```js
12import { abilityConnectionManager } from '@kit.DistributedServiceKit';
13```
14
15## abilityConnectionManager.createAbilityConnectionSession
16
17createAbilityConnectionSession(serviceName: string, context: Context, peerInfo: PeerInfo , connectOptions: ConnectOptions): number
18
19Creates a collaboration session between applications.
20
21**Required permissions**: ohos.permission.INTERNET, ohos.permission.GET_NETWORK_INFO, ohos.permission.SET_NETWORK_INFO, and ohos.permission.DISTRIBUTED_DATASYNC
22
23**System capability**: SystemCapability.DistributedSched.AppCollaboration
24
25**Parameters**
26
27| Name      | Type                                     | Mandatory  | Description       |
28| --------- | --------------------------------------- | ---- | --------- |
29| serviceName  | string | Yes   | Service name for the application. The service name must be the same on the local end and peer end. The value contains a maximum of 256 characters.|
30| context | [Context](../apis-ability-kit/js-apis-inner-application-context.md) | Yes| Application context.|
31| peerInfo  | [PeerInfo](#peerinfo)               | Yes   | Collaboration information of the peer end.|
32| connectOptions  | [ConnectOptions](#connectoptions)               | Yes   | Connection options for the application.|
33
34**Return value**
35
36| Type                 | Description              |
37| ------------------- | ---------------- |
38| number | ID of the collaboration session.|
39
40**Error codes**
41
42For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
43
44| ID| Error Message|
45| ------- | -------------------------------- |
46| 201      | Permission denied.|
47| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
48
49**Example**
50
511. On device A, an application calls **createAbilityConnectionSession()** to create a collaboration session and return the session ID.
52
53   ```ts
54   import { abilityConnectionManager, distributedDeviceManager } from '@kit.DistributedServiceKit';
55   import { common } from '@kit.AbilityKit';
56   import { hilog } from '@kit.PerformanceAnalysisKit';
57
58   let dmClass: distributedDeviceManager.DeviceManager;
59
60   function initDmClass(): void {
61     try {
62       dmClass = distributedDeviceManager.createDeviceManager('com.example.remotephotodemo');
63     } catch (err) {
64       hilog.error(0x0000, 'testTag', 'createDeviceManager err: ' + JSON.stringify(err));
65     }
66   }
67
68   function getRemoteDeviceId(): string | undefined {
69     initDmClass();
70     if (typeof dmClass === 'object' && dmClass !== null) {
71       hilog.info(0x0000, 'testTag', 'getRemoteDeviceId begin');
72       let list = dmClass.getAvailableDeviceListSync();
73       if (typeof (list) === 'undefined' || typeof (list.length) === 'undefined') {
74         hilog.info(0x0000, 'testTag', 'getRemoteDeviceId err: list is null');
75         return;
76       }
77       if (list.length === 0) {
78         hilog.info(0x0000, 'testTag', 'getRemoteDeviceId err: list is empty');
79         return;
80       }
81       return list[0].networkId;
82     } else {
83       hilog.info(0x0000, 'testTag', 'getRemoteDeviceId err: dmClass is null');
84       return;
85     }
86   }
87
88   @Entry
89   @Component
90   struct Index {
91     createSession(): void {
92       // Define peer device information.
93       const peerInfo: abilityConnectionManager.PeerInfo = {
94         deviceId: "sinkDeviceId",
95         bundleName: 'com.example.remotephotodemo',
96         moduleName: 'entry',
97         abilityName: 'EntryAbility',
98         serviceName: 'collabTest'
99       };
100       const myRecord: Record<string, string> = {
101         "newKey1": "value1",
102       };
103
104       // Define connection options.
105       const connectOptions: abilityConnectionManager.ConnectOptions = {
106         needSendData: true,
107         startOptions: abilityConnectionManager.StartOptionParams.START_IN_FOREGROUND,
108         parameters: myRecord
109       };
110       let context = this.getUIContext().getHostContext();
111       try {
112         let sessionId = abilityConnectionManager.createAbilityConnectionSession("collabTest", context, peerInfo, connectOptions);
113         hilog.info(0x0000, 'testTag', 'createSession sessionId is', sessionId);
114       } catch (error) {
115         hilog.error(0x0000, 'testTag', error);
116       }
117     }
118
119     build() {
120     }
121   }
122   ```
123
1242. On device B, **createAbilityConnectionSession** can be called in **onCollaborate**, which is triggered when the application is started.
125
126   ```ts
127   import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
128   import { abilityConnectionManager } from '@kit.DistributedServiceKit';
129   import { hilog } from '@kit.PerformanceAnalysisKit';
130
131   export default class EntryAbility extends UIAbility {
132     onCollaborate(wantParam: Record<string, Object>): AbilityConstant.CollaborateResult {
133       hilog.info(0x0000, 'testTag', '%{public}s', 'on collaborate');
134       let param = wantParam["ohos.extra.param.key.supportCollaborateIndex"] as Record<string, Object>
135       this.onCollab(param);
136       return 0;
137     }
138
139     onCollab(collabParam: Record<string, Object>) {
140       const sessionId = this.createSessionFromWant(collabParam);
141       if (sessionId == -1) {
142         hilog.info(0x0000, 'testTag', 'Invalid session ID.');
143         return;
144       }
145     }
146
147     createSessionFromWant(collabParam: Record<string, Object>): number {
148       let sessionId = -1;
149       const peerInfo = collabParam["PeerInfo"] as abilityConnectionManager.PeerInfo;
150       if (peerInfo == undefined) {
151         return sessionId;
152       }
153
154       const options = collabParam["ConnectOptions"] as abilityConnectionManager.ConnectOptions;
155       try {
156         sessionId = abilityConnectionManager.createAbilityConnectionSession("collabTest", this.context, peerInfo, options);
157         AppStorage.setOrCreate('sessionId', sessionId);
158         hilog.info(0x0000, 'testTag', 'createSession sessionId is' + sessionId);
159       } catch (error) {
160         hilog.error(0x0000, 'testTag', error);
161       }
162       return sessionId;
163     }
164   }
165   ```
166
167## abilityConnectionManager.destroyAbilityConnectionSession
168
169destroyAbilityConnectionSession(sessionId:&nbsp;number):&nbsp;void
170
171Destroys a collaboration session between applications.
172
173**System capability**: SystemCapability.DistributedSched.AppCollaboration
174
175**Parameters**
176
177| Name      | Type                                      | Mandatory  | Description      |
178| --------- | ---------------------------------------- | ---- | -------- |
179| sessionId | number  | Yes   | Collaboration session ID.  |
180
181**Example**
182
183  ```ts
184  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
185  import { hilog } from '@kit.PerformanceAnalysisKit';
186
187  hilog.info(0x0000, 'testTag', 'destroyAbilityConnectionSession called');
188  let sessionId = 100;
189  abilityConnectionManager.destroyAbilityConnectionSession(sessionId);
190  ```
191
192## abilityConnectionManager.getPeerInfoById
193
194getPeerInfoById(sessionId:&nbsp;number):&nbsp;PeerInfo&nbsp;|&nbsp;undefined
195
196Obtains information about the peer application in the specified session.
197
198**System capability**: SystemCapability.DistributedSched.AppCollaboration
199
200**Parameters**
201
202| Name      | Type                                      | Mandatory  | Description      |
203| --------- | ---------------------------------------- | ---- | -------- |
204| sessionId | number  | Yes   | ID of the collaboration session.  |
205
206**Return value**
207
208| Type                 | Description              |
209| ------------------- | ---------------- |
210| PeerInfo | Information about the peer application.|
211| undefined | Unknown situation.|
212
213**Error codes**
214
215For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
216
217| ID| Error Message|
218| ------- | -------------------------------- |
219| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified. 2. Incorrect parameter types. |
220
221**Example**
222
223  ```ts
224  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
225  import { hilog } from '@kit.PerformanceAnalysisKit';
226
227  hilog.info(0x0000, 'testTag', 'getPeerInfoById called');
228  let sessionId = 100;
229  const peerInfo = abilityConnectionManager.getPeerInfoById(sessionId);
230  ```
231
232## abilityConnectionManager.connect
233
234connect(sessionId:&nbsp;number):&nbsp;Promise&lt;ConnectResult&gt;
235
236Sets up a UIAbility connection after a collaboration session is created and the session ID is obtained.
237
238**System capability**: SystemCapability.DistributedSched.AppCollaboration
239
240**Parameters**
241
242| Name      | Type                                     | Mandatory  | Description       |
243| --------- | --------------------------------------- | ---- | --------- |
244| sessionId | number | Yes   | ID of the collaboration session.   |
245
246**Return value**
247
248| Type                 | Description              |
249| ------------------- | ---------------- |
250| Promise&lt;ConnectResult&gt; | Promise used to return the [connection result](#connectresult).|
251
252**Error codes**
253
254For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
255
256| ID| Error Message|
257| ------- | -------------------------------- |
258| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
259
260**Example**
261
262After an application sets up a collaboration session and obtains the session ID on device A, it calls **connect()** to set up a UIAbility connection and start the application on device B.
263
264  ```ts
265  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
266  import { hilog } from '@kit.PerformanceAnalysisKit';
267
268  let sessionId = 100;
269  abilityConnectionManager.connect(sessionId).then((ConnectResult) => {
270    if (!ConnectResult.isConnected) {
271      hilog.info(0x0000, 'testTag', 'connect failed');
272      return;
273    }
274  }).catch(() => {
275    hilog.error(0x0000, 'testTag', "connect failed");
276  })
277  ```
278
279## abilityConnectionManager.acceptConnect
280
281acceptConnect(sessionId:&nbsp;number,&nbsp;token:&nbsp;string):&nbsp;Promise&lt;void&gt;
282
283Accepts the UIAbility connection after a collaboration session is set up and the session ID is obtained.
284
285**System capability**: SystemCapability.DistributedSched.AppCollaboration
286
287**Parameters**
288
289| Name      | Type                                     | Mandatory  | Description   |
290| --------- | --------------------------------------- | ---- | ----- |
291| sessionId | number | Yes   | ID of the collaboration session.   |
292| token | string | Yes   | Token value passed by the application on device A.   |
293
294**Return value**
295
296| Type                 | Description              |
297| ------------------- | ---------------- |
298| Promise&lt;void&gt; |Promise that returns no value.|
299
300**Error codes**
301
302For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
303
304| ID| Error Message|
305| ------- | -------------------------------- |
306| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
307
308**Example**
309
310After **createAbilityConnectionSession** is called on device A to create a collaboration session and the session ID is obtained, the application on device B can call **acceptConnect** to accept the connection.
311
312  ```ts
313  import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
314  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
315  import { hilog } from '@kit.PerformanceAnalysisKit';
316
317  export default class EntryAbility extends UIAbility {
318    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
319      hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
320    }
321
322    onCollaborate(wantParam: Record<string, Object>): AbilityConstant.CollaborateResult {
323      hilog.info(0x0000, 'testTag', '%{public}s', 'on collaborate');
324      let param = wantParam["ohos.extra.param.key.supportCollaborateIndex"] as Record<string, Object>
325      this.onCollab(param);
326      return 0;
327    }
328
329    onCollab(collabParam: Record<string, Object>) {
330      const sessionId = this.createSessionFromWant(collabParam);
331      if (sessionId == -1) {
332        hilog.info(0x0000, 'testTag', 'Invalid session ID.');
333        return;
334      }
335      const collabToken = collabParam["ohos.dms.collabToken"] as string;
336      abilityConnectionManager.acceptConnect(sessionId, collabToken).then(() => {
337        hilog.info(0x0000, 'testTag', 'acceptConnect success');
338      }).catch(() => {
339        hilog.error(0x0000, 'testTag', 'failed');
340      })
341    }
342
343    createSessionFromWant(collabParam: Record<string, Object>): number {
344      let sessionId = -1;
345      const peerInfo = collabParam["PeerInfo"] as abilityConnectionManager.PeerInfo;
346      if (peerInfo == undefined) {
347        return sessionId;
348      }
349
350      const options = collabParam["ConnectOptions"] as abilityConnectionManager.ConnectOptions;
351      try {
352        sessionId = abilityConnectionManager.createAbilityConnectionSession("collabTest", this.context, peerInfo, options);
353        AppStorage.setOrCreate('sessionId', sessionId);
354        hilog.info(0x0000, 'testTag', 'createSession sessionId is' + sessionId);
355      } catch (error) {
356        hilog.error(0x0000, 'testTag', error);
357      }
358      return sessionId;
359    }
360  }
361  ```
362
363## abilityConnectionManager.disconnect
364
365disconnect(sessionId:&nbsp;number):&nbsp;void
366
367Disconnects the UIAbility connection to end the collaboration session.
368
369**System capability**: SystemCapability.DistributedSched.AppCollaboration
370
371**Parameters**
372
373| Name      | Type                                   | Mandatory  | Description       |
374| --------- | ------------------------------------- | ---- | --------- |
375| sessionId | number | Yes   | ID of the collaboration session.    |
376
377**Example**
378
379  ```ts
380  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
381  import { hilog } from '@kit.PerformanceAnalysisKit';
382
383  hilog.info(0x0000, 'testTag', 'disconnectRemoteAbility begin');
384  let sessionId = 100;
385  abilityConnectionManager.disconnect(sessionId);
386  ```
387
388## abilityConnectionManager.reject
389
390reject(token:&nbsp;string,&nbsp;reason:&nbsp;string):&nbsp;void;
391
392Rejects a connection request in a cross-device collaboration session. After a connection request sent from the peer application is rejected, a rejection reason is returned.
393
394**System capability**: SystemCapability.DistributedSched.AppCollaboration
395
396**Parameters**
397
398| Name      | Type                                     | Mandatory  | Description   |
399| --------- | --------------------------------------- | ---- | ----- |
400| token | string | Yes   | Token used for application collaboration management.   |
401| reason | string | Yes   | Reason why the connection is rejected.   |
402
403**Error codes**
404
405For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
406
407| ID| Error Message|
408| ------- | -------------------------------- |
409| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
410
411**Example**
412
413  ```ts
414  import { AbilityConstant, UIAbility, Want} from '@kit.AbilityKit';
415  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
416  import { hilog } from '@kit.PerformanceAnalysisKit';
417
418  export default class EntryAbility extends UIAbility {
419      onCollaborate(wantParam: Record<string, Object>): AbilityConstant.CollaborateResult {
420        hilog.info(0x0000, 'testTag', '%{public}s', 'on collaborate');
421        let collabParam = wantParam["ohos.extra.param.key.supportCollaborateIndex"] as Record<string, Object>;
422        const collabToken = collabParam["ohos.dms.collabToken"] as string;
423        const reason = "test";
424        hilog.info(0x0000, 'testTag', 'reject begin');
425        abilityConnectionManager.reject(collabToken, reason);
426        return AbilityConstant.CollaborateResult.REJECT;
427      }
428  }
429
430  ```
431
432## abilityConnectionManager.on('connect')
433
434on(type:&nbsp;'connect',&nbsp;sessionId:&nbsp;number,&nbsp;callback:&nbsp;Callback&lt;EventCallbackInfo&gt;):&nbsp;void
435
436Enables listening for **connect** events.
437
438**System capability**: SystemCapability.DistributedSched.AppCollaboration
439
440**Parameters**
441
442| Name      | Type                                   | Mandatory  | Description   |
443| --------- | ------------------------------------- | ---- | ----- |
444| type | string  | Yes   |   Event type. This field has a fixed value of **connect**. This event is triggered when [abilityConnectionManager.connect()](#abilityconnectionmanagerconnect) is called.  |
445| sessionId | number  | Yes   | ID of the collaboration session.   |
446| callback | Callback&lt;[EventCallbackInfo](#eventcallbackinfo)&gt; | Yes   | Registered callback function.   |
447
448**Error codes**
449
450For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
451
452| ID| Error Message|
453| ------- | -------------------------------- |
454| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
455
456**Example**
457
458  ```ts
459  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
460  import { hilog } from '@kit.PerformanceAnalysisKit';
461
462  let sessionId = 100;
463  abilityConnectionManager.on("connect", sessionId,(callbackInfo) => {
464    hilog.info(0x0000, 'testTag', 'session connect, sessionId is', callbackInfo.sessionId);
465  });
466
467  ```
468
469## abilityConnectionManager.off('connect')
470
471off(type:&nbsp;'connect',&nbsp;sessionId:&nbsp;number,&nbsp;callback?:&nbsp;Callback&lt;EventCallbackInfo&gt;):&nbsp;void
472
473Disables listening for **connect** events.
474
475**System capability**: SystemCapability.DistributedSched.AppCollaboration
476
477**Parameters**
478
479| Name      | Type                                   | Mandatory  | Description   |
480| --------- | ------------------------------------- | ---- | ----- |
481| type | string  | Yes   |   Event type. This field has a fixed value of **connect**.   |
482| sessionId | number  | Yes   | ID of the collaboration session.   |
483| callback | Callback&lt;[EventCallbackInfo](#eventcallbackinfo)&gt; | No   | Registered callback function.   |
484
485**Error codes**
486
487For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
488
489| ID| Error Message|
490| ------- | -------------------------------- |
491| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
492
493**Example**
494
495  ```ts
496  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
497  import { hilog } from '@kit.PerformanceAnalysisKit';
498
499  let sessionId = 100;
500  abilityConnectionManager.off("connect", sessionId);
501
502  ```
503
504## abilityConnectionManager.on('disconnect')
505
506on(type:&nbsp;'disconnect',&nbsp;sessionId:&nbsp;number,&nbsp;callback:&nbsp;Callback&lt;EventCallbackInfo&gt;):&nbsp;void
507
508Enables listening for **disconnect** events.
509
510**System capability**: SystemCapability.DistributedSched.AppCollaboration
511
512**Parameters**
513
514| Name      | Type                                   | Mandatory  | Description   |
515| --------- | ------------------------------------- | ---- | ----- |
516| type | string  | Yes   |   Event type. This field has a fixed value of **disconnect**. This event is triggered when [abilityConnectionManager.disconnect()](#abilityconnectionmanagerdisconnect) is called.  |
517| sessionId | number  | Yes   | ID of the collaboration session.   |
518| callback | Callback&lt;[EventCallbackInfo](#eventcallbackinfo)&gt; | Yes   | Registered callback function.   |
519
520**Error codes**
521
522For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
523
524| ID| Error Message|
525| ------- | -------------------------------- |
526| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
527
528**Example**
529
530  ```ts
531  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
532  import { hilog } from '@kit.PerformanceAnalysisKit';
533
534  let sessionId = 100;
535  abilityConnectionManager.on("disconnect", sessionId,(callbackInfo) => {
536    hilog.info(0x0000, 'testTag', 'session disconnect, sessionId is', callbackInfo.sessionId);
537  });
538
539  ```
540
541## abilityConnectionManager.off('disconnect')
542
543off(type:&nbsp;'disconnect',&nbsp;sessionId:&nbsp;number,&nbsp;callback?:&nbsp;Callback&lt;EventCallbackInfo&gt;):&nbsp;void
544
545Disables listening for **disconnect** events.
546
547**System capability**: SystemCapability.DistributedSched.AppCollaboration
548
549**Parameters**
550
551| Name      | Type                                   | Mandatory  | Description   |
552| --------- | ------------------------------------- | ---- | ----- |
553| type | string  | Yes   |   Event type. This field has a fixed value of **disconnect**.   |
554| sessionId | number  | Yes   | ID of the collaboration session.   |
555| callback | Callback&lt;[EventCallbackInfo](#eventcallbackinfo)&gt; | No   | Registered callback function.   |
556
557**Error codes**
558
559For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
560
561| ID| Error Message|
562| ------- | -------------------------------- |
563| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
564
565**Example**
566
567  ```ts
568  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
569  import { hilog } from '@kit.PerformanceAnalysisKit';
570
571  let sessionId = 100;
572  abilityConnectionManager.off("disconnect", sessionId);
573
574  ```
575
576## abilityConnectionManager.on('receiveMessage')
577
578on(type:&nbsp;'receiveMessage',&nbsp;sessionId:&nbsp;number,&nbsp;callback:&nbsp;Callback&lt;EventCallbackInfo&gt;):&nbsp;void
579
580Enables listening for **receiveMessage** events.
581
582**System capability**: SystemCapability.DistributedSched.AppCollaboration
583
584**Parameters**
585
586| Name      | Type                                   | Mandatory  | Description   |
587| --------- | ------------------------------------- | ---- | ----- |
588| type | string  | Yes   |   Event type. This field has a fixed value of **receiveMessage**. This event is triggered when [abilityConnectionManager.sendMessage()](#abilityconnectionmanagersendmessage) is called.  |
589| sessionId | number  | Yes   | ID of the collaboration session.   |
590| callback | Callback&lt;[EventCallbackInfo](#eventcallbackinfo)&gt; | Yes   | Registered callback function.   |
591
592**Error codes**
593
594For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
595
596| ID| Error Message|
597| ------- | -------------------------------- |
598| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
599
600**Example**
601
602  ```ts
603  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
604  import { hilog } from '@kit.PerformanceAnalysisKit';
605
606  let sessionId = 100;
607  abilityConnectionManager.on("receiveMessage", sessionId,(callbackInfo) => {
608    hilog.info(0x0000, 'testTag', 'receiveMessage, sessionId is', callbackInfo.sessionId);
609  });
610
611  ```
612
613## abilityConnectionManager.off('receiveMessage')
614
615off(type:&nbsp;'receiveMessage',&nbsp;sessionId:&nbsp;number,&nbsp;callback?:&nbsp;Callback&lt;EventCallbackInfo&gt;):&nbsp;void
616
617Disables listening for **receiveMessage** events.
618
619**System capability**: SystemCapability.DistributedSched.AppCollaboration
620
621**Parameters**
622
623| Name      | Type                                   | Mandatory  | Description   |
624| --------- | ------------------------------------- | ---- | ----- |
625| type | string  | Yes   |   Event type. This field has a fixed value of **receiveMessage**.   |
626| sessionId | number  | Yes   | ID of the collaboration session.   |
627| callback | Callback&lt;[EventCallbackInfo](#eventcallbackinfo)&gt; | No   | Registered callback function.   |
628
629**Error codes**
630
631For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
632
633| ID| Error Message|
634| ------- | -------------------------------- |
635| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
636
637**Example**
638
639  ```ts
640  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
641  import { hilog } from '@kit.PerformanceAnalysisKit';
642
643  let sessionId = 100;
644  abilityConnectionManager.off("receiveMessage", sessionId);
645
646  ```
647
648## abilityConnectionManager.on('receiveData')
649
650on(type:&nbsp;'receiveData',&nbsp;sessionId:&nbsp;number,&nbsp;callback:&nbsp;Callback&lt;EventCallbackInfo&gt;):&nbsp;void
651
652Enables listening for **receiveData** events.
653
654**System capability**: SystemCapability.DistributedSched.AppCollaboration
655
656**Parameters**
657
658| Name      | Type                                   | Mandatory  | Description   |
659| --------- | ------------------------------------- | ---- | ----- |
660| type | string  | Yes   |   Event type. This field has a fixed value of **receiveData**. This event is triggered when [abilityConnectionManager.sendData()](#abilityconnectionmanagersenddata) is called.  |
661| sessionId | number  | Yes   | ID of the collaboration session.   |
662| callback | Callback&lt;[EventCallbackInfo](#eventcallbackinfo)&gt; | Yes   | Registered callback function.   |
663
664**Error codes**
665
666For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
667
668| ID| Error Message|
669| ------- | -------------------------------- |
670| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
671
672**Example**
673
674  ```ts
675  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
676  import { hilog } from '@kit.PerformanceAnalysisKit';
677
678  let sessionId = 100;
679  abilityConnectionManager.on("receiveData", sessionId,(callbackInfo) => {
680    hilog.info(0x0000, 'testTag', 'receiveData, sessionId is', callbackInfo.sessionId);
681  });
682
683  ```
684
685## abilityConnectionManager.off('receiveData')
686
687off(type:&nbsp;'receiveData',&nbsp;sessionId:&nbsp;number,&nbsp;callback?:&nbsp;Callback&lt;EventCallbackInfo&gt;):&nbsp;void
688
689Disables listening for **receiveData** events.
690
691**System capability**: SystemCapability.DistributedSched.AppCollaboration
692
693**Parameters**
694
695| Name      | Type                                   | Mandatory  | Description   |
696| --------- | ------------------------------------- | ---- | ----- |
697| type | string  | Yes   |   Event type. This field has a fixed value of **receiveData**.   |
698| sessionId | number  | Yes   | ID of the collaboration session.   |
699| callback | Callback&lt;[EventCallbackInfo](#eventcallbackinfo)&gt; | No   | Registered callback function.   |
700
701**Error codes**
702
703For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
704
705| ID| Error Message|
706| ------- | -------------------------------- |
707| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
708
709**Example**
710
711  ```ts
712  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
713  import { hilog } from '@kit.PerformanceAnalysisKit';
714
715  let sessionId = 100;
716  abilityConnectionManager.off("receiveData", sessionId);
717
718  ```
719
720## abilityConnectionManager.sendMessage
721
722sendMessage(sessionId:&nbsp;number,&nbsp;msg:&nbsp;string):&nbsp;Promise&lt;void&gt;
723
724Sends text messages after a collaboration session is set up.
725
726**System capability**: SystemCapability.DistributedSched.AppCollaboration
727
728**Parameters**
729
730| Name      | Type                                     | Mandatory  | Description   |
731| --------- | --------------------------------------- | ---- | ----- |
732| sessionId | number | Yes   | ID of the collaboration session.|
733| msg | string | Yes   | Text content. The maximum size of the text content is 1 KB.|
734
735**Return value**
736
737| Type                 | Description              |
738| ------------------- | ---------------- |
739| Promise&lt;void&gt; | Promise that returns no value.|
740
741**Error codes**
742
743For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
744
745| ID| Error Message|
746| ------- | -------------------------------- |
747| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
748
749**Example**
750
751  ```ts
752  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
753  import { hilog } from '@kit.PerformanceAnalysisKit';
754
755  let sessionId = 100;
756  abilityConnectionManager.sendMessage(sessionId, "message send success").then(() => {
757    hilog.info(0x0000, 'testTag', "sendMessage success");
758  }).catch(() => {
759    hilog.error(0x0000, 'testTag', "connect failed");
760  })
761  ```
762
763## abilityConnectionManager.sendData
764
765sendData(sessionId:&nbsp;number,&nbsp;data:&nbsp;ArrayBuffer):&nbsp;Promise&lt;void&gt;
766
767Sends [ArrayBuffer](../../arkts-utils/arraybuffer-object.md) byte streams from one device to another after a connection is successfully established.
768
769**System capability**: SystemCapability.DistributedSched.AppCollaboration
770
771**Parameters**
772
773| Name      | Type                                     | Mandatory  | Description   |
774| --------- | --------------------------------------- | ---- | ----- |
775| sessionId | number | Yes   | ID of the collaboration session.|
776| data | [ArrayBuffer](../../arkts-utils/arraybuffer-object.md) | Yes   | Byte stream information.|
777
778**Return value**
779
780| Type                 | Description              |
781| ------------------- | ---------------- |
782| Promise&lt;void&gt; | Promise that returns no value.|
783
784**Error codes**
785
786For details about the error codes, see [Universal Error Codes](../errorcode-universal.md).
787
788| ID| Error Message|
789| ------- | -------------------------------- |
790| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. |
791
792**Example**
793
794  ```ts
795  import { abilityConnectionManager } from '@kit.DistributedServiceKit';
796  import { hilog } from '@kit.PerformanceAnalysisKit';
797  import { util } from '@kit.ArkTS';
798
799  let textEncoder = util.TextEncoder.create("utf-8");
800  const arrayBuffer  = textEncoder.encodeInto("data send success");
801
802  let sessionId = 100;
803  abilityConnectionManager.sendData(sessionId, arrayBuffer.buffer).then(() => {
804    hilog.info(0x0000, 'testTag', "sendMessage success");
805  }).catch(() => {
806    hilog.info(0x0000, 'testTag', "sendMessage failed");
807  })
808  ```
809
810## PeerInfo
811
812Defines the application collaboration information.
813
814**System capability**: SystemCapability.DistributedSched.AppCollaboration
815
816| Name                   | Type      |Read Only  | Optional  | Description                |
817| ----------------- | ------ | ----  | ---- | ------------------ |
818| deviceId          | string | Yes   |Yes   | Peer device ID.    |
819| bundleName        | string | Yes   |Yes   | Bundle name of the application.|
820| moduleName        | string | Yes   |Yes   | Module name of the peer application.|
821| abilityName       | string | Yes   |Yes    | Ability name of the peer application.|
822| serviceName       | string | Yes   |No    | Service name for the application.|
823
824## ConnectOptions
825
826Connection options for the application.
827
828**System capability**: SystemCapability.DistributedSched.AppCollaboration
829
830| Name         | Type   | Read Only  | Optional  | Description         |
831| ----------- | ------- | ---- | ---- | ----------- |
832| needSendData    | boolean  | No   | No   | Whether to send data. The value **true** indicates that data needs to be sent, and the value **false** indicates the opposite.    |
833| startOptions | [StartOptionParams](#startoptionparams) | No   | No   | Application startup options.|
834| parameters | Record&lt;string, string&gt;  | No   | No   | Additional configuration for the connection.   |
835
836## ConnectResult
837
838Defines the connection result.
839
840**System capability**: SystemCapability.DistributedSched.AppCollaboration
841
842| Name      | Type  | Read Only  | Optional  | Description     |
843| -------- | ------ | ---- | ---- | ------- |
844| isConnected | boolean | Yes   | Yes   | Whether the connection is successful. The value **true** indicates that the connection is successful, and the value **false** indicates the opposite.|
845| errorCode | [ConnectErrorCode](#connecterrorcode) | Yes   | No   | Connection error code.|
846| reason | string | Yes   | No   | Connection rejection reason.|
847
848## EventCallbackInfo
849
850Defines the event callback information.
851
852**System capability**: SystemCapability.DistributedSched.AppCollaboration
853
854| Name      | Type   | Readable  | Writable  | Description         |
855| -------- | ------ | ---- | ---- | ----------- |
856| sessionId | number   | Yes   | Yes   |   Collaboration session ID.|
857| reason | [DisconnectReason](#disconnectreason)     | Yes   | No   |   Disconnection reason.|
858| msg | string   | Yes   | No   |   Received message.|
859| data  | ArrayBuffer | Yes   | No   |   Received byte stream.|
860
861## CollaborateEventInfo
862
863Collaboration event information.
864
865**System capability**: SystemCapability.DistributedSched.AppCollaboration
866
867| Name      | Type  | Read Only  | Optional  | Description     |
868| -------- | ------ | ---- | ---- | ------- |
869| eventType | [CollaborateEventType](#collaborateeventtype) | Yes   | Yes   | Collaboration event type.|
870| eventMsg | string | Yes   | No   | Content of a collaboration event.|
871
872## ConnectErrorCode
873
874Enumerates connection error codes.
875
876**System capability**: SystemCapability.DistributedSched.AppCollaboration
877
878| Name|  Value| Description|
879|-------|-------|-------|
880| CONNECTED_SESSION_EXISTS | 0 |A session already exists between applications.|
881| PEER_APP_REJECTED | 1 |The peer application rejects the collaboration request.|
882| LOCAL_WIFI_NOT_OPEN | 2 |Wi-Fi is disabled at the local end.|
883| PEER_WIFI_NOT_OPEN | 3 |Wi-Fi is disabled at the peer end.|
884| PEER_ABILITY_NO_ONCOLLABORATE | 4 |The **onCollaborate** callback is not implemented.|
885| SYSTEM_INTERNAL_ERROR | 5 |An internal system error occurs.|
886
887## StartOptionParams
888
889Enumerates application start options.
890
891**System capability**: SystemCapability.DistributedSched.AppCollaboration
892
893| Name|  Value| Description|
894|-------|-------|-------|
895| START_IN_FOREGROUND | 0 |Start of the peer application in the foreground.|
896
897## CollaborateEventType
898
899Enumerates collaboration event types.
900
901**System capability**: SystemCapability.DistributedSched.AppCollaboration
902
903| Name|  Value| Description|
904|-------|-------|-------|
905| SEND_FAILURE | 0 |Task sending failure.|
906| COLOR_SPACE_CONVERSION_FAILURE | 1 |Color space conversion failure.|
907
908## DisconnectReason
909
910Enumerates the disconnection reasons.
911
912**System capability**: SystemCapability.DistributedSched.AppCollaboration
913
914| Name|  Value| Description|
915|-------|-------|-------|
916| PEER_APP_CLOSE_COLLABORATION | 0 |The peer application proactively disables collaboration.|
917| PEER_APP_EXIT | 1 |The peer application exits.|
918| NETWORK_DISCONNECTED | 2 |The network is disconnected.|
919
920## CollaborationKeys
921
922Enumerates application collaboration key values.
923
924**System capability**: SystemCapability.DistributedSched.AppCollaboration
925
926| Name               |                  Value            | Description                  |
927| -------------------| ------------------------------- | ---------------------- |
928| PEER_INFO           | ohos.collaboration.key.peerInfo | Key value of the peer device information.|
929| CONNECT_OPTIONS     | ohos.collaboration.key.connectOptions | Key value of the connection option.  |
930| COLLABORATE_TYPE    | ohos.collaboration.key.abilityCollaborateType | Key value of the collaboration type.  |
931
932## CollaborationValues
933
934Enumerates application collaboration values.
935
936**System capability**: SystemCapability.DistributedSched.AppCollaboration
937
938| Name                                     | Value      | Description                  |
939| ----------------------------------------- | -------- | ---------------------- |
940| ABILITY_COLLABORATION_TYPE_DEFAULT | ohos.collaboration.value.abilityCollab | Default collaboration.|
941| ABILITY_COLLABORATION_TYPE_CONNECT_PROXY  | ohos.collaboration.value.connectProxy | Collaboration via connection proxy.  |
942