js-apis-data-cloudData.md 15.4 KB
Newer Older
Y
ylq121 已提交
1 2
# @ohos.data.cloudData (端云协同)

3
端云协同提供结构化数据(RDB Store)端云同步的能力。即:云作为数据的中心节点,通过与云的数据同步,实现数据云备份、同帐号设备间的数据一致性。
Y
ylq121 已提交
4 5 6

该模块提供以下端云协同相关的常用功能:

Y
xiugai  
ylq121 已提交
7
- [Config](#config):提供配置端云协同的方法,包括云同步打开、关闭、清理数据、数据变化通知。
Y
ylq121 已提交
8 9 10 11 12 13 14 15

> **说明:** 
>
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

## 导入模块

```js
Y
xiugai  
ylq121 已提交
16
import cloudData from '@ohos.data.cloudData';
Y
ylq121 已提交
17 18 19 20 21 22
```

##   Action

清除本地数据云信息的行为枚举。

Y
xiugai  
ylq121 已提交
23 24
**系统接口:** 此接口为系统接口。

Y
ylq121 已提交
25 26 27 28
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

| 名称      | 说明                         |
| --------- | ---------------------------- |
Y
xiugai  
ylq121 已提交
29 30
| CLEAR_CLOUD_INFO | 清除云标识信息。 |
| CLEAR_CLOUD_DATA_AND_INFO |清除所有云相关数据,包括云标识信息以及从云端下载的数据(不包括本地已修改或生成的数据)。   |
Y
ylq121 已提交
31 32 33

## Config

Y
xiugai  
ylq121 已提交
34
提供配置端云协同的方法,包括云同步打开、关闭、清理数据、数据变化通知。
Y
ylq121 已提交
35 36 37

### enableCloud

Y
sy  
ylq121 已提交
38
static enableCloud(accountId: string, switches: {[bundleName: string]: boolean}, callback: AsyncCallback<void>):void
Y
ylq121 已提交
39 40 41

打开端云协同,使用callback异步回调。

Y
add doc  
ylq121 已提交
42 43
**系统接口:** 此接口为系统接口。

Y
xiugai  
ylq121 已提交
44 45
**需要权限**:ohos.permission.CLOUDDATA_CONFIG

Y
ylq121 已提交
46 47 48 49
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

**参数:**

Y
xiugai  
ylq121 已提交
50 51 52 53 54
| 参数名    | 类型                            | 必填 | 说明                                                         |
| --------- | ------------------------------- | ---- | ------------------------------------------------------------ |
| accountId | string                          | 是   | 具体打开的云ID。                                             |
| switches  | {[bundleName: string]: boolean} | 是   | 各应用的端云协同开关信息,true为打开该应用端云开关,false为关闭该应用端云开关。 |
| callback  | AsyncCallback<void>       | 是   | 回调函数。                                                   |
Y
ylq121 已提交
55 56 57 58

**示例:**

```js
Y
xiugai  
ylq121 已提交
59 60
let account = 'test_id';
let switches = { 'test_bundleName1': true, 'test_bundleName2': false };
Y
ylq121 已提交
61
try {
Y
xiugai  
ylq121 已提交
62 63 64
    cloudData.Config.enableCloud(account, switches, function (err) {
        if (err === undefined) {
            console.info('Succeeded in enabling cloud');
Y
xiugai  
ylq121 已提交
65
        } else {
Y
xiugai  
ylq121 已提交
66
            console.error(`Failed to enable.Code: ${err.code}, message: ${err.message}`);
Y
xiugai  
ylq121 已提交
67 68
        }
    });
Y
xiugai  
ylq121 已提交
69
} catch (error) {
Y
xiugai  
ylq121 已提交
70
    console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
ylq121 已提交
71 72 73 74 75 76 77 78 79
}
```

### enableCloud

static enableCloud(accountId: string, switches: {[bundleName: string]: boolean}): Promise<void>

打开端云协同,使用Promise异步回调。

Y
add doc  
ylq121 已提交
80 81
**系统接口:** 此接口为系统接口。

Y
xiugai  
ylq121 已提交
82 83
**需要权限**:ohos.permission.CLOUDDATA_CONFIG

Y
ylq121 已提交
84 85 86 87
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

**参数:**

Y
xiugai  
ylq121 已提交
88 89 90 91
| 参数名    | 类型                            | 必填 | 说明                                                         |
| --------- | ------------------------------- | ---- | ------------------------------------------------------------ |
| accountId | string                          | 是   | 具体打开的云ID。                                             |
| switches  | {[bundleName: string]: boolean} | 是   | 各应用的端云协同开关信息,true为打开该应用端云开关,false为关闭该应用端云开关。 |
Y
ylq121 已提交
92 93 94 95 96 97 98 99 100 101

**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise<void> | 无返回结果的Promise对象。 |

**示例:**

```js
Y
xiugai  
ylq121 已提交
102 103
let account = 'test_id';
let switches = { 'test_bundleName1': true, 'test_bundleName2': false };
Y
ylq121 已提交
104
try {
Y
xiugai  
ylq121 已提交
105 106 107
    cloudData.Config.enableCloud(account, switches).then(() => {
        console.info('Succeeded in enabling cloud');
    }).catch((err) => {
Y
xiugai  
ylq121 已提交
108
        console.error(`Failed to enable.Code: ${err.code}, message: ${err.message}`);
Y
xiugai  
ylq121 已提交
109
    });
Y
xiugai  
ylq121 已提交
110
} catch (error) {
Y
xiugai  
ylq121 已提交
111
    console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
ylq121 已提交
112 113 114 115 116
}
```

### disableCloud

Y
sy  
ylq121 已提交
117
static disableCloud(accountId: string, callback: AsyncCallback<void>):void
Y
ylq121 已提交
118 119 120

关闭端云协同,使用callback异步回调。

Y
add doc  
ylq121 已提交
121 122
**系统接口:** 此接口为系统接口。

Y
xiugai  
ylq121 已提交
123 124
**需要权限**:ohos.permission.CLOUDDATA_CONFIG

Y
ylq121 已提交
125 126 127 128
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

**参数:**

Y
xiugai  
ylq121 已提交
129 130 131 132
| 参数名    | 类型                      | 必填 | 说明             |
| --------- | ------------------------- | ---- | ---------------- |
| accountId | string                    | 是   | 具体打开的云ID。 |
| callback  | AsyncCallback<void> | 是   | 回调函数。       |
Y
ylq121 已提交
133 134 135 136

**示例:**

```js
Y
xiugai  
ylq121 已提交
137
let account = 'test_id';
Y
ylq121 已提交
138
try {
Y
xiugai  
ylq121 已提交
139 140 141
    cloudData.Config.disableCloud(account, function (err) {
        if (err === undefined) {
            console.info('Succeeded in disabling cloud');
Y
xiugai  
ylq121 已提交
142
        } else {
Y
xiugai  
ylq121 已提交
143
            console.error(`Failed to disableCloud. Code: ${err.code}, message: ${err.message}`);
Y
xiugai  
ylq121 已提交
144 145
        }
    });
Y
xiugai  
ylq121 已提交
146 147
} catch (error) {
    console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
ylq121 已提交
148 149 150 151 152 153 154 155 156
}
```

### disableCloud

static disableCloud(accountId: string): Promise<void>

关闭端云协同,使用Promise异步回调。

Y
add doc  
ylq121 已提交
157 158
**系统接口:** 此接口为系统接口。

Y
xiugai  
ylq121 已提交
159 160
**需要权限**:ohos.permission.CLOUDDATA_CONFIG

Y
ylq121 已提交
161 162 163 164
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

**参数:**

Y
xiugai  
ylq121 已提交
165 166 167
| 参数名    | 类型   | 必填 | 说明             |
| --------- | ------ | ---- | ---------------- |
| accountId | string | 是   | 具体打开的云ID。 |
Y
ylq121 已提交
168 169 170 171 172 173 174 175 176 177

**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise<void> | 无返回结果的Promise对象。 |

**示例:**

```js
Y
xiugai  
ylq121 已提交
178
let account = 'test_id';
Y
ylq121 已提交
179
try {
Y
xiugai  
ylq121 已提交
180 181 182
    cloudData.Config.disableCloud(account).then(() => {
        console.info('Succeeded in disabling cloud');
    }).catch((err) => {
Y
xiugai  
ylq121 已提交
183
        console.error(`Failed to disableCloud. Code: ${err.code}, message: ${err.message}`);
Y
xiugai  
ylq121 已提交
184
    });
Y
xiugai  
ylq121 已提交
185
} catch (error) {
Y
xiugai  
ylq121 已提交
186
    console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
ylq121 已提交
187 188 189 190 191
}
```

### changeAppCloudSwitch

Y
sy  
ylq121 已提交
192
static changeAppCloudSwitch(accountId: string,bundleName:string,status:boolean, callback: AsyncCallback<void>):void
Y
ylq121 已提交
193 194 195

修改单个应用端云协同开关,使用callback异步回调。

Y
add doc  
ylq121 已提交
196 197
**系统接口:** 此接口为系统接口。

Y
xiugai  
ylq121 已提交
198 199
**需要权限**:ohos.permission.CLOUDDATA_CONFIG

Y
ylq121 已提交
200 201 202 203 204 205
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

**参数:**

| 参数名    | 类型                            | 必填 | 说明                         |
| --------- | ------------------------------- | ---- | ---------------------------- |
Y
xiugai  
ylq121 已提交
206
| accountId | string                          | 是   | 具体打开的云ID。 |
Y
ylq121 已提交
207
| bundleName| string                         | 是   | 应用名 |
Y
xiugai  
ylq121 已提交
208
| status    | boolean                        | 是   | 应用的端云协同开关信息,true为打开该应用端云开关,false为关闭该应用端云开关。 |
Y
ylq121 已提交
209 210 211 212 213
| callback  | AsyncCallback<void>       | 是   | 回调函数。                   |

**示例:**

```js
Y
xiugai  
ylq121 已提交
214 215
let account = 'test_id';
let bundleName = 'test_bundleName';
Y
ylq121 已提交
216
try {
Y
xiugai  
ylq121 已提交
217 218 219
    cloudData.Config.changeAppCloudSwitch(account, bundleName, true, function (err) {
        if (err === undefined) {
            console.info('Succeeded in changing App cloud switch');
Y
xiugai  
ylq121 已提交
220
        } else {
Y
xiugai  
ylq121 已提交
221
            console.error(`Failed to change App cloud switch. Code: ${err.code}, message: ${err.message}`);
Y
xiugai  
ylq121 已提交
222 223
        }
    });
Y
xiugai  
ylq121 已提交
224
} catch (error) {
Y
xiugai  
ylq121 已提交
225
    console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
ylq121 已提交
226 227 228 229 230 231 232 233 234
}
```

### changeAppCloudSwitch

static changeAppCloudSwitch(accountId: string,bundleName:string,status:boolean): Promise<void>

修改单个应用端云协同开关,使用Promise异步回调。

Y
add doc  
ylq121 已提交
235 236
**系统接口:** 此接口为系统接口。

Y
xiugai  
ylq121 已提交
237 238
**需要权限**:ohos.permission.CLOUDDATA_CONFIG

Y
ylq121 已提交
239 240 241 242 243 244
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

**参数:**

| 参数名    | 类型                            | 必填 | 说明                         |
| --------- | ------------------------------- | ---- | ---------------------------- |
Y
xiugai  
ylq121 已提交
245
| accountId | string                          | 是   | 具体打开的云ID。 |
Y
ylq121 已提交
246
| bundleName| string                         | 是   | 应用名 |
Y
xiugai  
ylq121 已提交
247
| status    | boolean                        | 是   | 应用的端云协同开关信息,true为打开该应用端云开关,false为关闭该应用端云开关。 |
Y
ylq121 已提交
248 249 250 251 252 253 254 255 256 257

**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise<void> | 无返回结果的Promise对象。 |

**示例:**

```js
Y
xiugai  
ylq121 已提交
258 259
let account = 'test_id';
let bundleName = 'test_bundleName';
Y
ylq121 已提交
260
try {
Y
xiugai  
ylq121 已提交
261 262 263
    cloudData.Config.changeAppCloudSwitch(account, bundleName, true).then(() => {
        console.info('Succeeded in changing App cloud switch');
    }).catch((err) => {
Y
xiugai  
ylq121 已提交
264
        console.error(`Failed to change App cloud switch. Code is ${err.code}, message is ${err.message}`);
Y
xiugai  
ylq121 已提交
265
    });
Y
xiugai  
ylq121 已提交
266
} catch (error) {
Y
xiugai  
ylq121 已提交
267
    console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
ylq121 已提交
268 269 270 271 272
}
```

### notifyDataChange

Y
sy  
ylq121 已提交
273
static notifyDataChange(accountId: string,bundleName:string, callback: AsyncCallback<void>):void
Y
ylq121 已提交
274 275 276

通知云端的数据变更,使用callback异步回调。

Y
add doc  
ylq121 已提交
277 278
**系统接口:** 此接口为系统接口。

Y
xiugai  
ylq121 已提交
279 280
**需要权限**:ohos.permission.CLOUDDATA_CONFIG

Y
ylq121 已提交
281
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Server
Y
ylq121 已提交
282 283 284

**参数:**

Y
xiugai  
ylq121 已提交
285 286 287 288 289
| 参数名     | 类型                      | 必填 | 说明             |
| ---------- | ------------------------- | ---- | ---------------- |
| accountId  | string                    | 是   | 具体打开的云ID。 |
| bundleName | string                    | 是   | 应用名           |
| callback   | AsyncCallback<void> | 是   | 回调函数。       |
Y
ylq121 已提交
290 291 292 293

**示例:**

```js
Y
xiugai  
ylq121 已提交
294 295
let account = 'test_id';
let bundleName = 'test_bundleName';
Y
ylq121 已提交
296
try {
Y
xiugai  
ylq121 已提交
297 298 299
    cloudData.Config.notifyDataChange(account, bundleName, function (err) {
        if (err === undefined) {
            console.info('Succeeded in notifying the change of data');
Y
xiugai  
ylq121 已提交
300
        } else {
Y
xiugai  
ylq121 已提交
301
            console.error(`Failed to notify the change of data. Code: ${err.code}, message: ${err.message}`);
Y
xiugai  
ylq121 已提交
302 303
        }
    });
Y
xiugai  
ylq121 已提交
304
} catch (error) {
Y
xiugai  
ylq121 已提交
305
    console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
ylq121 已提交
306 307 308 309 310 311 312 313 314
}
```

### notifyDataChange

static notifyDataChange(accountId: string,bundleName:string): Promise<void>

通知云端的数据变更,使用Promise异步回调。

Y
add doc  
ylq121 已提交
315 316
**系统接口:** 此接口为系统接口。

Y
xiugai  
ylq121 已提交
317 318
**需要权限**:ohos.permission.CLOUDDATA_CONFIG

Y
ylq121 已提交
319
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Server
Y
ylq121 已提交
320 321 322

**参数:**

Y
xiugai  
ylq121 已提交
323 324 325 326
| 参数名     | 类型   | 必填 | 说明             |
| ---------- | ------ | ---- | ---------------- |
| accountId  | string | 是   | 具体打开的云ID。 |
| bundleName | string | 是   | 应用名           |
Y
ylq121 已提交
327 328 329 330 331 332 333 334 335 336

**返回值:**

| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise<void> | 无返回结果的Promise对象。 |

**示例:**

```js
Y
xiugai  
ylq121 已提交
337 338
let account = 'test_id';
let bundleName = 'test_bundleName';
Y
ylq121 已提交
339
try {
Y
xiugai  
ylq121 已提交
340 341 342
    cloudData.Config.notifyDataChange(account, bundleName).then(() => {
        console.info('Succeeded in notifying the change of data');
    }).catch((err) => {
Y
xiugai  
ylq121 已提交
343
        console.error(`Failed to notify the change of data. Code: ${err.code}, message: ${err.message}`);
Y
xiugai  
ylq121 已提交
344
    });
Y
xiugai  
ylq121 已提交
345
} catch (error) {
Y
xiugai  
ylq121 已提交
346
    console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
ylq121 已提交
347 348 349
}
```

Y
update  
ylq121 已提交
350 351
###  clean

Y
xiugai  
ylq121 已提交
352
static clean(accountId: string, appActions: {[bundleName: string]: Action},  callback: AsyncCallback<void>):void
Y
update  
ylq121 已提交
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367

清除本地数据中云信息,使用callback异步回调。

**系统接口:** 此接口为系统接口。

**需要权限**:ohos.permission.CLOUDDATA_CONFIG

**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| accountId  | string                                                       | 是   | 具体打开的云ID。     |
| appActions | {[bundleName: string]: [Action](https://gitee.com/openharmony/docs/blob/0a732228c11c5b8a6620444b7778aea745054735/zh-cn/application-dev/reference/apis/js-apis-data-cloudData.md#Action)} | 是   | 要清除数据的应用信息 |
Y
xiugai  
ylq121 已提交
368
| callback   | AsyncCallback<void>                                    | 是   | 回调函数。           |
Y
update  
ylq121 已提交
369 370 371 372

**示例:**

```js
Y
xiugai  
ylq121 已提交
373
let action = cloudData.Action;
Y
update  
ylq121 已提交
374
let account = "test_id";
Y
xiugai  
ylq121 已提交
375 376 377
let bundleName1 = "test_bundleName1";
let bundleName2 = "test_bundleName2";
let appActions = { [bundleName1]: action.CLEAR_CLOUD_INFO, [bundleName2]: action.CLEAR_CLOUD_DATA_AND_INFO };
Y
update  
ylq121 已提交
378
try {
Y
xiugai  
ylq121 已提交
379 380 381 382 383 384 385
  cloudData.Config.clean(account, appActions, function (err, data) {
    if (err == undefined) {
      console.info('Succeeding in cleaning cloud data');
    } else {
      console.error(`Failed to clean. Code: ${err.code}, message: ${err.message}`);
    }
  });
Y
update  
ylq121 已提交
386
} catch (e) {
Y
xiugai  
ylq121 已提交
387
  console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
update  
ylq121 已提交
388 389 390 391 392
}
```

### clean

Y
xiugai  
ylq121 已提交
393
static clean(accountId: string, appActions: {[bundleName: string]: Action}): Promise<void>
Y
update  
ylq121 已提交
394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411

清除本地数据中云信息,使用Promise异步回调。

**系统接口:** 此接口为系统接口。

**需要权限**:ohos.permission.CLOUDDATA_CONFIG

**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Config

**参数:**

| 参数名     | 类型                                                         | 必填 | 说明                 |
| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
| accountId  | string                                                       | 是   | 具体打开的云ID。     |
| appActions | {[bundleName: string]: [Action](https://gitee.com/openharmony/docs/blob/0a732228c11c5b8a6620444b7778aea745054735/zh-cn/application-dev/reference/apis/js-apis-data-cloudData.md#Action)} | 是   | 要清除数据的应用信息 |

**返回值:**

Y
xiugai  
ylq121 已提交
412 413 414
| 类型                | 说明                      |
| ------------------- | ------------------------- |
| Promise<void> | 无返回结果的Promise对象。 |
Y
update  
ylq121 已提交
415 416 417 418

**示例:**

```js
Y
xiugai  
ylq121 已提交
419
let action = cloudData.Action;
Y
update  
ylq121 已提交
420
let account = "test_id";
Y
xiugai  
ylq121 已提交
421 422 423
let bundleName1 = "test_bundleName1";
let bundleName2 = "test_bundleName2";
let appActions = { [bundleName1]: action.CLEAR_CLOUD_INFO, [bundleName2]: action.CLEAR_CLOUD_DATA_AND_INFO };
Y
update  
ylq121 已提交
424
try {
Y
xiugai  
ylq121 已提交
425 426 427 428 429
  cloudData.Config.clean(account, appActions).then((data) => {
    console.info('Succeeding in cleaning cloud data');
  }).catch((error) => {
    console.error(`Failed to clean. Code: ${err.code}, message: ${err.message}`);
  });
Y
update  
ylq121 已提交
430
} catch (e) {
Y
xiugai  
ylq121 已提交
431
  console.error(`An unexpected error occurred. Code: ${error.code}, message: ${error.message}`);
Y
update  
ylq121 已提交
432 433
}
```