1e41f4b71Sopenharmony_ci# ConnectOptions
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci在连接指定的后台服务时作为入参,用于接收连接过程中的状态变化,如作为[connectServiceExtensionAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextconnectserviceextensionability)的入参,连接指定的ServiceExtensionAbility。
4e41f4b71Sopenharmony_ci
5e41f4b71Sopenharmony_ci> **说明:**
6e41f4b71Sopenharmony_ci> 
7e41f4b71Sopenharmony_ci> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。  
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ci## 导入模块
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci```ts
12e41f4b71Sopenharmony_ciimport { common } from '@kit.AbilityKit';
13e41f4b71Sopenharmony_ci```
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci## onConnect
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_cionConnect(elementName: ElementName, remote: rpc.IRemoteObject): void
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci建立连接时的回调函数。
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci**参数:**
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci| 参数名       | 类型                     | 必填   | 说明            |
26e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------- |
27e41f4b71Sopenharmony_ci| elementName | [ElementName](js-apis-bundleManager-elementName.md) | 是    | Ability的elementName。 |
28e41f4b71Sopenharmony_ci| remote | [rpc.IRemoteObject](../apis-ipc-kit/js-apis-rpc.md#iremoteobject) | 是    | IRemoteObject实例。 |
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci**示例:**
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci```ts
33e41f4b71Sopenharmony_ciimport { UIAbility, common, Want, AbilityConstant } from '@kit.AbilityKit';
34e41f4b71Sopenharmony_ciimport { bundleManager } from '@kit.AbilityKit';
35e41f4b71Sopenharmony_ciimport { rpc } from '@kit.IPCKit';
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_cilet connectWant: Want = {
38e41f4b71Sopenharmony_ci  bundleName: 'com.example.myapp',
39e41f4b71Sopenharmony_ci  abilityName: 'MyAbility'
40e41f4b71Sopenharmony_ci};
41e41f4b71Sopenharmony_ci
42e41f4b71Sopenharmony_cilet connectOptions: common.ConnectOptions = {
43e41f4b71Sopenharmony_ci  onConnect(elementName: bundleManager.ElementName, remote: rpc.IRemoteObject) {
44e41f4b71Sopenharmony_ci    console.log(`onConnect elementName: ${elementName}`);
45e41f4b71Sopenharmony_ci  },
46e41f4b71Sopenharmony_ci  onDisconnect(elementName: bundleManager.ElementName) {
47e41f4b71Sopenharmony_ci    console.log(`onDisconnect elementName: ${elementName}`);
48e41f4b71Sopenharmony_ci  },
49e41f4b71Sopenharmony_ci  onFailed(code: number) {
50e41f4b71Sopenharmony_ci    console.error(`onFailed code: ${code}`);
51e41f4b71Sopenharmony_ci  }
52e41f4b71Sopenharmony_ci};
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility {
55e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
56e41f4b71Sopenharmony_ci    let connection: number = this.context.connectServiceExtensionAbility(connectWant, connectOptions);
57e41f4b71Sopenharmony_ci  }
58e41f4b71Sopenharmony_ci}
59e41f4b71Sopenharmony_ci```
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci## onDisconnect
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_cionDisconnect(elementName: ElementName): void
64e41f4b71Sopenharmony_ci
65e41f4b71Sopenharmony_ci断开连接时的回调函数。
66e41f4b71Sopenharmony_ci
67e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci**参数:**
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci| 参数名       | 类型                     | 必填   | 说明            |
72e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------- |
73e41f4b71Sopenharmony_ci| elementName | [ElementName](js-apis-bundleManager-elementName.md) | 是    | Ability的elementName。 |
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci**示例:**
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci```ts
78e41f4b71Sopenharmony_ciimport { UIAbility, common, Want, AbilityConstant } from '@kit.AbilityKit';
79e41f4b71Sopenharmony_ciimport { bundleManager } from '@kit.AbilityKit';
80e41f4b71Sopenharmony_ciimport { rpc } from '@kit.IPCKit';
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_cilet connectWant: Want = {
83e41f4b71Sopenharmony_ci  bundleName: 'com.example.myapp',
84e41f4b71Sopenharmony_ci  abilityName: 'MyAbility'
85e41f4b71Sopenharmony_ci};
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_cilet connectOptions: common.ConnectOptions = {
88e41f4b71Sopenharmony_ci  onConnect(elementName: bundleManager.ElementName, remote: rpc.IRemoteObject) {
89e41f4b71Sopenharmony_ci    console.log(`onConnect elementName: ${elementName}`);
90e41f4b71Sopenharmony_ci  },
91e41f4b71Sopenharmony_ci  onDisconnect(elementName: bundleManager.ElementName) {
92e41f4b71Sopenharmony_ci    console.log(`onDisconnect elementName: ${elementName}`);
93e41f4b71Sopenharmony_ci  },
94e41f4b71Sopenharmony_ci  onFailed(code: number) {
95e41f4b71Sopenharmony_ci    console.error(`onFailed code: ${code}`);
96e41f4b71Sopenharmony_ci  }
97e41f4b71Sopenharmony_ci};
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility {
100e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
101e41f4b71Sopenharmony_ci    let connection: number = this.context.connectServiceExtensionAbility(connectWant, connectOptions);
102e41f4b71Sopenharmony_ci  }
103e41f4b71Sopenharmony_ci}
104e41f4b71Sopenharmony_ci```
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci## onFailed
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_cionFailed(code: number): void
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci连接失败时的回调函数。
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.Ability.AbilityRuntime.Core
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci**参数:**
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci| 参数名       | 类型                     | 必填   | 说明            |
117e41f4b71Sopenharmony_ci| -------- | ---------------------- | ---- | ------------- |
118e41f4b71Sopenharmony_ci| code | number | 是    | 连接指定Ability返回的结果code。<br>值为0表示连接成功,值为-1表示参数错误,值为-2表示未找到对应Ability。 |
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci**示例:**
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci```ts
123e41f4b71Sopenharmony_ciimport { UIAbility, common, Want, AbilityConstant } from '@kit.AbilityKit';
124e41f4b71Sopenharmony_ciimport { bundleManager } from '@kit.AbilityKit';
125e41f4b71Sopenharmony_ciimport { rpc } from '@kit.IPCKit';
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_cilet connectWant: Want = {
128e41f4b71Sopenharmony_ci  bundleName: 'com.example.myapp',
129e41f4b71Sopenharmony_ci  abilityName: 'MyAbility'
130e41f4b71Sopenharmony_ci};
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_cilet connectOptions: common.ConnectOptions = {
133e41f4b71Sopenharmony_ci  onConnect(elementName: bundleManager.ElementName, remote: rpc.IRemoteObject) {
134e41f4b71Sopenharmony_ci    console.log(`onConnect elementName: ${elementName}`);
135e41f4b71Sopenharmony_ci  },
136e41f4b71Sopenharmony_ci  onDisconnect(elementName: bundleManager.ElementName) {
137e41f4b71Sopenharmony_ci    console.log(`onDisconnect elementName: ${elementName}`);
138e41f4b71Sopenharmony_ci  },
139e41f4b71Sopenharmony_ci  onFailed(code: number) {
140e41f4b71Sopenharmony_ci    console.error(`onFailed code: ${code}`);
141e41f4b71Sopenharmony_ci  }
142e41f4b71Sopenharmony_ci};
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ciclass EntryAbility extends UIAbility {
145e41f4b71Sopenharmony_ci  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
146e41f4b71Sopenharmony_ci    let connection: number = this.context.connectServiceExtensionAbility(connectWant, connectOptions);
147e41f4b71Sopenharmony_ci  }
148e41f4b71Sopenharmony_ci}
149e41f4b71Sopenharmony_ci```
150