From 449958d5e5de2a666fd75949653595532a936061 Mon Sep 17 00:00:00 2001 From: l30043718 Date: Tue, 5 Sep 2023 11:13:49 +0800 Subject: [PATCH] Description:ArkTS rectification Feature or Bugfix:ArkTS rectification Binary Source: No Signed-off-by: Lixiaoying25 --- .../ipc-rpc-development-guideline.md | 70 +++++++++------- .../connectivity/subscribe-remote-state.md | 5 +- .../reference/apis/js-apis-rpc.md | 82 +++++++++---------- 3 files changed, 83 insertions(+), 74 deletions(-) diff --git a/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md b/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md index 62c009f09c..e1ff64c093 100755 --- a/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md +++ b/zh-cn/application-dev/connectivity/ipc-rpc-development-guideline.md @@ -166,10 +166,10 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信, sptr samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); sptr remoteObject = samgr->GetSystemAbility(saId); sptr testAbility = iface_cast(remoteObject); // 使用iface_cast宏转换成具体类型 - + // 获取其他设备注册的SA的proxy sptr samgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - + // networkId是组网场景下对应设备的标识符,可以通过GetLocalNodeDeviceInfo获取 sptr remoteObject = samgr->GetSystemAbility(saId, networkId); sptr proxy(new TestAbilityProxy(remoteObject)); // 直接构造具体Proxy @@ -231,8 +231,10 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信, import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; import deviceManager from '@ohos.distributedHardware.deviceManager'; + import { BusinessError } from '@ohos.base'; - let proxy: rpc.RemoteProxy; + let dmInstance: deviceManager.DeviceManager | undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connectId: number; // 单个设备绑定Ability @@ -242,7 +244,7 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信, abilityName: "ohos.rpc.test.server.ServiceAbility", }; let connect: common.ConnectOptions = { - onConnect: (elementName, remote: rpc.RemoteProxy) => { + onConnect: (elementName, remote) => { proxy = remote; }, onDisconnect: (elementName) => { @@ -259,29 +261,36 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信, // 跨设备绑定 let deviceManagerCallback = (err: BusinessError, data: deviceManager.DeviceManager) => { if (err) { - console.error("createDeviceManager errCode:" + err.code + ",errMessage:" + err.message); - return; + console.error("createDeviceManager errCode:" + err.code + ",errMessage:" + err.message); + return; } console.info("createDeviceManager success"); - let dmInstance = data; + dmInstance = data; + } + try{ + deviceManager.createDeviceManager("ohos.rpc.test", deviceManagerCallback); + } catch(error) { + let e: BusinessError = error as BusinessError; + console.error("createDeviceManager errCode:" + err.code + ",errMessage:" + err.message); + } + + // 使用deviceManager获取目标设备NetworkId + if (dmInstance != undefined) { + let deviceList: Array = dmInstance.getTrustedDeviceListSync(); + let networkId: string = deviceList[0].networkId; + let want: Want = { + bundleName: "ohos.rpc.test.server", + abilityName: "ohos.rpc.test.service.ServiceAbility", + deviceId: networkId, + flags: 256 + }; + // 建立连接后返回的Id需要保存下来,在断开连接时需要作为参数传入 + // FA模型使用此方法连接服务 + // connectId = featureAbility.connectAbility(want, connect); + + // 第一个参数是本应用的包名,第二个参数是接收deviceManager的回调函数 + connectId = this.context.connectServiceExtensionAbility(want,connect); } - deviceManager.createDeviceManager("ohos.rpc.test", deviceManagerCallback); - - // 使用deviceManager获取目标设备NetworkId - let deviceList: Array = dmInstance.getTrustedDeviceListSync(); - let networkId: string = deviceList[0].networkId; - let want: Want = { - bundleName: "ohos.rpc.test.server", - abilityName: "ohos.rpc.test.service.ServiceAbility", - deviceId: networkId, - flags: 256 - }; - // 建立连接后返回的Id需要保存下来,在断开连接时需要作为参数传入 - // FA模型使用此方法连接服务 - // connectId = featureAbility.connectAbility(want, connect); - - // 第一个参数是本应用的包名,第二个参数是接收deviceManager的回调函数 - connectId = this.context.connectServiceExtensionAbility(want,connect); ``` 3. 服务端处理客户端请求 @@ -289,11 +298,7 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信, 服务端被绑定的Ability在onConnect方法里返回继承自rpc.RemoteObject的对象,该对象需要实现onRemoteMessageRequest方法,处理客户端的请求。 ```ts - onConnect(want: Want) { - const robj: rpc.RemoteObject = new Stub("rpcTestAbility"); - return robj; - } - class Stub extends rpc.RemoteObject { + class Stub extends rpc.RemoteObject { constructor(descriptor: string) { super(descriptor); } @@ -301,7 +306,11 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信, // 根据code处理客户端的请求 return true; } - } + } + onConnect(want: Want) { + const robj: rpc.RemoteObject = new Stub("rpcTestAbility"); + return robj; + } ``` 4. 客户端处理服务端响应 @@ -359,6 +368,7 @@ IPC/RPC的主要工作是让运行在不同进程的Proxy和Stub互相通信, import rpc from "@ohos.rpc"; // 仅FA模型需要导入@ohos.ability.featureAbility // import featureAbility from "@ohos.ability.featureAbility"; + function disconnectCallback() { console.info("disconnect ability done"); } diff --git a/zh-cn/application-dev/connectivity/subscribe-remote-state.md b/zh-cn/application-dev/connectivity/subscribe-remote-state.md index 15c6fc81fe..daed813db0 100755 --- a/zh-cn/application-dev/connectivity/subscribe-remote-state.md +++ b/zh-cn/application-dev/connectivity/subscribe-remote-state.md @@ -98,7 +98,6 @@ import Want from '@ohos.app.ability.Want'; import AbilityConstant from '@ohos.app.ability.AbilityConstant'; import window from '@ohos.window'; - export default class MainAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { console.log("[Demo] MainAbility onCreate"); @@ -134,9 +133,9 @@ export default class MainAbility extends UIAbility { import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; -let proxy: rpc.RemoteProxy; +let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { - onConnect: (elementName, remoteProxy: rpc.RemoteProxy) => { + onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); proxy = remoteProxy; }, diff --git a/zh-cn/application-dev/reference/apis/js-apis-rpc.md b/zh-cn/application-dev/reference/apis/js-apis-rpc.md index e27279f764..b328c7c0a5 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-rpc.md +++ b/zh-cn/application-dev/reference/apis/js-apis-rpc.md @@ -1289,8 +1289,8 @@ writeParcelable(val: Parcelable): void import { BusinessError } from '@ohos.base'; class MyParcelable implements rpc.Parcelable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor( num: number, str: string) { this.num = num; this.str = str; @@ -1346,8 +1346,8 @@ readParcelable(dataIn: Parcelable): void import { BusinessError } from '@ohos.base'; class MyParcelable implements rpc.Parcelable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -2595,7 +2595,7 @@ readException(): void import common from '@ohos.app.ability.common'; import { BusinessError } from '@ohos.base'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -2680,8 +2680,8 @@ writeParcelableArray(parcelableArray: Parcelable[]): void import { BusinessError } from '@ohos.base'; class MyParcelable implements rpc.Parcelable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -2740,8 +2740,8 @@ readParcelableArray(parcelableArray: Parcelable[]): void import { BusinessError } from '@ohos.base'; class MyParcelable implements rpc.Parcelable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -4285,8 +4285,8 @@ writeSequenceable(val: Sequenceable): boolean ```ts class MySequenceable implements rpc.Sequenceable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -4332,8 +4332,8 @@ readSequenceable(dataIn: Sequenceable): boolean ```ts class MySequenceable implements rpc.Sequenceable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -5105,7 +5105,7 @@ readException(): void import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -5180,8 +5180,8 @@ writeSequenceableArray(sequenceableArray: Sequenceable[]): boolean ```ts class MySequenceable implements rpc.Sequenceable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -5224,8 +5224,8 @@ readSequenceableArray(sequenceableArray: Sequenceable[]): void ```ts class MySequenceable implements rpc.Sequenceable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -5706,8 +5706,8 @@ marshalling(dataOut: MessageSequence): boolean ```ts class MyParcelable implements rpc.Parcelable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -5756,8 +5756,8 @@ unmarshalling(dataIn: MessageSequence): boolean ```ts class MyParcelable implements rpc.Parcelable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -5812,8 +5812,8 @@ marshalling(dataOut: MessageParcel): boolean ```ts class MySequenceable implements rpc.Sequenceable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -5862,8 +5862,8 @@ unmarshalling(dataIn: MessageParcel): boolean ```ts class MySequenceable implements rpc.Sequenceable { - num: number; - str: string; + num: number = 0; + str: string = ''; constructor(num: number, str: string) { this.num = num; this.str = str; @@ -5928,7 +5928,7 @@ asObject(): IRemoteObject import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6368,7 +6368,7 @@ sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: Me import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6446,7 +6446,7 @@ sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6532,7 +6532,7 @@ sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: Me import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6612,7 +6612,7 @@ sendMessageRequest(code: number, data: MessageSequence, reply: MessageSequence, import common from '@ohos.app.ability.common'; import { BusinessError } from '@ohos.base'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6696,7 +6696,7 @@ sendRequest(code: number, data: MessageParcel, reply: MessageParcel, options: Me import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6783,7 +6783,7 @@ getLocalInterface(interface: string): IRemoteBroker import common from '@ohos.app.ability.common'; import { BusinessError } from '@ohos.base'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6852,7 +6852,7 @@ queryLocalInterface(interface: string): IRemoteBroker import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6917,7 +6917,7 @@ registerDeathRecipient(recipient: DeathRecipient, flags: number): void import common from '@ohos.app.ability.common'; import { BusinessError } from '@ohos.base'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -6992,7 +6992,7 @@ addDeathRecipient(recipient: DeathRecipient, flags: number): boolean import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -7062,7 +7062,7 @@ unregisterDeathRecipient(recipient: DeathRecipient, flags: number): void import common from '@ohos.app.ability.common'; import { BusinessError } from '@ohos.base'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -7138,7 +7138,7 @@ removeDeathRecipient(recipient: DeathRecipient, flags: number): boolean import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -7209,7 +7209,7 @@ getDescriptor(): string import common from '@ohos.app.ability.common'; import { BusinessError } from '@ohos.base'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -7271,7 +7271,7 @@ getInterfaceDescriptor(): string import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); @@ -7326,7 +7326,7 @@ isObjectDead(): boolean import Want from '@ohos.app.ability.Want'; import common from '@ohos.app.ability.common'; - let proxy: rpc.IRemoteobject | undefined = undefined; + let proxy: rpc.IRemoteObject | undefined = undefined; let connect: common.ConnectOptions = { onConnect: (elementName, remoteProxy) => { console.log("RpcClient: js onConnect called."); -- GitLab