From e54251962b5380ef7d11f3a26cee9dd7d4523159 Mon Sep 17 00:00:00 2001
From: zmx <1029211721@qq.com>
Date: Tue, 28 Dec 2021 15:38:03 +0800
Subject: [PATCH] add connectRemoteAbility material
Signed-off-by: zmx <1029211721@qq.com>
Change-Id: Ic9a0907e7f9196f6529189e93f2691ac98a8c90a
Signed-off-by: zmx <1029211721@qq.com>
---
.../ability/service-ability.md | 89 ++++++++++++++++++-
.../reference/apis/js-apis-featureAbility.md | 9 ++
2 files changed, 94 insertions(+), 4 deletions(-)
diff --git a/zh-cn/application-dev/ability/service-ability.md b/zh-cn/application-dev/ability/service-ability.md
index 908875bb42..c07488af97 100644
--- a/zh-cn/application-dev/ability/service-ability.md
+++ b/zh-cn/application-dev/ability/service-ability.md
@@ -104,13 +104,13 @@ var promise = await featureAbility.startAbility(
-## 连接Service
+## 连接本地Service
如果Service需要与Page Ability或其他应用的Service Ability进行交互,则须创建用于连接的Connection。Service支持其他Ability通过connectAbility()方法与其进行连接。
在使用connectAbility()处理回调时,需要传入目标Service的Want与IAbilityConnection的实例。IAbilityConnection提供了以下方法供开发者实现:onConnect()是用来处理连接Service成功的回调,onDisconnect()是用来处理Service异常死亡的回调,onFailed()是用来处理连接Service失败的回调。
-创建连接Service回调实例的代码示例如下:
+创建连接本地Service回调实例的代码示例如下:
```javascript
var mRemote;
@@ -128,7 +128,7 @@ function onFailedCallback(code){
}
```
-连接Service的代码示例如下:
+连接本地Service的代码示例如下:
```javascript
import featureAbility from '@ohos.ability.featureability';
@@ -158,7 +158,7 @@ export default {
class MyStub extends rpc.RemoteObject{
constructor(des) {
if (typeof des === 'string') {
- super(des, des.length);
+ super(des);
}
return null;
}
@@ -183,3 +183,84 @@ export default {
}
```
+## 连接远程Service
+
+如果Service需要与Page Ability或其他应用的Service Ability进行跨设备交互,则须创建用于连接的Connection。Service支持其他Ability通过connectAbility()方法与其进行跨设备连接。
+
+在使用connectAbility()处理回调时,需要传入目标Service的Want与IAbilityConnection的实例。IAbilityConnection提供了以下方法供开发者实现:onConnect()是用来处理连接Service成功的回调,onDisconnect()是用来处理Service异常死亡的回调,onFailed()是用来处理连接Service失败的回调。
+
+创建连接远程Service回调实例的代码示例如下:
+
+```javascript
+var mRemote;
+function onConnectCallback(element, remote){
+ console.log('ConnectRemoteAbility onConnect Callback')
+ mRemote = remote;
+}
+
+function onDisconnectCallback(element){
+ console.log('ConnectRemoteAbility onDisconnect Callback')
+}
+
+function onFailedCallback(code){
+ console.log('ConnectRemoteAbility onFailed Callback')
+}
+```
+
+目标Service的Want需要包含远程deviceId,该远程deviceId可通过deviceManager获取。
+
+连接远程Service的代码示例如下:
+
+```javascript
+import featureAbility from '@ohos.ability.featureability';
+var connId = featureAbility.connectAbility(
+ {
+ deviceId: deviceId,
+ bundleName: "com.jstest.serviceability",
+ abilityName: "com.jstest.serviceability.MainAbility",
+ },
+ {
+ onConnect: onConnectCallback,
+ onDisconnect: onDisconnectCallback,
+ onFailed: onFailedCallback,
+ },
+);
+```
+
+同时,Service侧也需要在onConnect()时返回IRemoteObject,从而定义与Service进行通信的接口。onConnect()需要返回一个IRemoteObject对象,OpenHarmony提供了IRemoteObject的默认实现,用户可以通过继承rpc.RemoteObject来创建自定义的实现类。
+
+Service侧把自身的实例返回给调用侧的代码示例如下:
+
+```javascript
+import rpc from "@ohos.rpc";
+
+var mMyStub;
+export default {
+ onStart(want) {
+ class MyStub extends rpc.RemoteObject{
+ constructor(des) {
+ if (typeof des === 'string') {
+ super(des);
+ }
+ return null;
+ }
+ onRemoteRequest(code, message, reply, option) {
+ }
+ }
+ mMyStub = new MyStub("ServiceAbility-test");
+ },
+ onCommand(want, restart, startId) {
+ console.log('SerivceAbility onCommand');
+ },
+ onConnect(want) {
+ console.log('SerivceAbility OnConnect');
+ return mMyStub;
+ },
+ onDisconnect() {
+ console.log('SerivceAbility OnDisConnect');
+ },
+ onStop() {
+ console.log('SerivceAbility onStop');
+ },
+}
+```
\ No newline at end of file
diff --git a/zh-cn/application-dev/reference/apis/js-apis-featureAbility.md b/zh-cn/application-dev/reference/apis/js-apis-featureAbility.md
index 5938d6095e..b6bd8e8254 100644
--- a/zh-cn/application-dev/reference/apis/js-apis-featureAbility.md
+++ b/zh-cn/application-dev/reference/apis/js-apis-featureAbility.md
@@ -774,6 +774,14 @@ featureAbility.terminateSelf().then((void) => { console.info("=============
| request | 只读 | Want | 是 | 表示被连接的ServiceAbility |
| options | 只读 | ConnectOptions | 是 | 被指定的回调方法 |
+* Want参数描述
+
+| 名称 | 读写属性 | 类型 | 必填 | 描述 |
+| ------------ | -------- | -------- | ---- | ---------------------------------- |
+| deviceId | 只读 | string | 否 | 表示被连接的ServiceAbility的设备id,缺省表示连接本地的ServiceAbility |
+| bundleName | 只读 | string | 是 | 表示被连接的ServiceAbility的包名 |
+| abilityName | 只读 | string | 是 | 表示被连接的ServiceAbility的类名 |
+
- ConnectOptions类型说明
| 名称 | 读写属性 | 类型 | 必填 | 描述 |
@@ -804,6 +812,7 @@ function onFailedCallback(code){
}
var connId = featureAbility.connectAbility(
{
+ deviceId: deviceId,
bundleName: "com.ix.ServiceAbility",
abilityName: "ServiceAbilityA",
},
--
GitLab