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