未验证 提交 d056b76e 编写于 作者: O openharmony_ci 提交者: Gitee

!18734 add atomic-services-support-sharing.md

Merge pull request !18734 from xieqiongyang/master
......@@ -62,6 +62,7 @@
- [跨端迁移(仅对系统应用开放)](hop-cross-device-migration.md)
- [多端协同(仅对系统应用开放)](hop-multi-device-collaboration.md)
- [订阅系统环境变量的变化](subscribe-system-environment-variable-changes.md)
- [原子化服务支持分享](atomic-services-support-sharing.md)
- 了解进程模型
- [进程模型概述](process-model-stage.md)
- 公共事件
......
# 设置原子化服务支持分享
原子化服务所提供的便捷服务,可以通过接入华为分享实现近距离快速分享,使便捷服务可以精准快速的推送至接收方,降低用户触达服务的成本,提升用户体检。
## 原子化服务分享
假设当前服务分享场景存在分享数据的目标应用和获取分享数据的应用。目标应用生命周期中增加`onShare()`方法,设置要分享的数据。启动目标应用,执行hdc shell aa dump -a 命令,查看设备中拉起的服务与进程,找到目标应用的missionId。启动当前应用,调用`abilityManager.acquireShareData()`方法,传入目标应用的missionId,得到目标应用的分享数据。
> **说明:**
当前获取数据的应用与分享数据的目标应用可以是同一个,missionId通过[missionManager.getMissionInfos()](../reference/apis/js-apis-app-ability-missionManager.md#getmissioninfos)方法来获取。
1. UIAbility组件提供了`UIAbility.onShare()`生命周期方法,应用可通过此方法设置要分享的数据。其中,ohos.extra.param.key.contentTitle表示分享框中对分享内容title的描述,ohos.extra.param.key.shareAbstract表示分享框中对携带内容的摘要描述,ohos.extra.param.key.shareUrl表示服务的在线地址。以上三项分享数据均是开发者填充,且为Object对象,对象的key分别为title,abstract,url。
```ts
import AbilityConstant from '@ohos.app.ability.AbilityConstant';
class MyUIAbility extends UIAbility {
onShare(wantParams) {
console.log('onShare');
wantParams['ohos.extra.param.key.contentTitle'] = {title: "W3"};
wantParams['ohos.extra.param.key.shareAbstract'] = {abstract: "communication for huawei employee"};
wantParams['ohos.extra.param.key.shareUrl'] = {url: "w3.huawei.com"};
}
}
```
2. 使用`abilityManager.acquireShareData()`方法获取目标应用要分享的数据。其中,missionId是分享数据目标应用的missionId,启动应用后通过hdc shell aa dump -a 命令查看或者`missionManager.getMissionInfos()`方法获取,wantParam是目标应用`UIAbility.onShare()`生命周期方法回调的分享数据。
```ts
import abilityManager from '@ohos.app.ability.abilityManager';
try {
abilityManager.acquireShareData(1, (err, wantParam) => {
if (err) {
console.error(`acquireShareData fail, err: ${JSON.stringify(err)}`);
} else {
console.log(`acquireShareData success, data: ${JSON.stringify(wantParam)}`);
}
});
} catch (paramError) {
console.error(`error.code: ${JSON.stringify(paramError.code)}, error.message: ${JSON.stringify(paramError.message)}`);
}
```
......@@ -388,7 +388,7 @@ abilityManager.getTopAbility().then((data) => {
acquireShareData(missionId: number, callback: AsyncCallback<{[key: string]: Object}>): void;
获取目标设备的分享数据(callback形式)。
获取目标设备的分享数据(callback形式)。其中,missionId是分享数据目标应用的missionId,启动应用后通过hdc shell aa dump -a 命令查看或者使用[missionManager.getMissionInfos()](js-apis-app-ability-missionManager.md#getmissioninfos)方法获取,callback是目标应用onShare()生命周期方法回调的分享数据,分享数据填充可看[UIAbility.onShare()](js-apis-app-ability-uiAbility.md#onshare)
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
......@@ -411,14 +411,17 @@ acquireShareData(missionId: number, callback: AsyncCallback<{[key: string]: Obje
```ts
import abilityManager from '@ohos.app.ability.abilityManager';
abilityManager.acquireShareData(1, (err, data) => {
if (err) {
console.error(`acquireShareData fail, err: ${JSON.stringify(err)}`);
} else {
console.log(`acquireShareData success, data: ${JSON.stringify(data)}`);
}
});
try {
abilityManager.acquireShareData(1, (err, wantParam) => {
if (err) {
console.error(`acquireShareData fail, err: ${JSON.stringify(err)}`);
} else {
console.log(`acquireShareData success, data: ${JSON.stringify(wantParam)}`);
}
});
} catch (paramError) {
console.error(`error.code: ${JSON.stringify(paramError.code)}, error.message: ${JSON.stringify(paramError.message)}`);
}
```
......@@ -426,7 +429,7 @@ abilityManager.acquireShareData(1, (err, data) => {
acquireShareData(missionId: number): Promise<{[key: string]: Object}>;
获取目标设备的分享数据(Promise形式)。
获取目标设备的分享数据(Promise形式)。其中,missionId是分享数据目标应用的missionId,启动应用后通过hdc shell aa dump -a 命令查看或者使用[missionManager.getMissionInfos()](js-apis-app-ability-missionManager.md#getmissionInfos)方法获取,Promise<{[key: string]: Object}>是目标应用onShare()生命周期方法回调的分享数据,分享数据填充可看[UIAbility.onShare()](js-apis-app-ability-uiAbility.md#onshare)
**系统能力**:以下各项对应的系统能力均为SystemCapability.Ability.AbilityRuntime.Core
......@@ -449,8 +452,8 @@ acquireShareData(missionId: number): Promise<{[key: string]: Object}>;
```ts
import abilityManager from '@ohos.app.ability.abilityManager';
try {
abilityManager.acquireShareData(1).then((data) => {
console.log(`acquireShareData success, data: ${JSON.stringify(data)}`);
abilityManager.acquireShareData(1).then((wantParam) => {
console.log(`acquireShareData success, data: ${JSON.stringify(wantParam)}`);
}).catch((err) => {
console.error(`acquireShareData fail, err: ${JSON.stringify(err)}`);
});
......
......@@ -315,7 +315,7 @@ class MyUIAbility extends UIAbility {
onShare(wantParam:{ [key: string]: Object }): void;
ability分享数据
ability设置分享数据。其中,ohos.extra.param.key.contentTitle表示分享框中对分享内容title的描述,ohos.extra.param.key.shareAbstract表示分享框中对携带内容的摘要描述,ohos.extra.param.key.shareUrl表示服务的在线地址。以上三项分享数据均是开发者填充,且为Object对象,对象的key分别为title,abstract,url
**系统能力**:SystemCapability.Ability.AbilityRuntime.AbilityCore
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册