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: number): 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: number): PeerInfo | 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: number): Promise<ConnectResult> 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<ConnectResult> | 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: number, token: string): Promise<void> 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<void> |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: number): 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: string, reason: string): 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: 'connect', sessionId: number, callback: Callback<EventCallbackInfo>): 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<[EventCallbackInfo](#eventcallbackinfo)> | 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: 'connect', sessionId: number, callback?: Callback<EventCallbackInfo>): 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<[EventCallbackInfo](#eventcallbackinfo)> | 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: 'disconnect', sessionId: number, callback: Callback<EventCallbackInfo>): 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<[EventCallbackInfo](#eventcallbackinfo)> | 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: 'disconnect', sessionId: number, callback?: Callback<EventCallbackInfo>): 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<[EventCallbackInfo](#eventcallbackinfo)> | 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: 'receiveMessage', sessionId: number, callback: Callback<EventCallbackInfo>): 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<[EventCallbackInfo](#eventcallbackinfo)> | 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: 'receiveMessage', sessionId: number, callback?: Callback<EventCallbackInfo>): 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<[EventCallbackInfo](#eventcallbackinfo)> | 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: 'receiveData', sessionId: number, callback: Callback<EventCallbackInfo>): 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<[EventCallbackInfo](#eventcallbackinfo)> | 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: 'receiveData', sessionId: number, callback?: Callback<EventCallbackInfo>): 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<[EventCallbackInfo](#eventcallbackinfo)> | 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: number, msg: string): Promise<void> 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<void> | 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: number, data: ArrayBuffer): Promise<void> 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<void> | 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<string, string> | 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