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

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

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

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

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

## 导入模块

```js
import ddm from '@ohos.data.cloudData';
```

##   Action

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

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

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

## Config

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

### enableCloud

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

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

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

**参数:**

Y
xiugai  
ylq121 已提交
44 45 46 47 48
| 参数名    | 类型                            | 必填 | 说明                       |
| --------- | ------------------------------- | ---- | -------------------------- |
| accountId | string                          | 是   | 具体打开的云ID。           |
| switches  | {[bundleName: string]: boolean} | 是   | 各应用的端云协同开关信息。 |
| callback  | AsyncCallback<void>       | 是   | 回调函数。                 |
Y
ylq121 已提交
49 50 51 52 53

**示例:**

```js
let account = "test_id";
Y
xiugai  
ylq121 已提交
54
let switches = { "test_bundleName1": true, "test_bundleName2": false };
Y
ylq121 已提交
55
try {
Y
xiugai  
ylq121 已提交
56 57 58 59 60 61 62
    await ddm.Config.enableCloud(account, function (err, data) {
        if (err == undefined) {
            console.info('Succeeding in enabling cloud');
        } else {
            console.error('Failed to enable' + `, error code is ${err.code}, message is $ { err.message }`);
        }
    });
Y
ylq121 已提交
63
} catch (e) {
Y
xiugai  
ylq121 已提交
64
    console.error('An unexpected error occurred' + `, error code is ${e.code}, message is $ { e.message }`);
Y
ylq121 已提交
65 66 67 68 69 70 71 72 73 74 75 76 77
}
```

### enableCloud

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

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

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

**参数:**

Y
xiugai  
ylq121 已提交
78 79 80 81
| 参数名    | 类型                            | 必填 | 说明                       |
| --------- | ------------------------------- | ---- | -------------------------- |
| accountId | string                          | 是   | 具体打开的云ID。           |
| switches  | {[bundleName: string]: boolean} | 是   | 各应用的端云协同开关信息。 |
Y
ylq121 已提交
82 83 84 85 86 87 88 89 90 91 92

**返回值:**

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

**示例:**

```js
let account = "test_id";
Y
xiugai  
ylq121 已提交
93
let switches = { "test_bundleName1": true, "test_bundleName2": false };
Y
ylq121 已提交
94
try {
Y
xiugai  
ylq121 已提交
95 96 97 98 99
    await ddm.Config.enableCloud(account).then((data) => {
        console.info('Succeeding in enabling cloud');
    }).catch((error) => {
        console.error('Failed to enable' + `, error code is ${error.code}, message is $ { error.message }`);
    });
Y
ylq121 已提交
100
} catch (e) {
Y
xiugai  
ylq121 已提交
101
    console.error('An unexpected error occurred' + `, error code is ${e.code}, message is $ { e.message }`);
Y
ylq121 已提交
102 103 104 105 106
}
```

### disableCloud

Y
sy  
ylq121 已提交
107
static disableCloud(accountId: string, callback: AsyncCallback<void>):void
Y
ylq121 已提交
108 109 110 111 112 113 114

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

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

**参数:**

Y
xiugai  
ylq121 已提交
115 116 117 118
| 参数名    | 类型                      | 必填 | 说明             |
| --------- | ------------------------- | ---- | ---------------- |
| accountId | string                    | 是   | 具体打开的云ID。 |
| callback  | AsyncCallback<void> | 是   | 回调函数。       |
Y
ylq121 已提交
119 120 121 122 123 124

**示例:**

```js
let account = "test_id";
try {
Y
xiugai  
ylq121 已提交
125 126 127 128 129 130 131
    await ddm.Config.disableCloud(account, function (err, data) {
        if (err == undefined) {
            console.info('Succeeding in disabling cloud');
        } else {
            console.error('Failed to disableCloud' + `, error code is ${err.code}, message is ${err.message}`);
        }
    });
Y
ylq121 已提交
132
} catch (e) {
Y
xiugai  
ylq121 已提交
133
    console.error('An unexpected error occurred' + `, error code is ${e.code}, message is ${e.message}`);
Y
ylq121 已提交
134 135 136 137 138 139 140 141 142 143 144 145 146
}
```

### disableCloud

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

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

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

**参数:**

Y
xiugai  
ylq121 已提交
147 148 149
| 参数名    | 类型   | 必填 | 说明             |
| --------- | ------ | ---- | ---------------- |
| accountId | string | 是   | 具体打开的云ID。 |
Y
ylq121 已提交
150 151 152 153 154 155 156 157 158 159 160

**返回值:**

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

**示例:**

```js
let account = "test_id";
Y
xiugai  
ylq121 已提交
161
let switches = { "test_bundleName1": true, "test_bundleName2": false };
Y
ylq121 已提交
162
try {
Y
xiugai  
ylq121 已提交
163 164 165 166 167
    await  ddm.Config.disableCloud(account).then((data) => {
        console.info('Succeeding in disabling cloud');
    }).catch((error) => {
        console.error('Failed to disableCloud' + `, error code is ${error.code}, message is ${error.message}`);
    });
Y
ylq121 已提交
168
} catch (e) {
Y
xiugai  
ylq121 已提交
169
    console.error('An unexpected error occurred' + `, error code is ${e.code}, message is ${e.message}`);
Y
ylq121 已提交
170 171 172 173 174
}
```

### changeAppCloudSwitch

Y
sy  
ylq121 已提交
175
static changeAppCloudSwitch(accountId: string,bundleName:string,status:boolean, callback: AsyncCallback<void>):void
Y
ylq121 已提交
176 177 178 179 180 181 182 183 184

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

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

**参数:**

| 参数名    | 类型                            | 必填 | 说明                         |
| --------- | ------------------------------- | ---- | ---------------------------- |
Y
xiugai  
ylq121 已提交
185
| accountId | string                          | 是   | 具体打开的云ID。 |
Y
ylq121 已提交
186 187 188 189 190 191 192 193 194 195
| bundleName| string                         | 是   | 应用名 |
| status    | boolean                        | 是   | 应用的端云协同开关状态信息。 |
| callback  | AsyncCallback<void>       | 是   | 回调函数。                   |

**示例:**

```js
let account = "test_id";
let bundleName = "test_bundleName";
try {
Y
xiugai  
ylq121 已提交
196 197 198 199 200 201 202
    await ddm.Config.changeAppCloudSwitch(account, bundleName, true, function (err, data) {
        if (err == undefined) {
            console.info('Succeeding in changing App cloud switch');
        } else {
            console.error('Failed to change App cloud switch' + `, error code is ${err.code}, message is ${err.message}`);
        }
    });
Y
ylq121 已提交
203
} catch (e) {
Y
xiugai  
ylq121 已提交
204
    console.error('An unexpected error occurred' + `, error code is ${e.code}, message is ${e.message}`);
Y
ylq121 已提交
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
}
```

### changeAppCloudSwitch

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

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

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

**参数:**

| 参数名    | 类型                            | 必填 | 说明                         |
| --------- | ------------------------------- | ---- | ---------------------------- |
Y
xiugai  
ylq121 已提交
220
| accountId | string                          | 是   | 具体打开的云ID。 |
Y
ylq121 已提交
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235
| bundleName| string                         | 是   | 应用名 |
| status    | boolean                        | 是   | 应用的端云协同开关状态信息。 |

**返回值:**

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

**示例:**

```js
let account = "test_id";
let bundleName = "test_bundleName";
try {
Y
xiugai  
ylq121 已提交
236 237 238 239 240
    await  ddm.Config.changeAppCloudSwitch(account, bundleName, true).then((data) => {
        console.info('Succeeding in changing App cloud switch');
    }).catch((error) => {
        console.error('Failed to change App cloud switch' + `, error code is ${error.code}, message is ${error.message}`);
    });
Y
ylq121 已提交
241
} catch (e) {
Y
xiugai  
ylq121 已提交
242
    console.error('An unexpected error occurred' + `, error code is ${e.code}, message is ${e.message}`);
Y
ylq121 已提交
243 244 245 246 247
}
```

### clean

Y
sy  
ylq121 已提交
248
static clean(accountId: string, appActions: {[bundleName: string]: Action}, callback: AsyncCallback<void>):void
Y
ylq121 已提交
249 250 251 252 253 254 255

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

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

**参数:**

Y
xiugai  
ylq121 已提交
256 257 258 259 260
| 参数名     | 类型                                      | 必填 | 说明                 |
| ---------- | ----------------------------------------- | ---- | -------------------- |
| accountId  | string                                    | 是   | 具体打开的云ID。     |
| appActions | {[bundleName: string]: [Action](#Action)} | 是   | 要清除数据的应用信息 |
| callback   | AsyncCallback<void>                 | 是   | 回调函数。           |
Y
ylq121 已提交
261 262 263 264

**示例:**

```js
Y
xiugai  
ylq121 已提交
265
let con = ddm.Action;
Y
ylq121 已提交
266
let account = "test_id";
Y
xiugai  
ylq121 已提交
267
let appActions = { "test_bundleName1": con.CLEAR_CLOUD_INFO, "test_bundleName2": con.CLEAR_CLOUD_DATA_AND_INFO }
Y
ylq121 已提交
268
try {
Y
xiugai  
ylq121 已提交
269 270 271 272 273 274 275
    await ddm.Config.clean(account, appActions, function (err, data) {
        if (err == undefined) {
            console.info('Succeeding in cleaning cloud data');
        } else {
            console.error('Failed to clean' + `, error code is ${err.code}, message is ${err.message}`);
        }
    });
Y
ylq121 已提交
276
} catch (e) {
Y
xiugai  
ylq121 已提交
277
    console.error('An unexpected error occurred.' + `, error code is ${e.code}, message is ${e.message}`);
Y
ylq121 已提交
278 279 280 281 282 283 284 285 286 287 288 289 290
}
```

### clean

static clean(accountId: string, appActions: {[bundleName: string]: Action}): Promise<void>

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

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

**参数:**

Y
xiugai  
ylq121 已提交
291 292 293 294
| 参数名     | 类型                                      | 必填 | 说明                 |
| ---------- | ----------------------------------------- | ---- | -------------------- |
| accountId  | string                                    | 是   | 具体打开的云ID。     |
| appActions | {[bundleName: string]: [Action](#Action)} | 是   | 要清除数据的应用信息 |
Y
ylq121 已提交
295 296 297 298 299 300 301 302 303 304

**返回值:**

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

**示例:**

```js
Y
xiugai  
ylq121 已提交
305
let con = ddm.Action;
Y
ylq121 已提交
306
let account = "test_id";
Y
xiugai  
ylq121 已提交
307
let appActions = { "test_bundleName1": con.CLEAR_CLOUD_INFO, "test_bundleName2": con.CLEAR_CLOUD_DATA_AND_INFO }
Y
ylq121 已提交
308
try {
Y
xiugai  
ylq121 已提交
309 310 311 312 313
    await  ddm.Config.clean(account, appActions).then((data) => {
        console.info('Succeeding in cleaning cloud data');
    }).catch((error) => {
        console.error('Failed to clean' + `, error code is ${error.code}, message is ${error.message}`);
    });
Y
ylq121 已提交
314
} catch (e) {
Y
xiugai  
ylq121 已提交
315
    console.error('An unexpected error occurred.' + `, error code is ${e.code}, message is ${e.message}`);
Y
ylq121 已提交
316 317 318 319 320
}
```

### notifyDataChange

Y
sy  
ylq121 已提交
321
static notifyDataChange(accountId: string,bundleName:string, callback: AsyncCallback<void>):void
Y
ylq121 已提交
322 323 324

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

Y
ylq121 已提交
325
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Server
Y
ylq121 已提交
326 327 328

**参数:**

Y
xiugai  
ylq121 已提交
329 330 331 332 333
| 参数名     | 类型                      | 必填 | 说明             |
| ---------- | ------------------------- | ---- | ---------------- |
| accountId  | string                    | 是   | 具体打开的云ID。 |
| bundleName | string                    | 是   | 应用名           |
| callback   | AsyncCallback<void> | 是   | 回调函数。       |
Y
ylq121 已提交
334 335 336 337 338 339 340

**示例:**

```js
let account = "test_id";
let bundleName = "test_bundleName";
try {
Y
xiugai  
ylq121 已提交
341 342 343 344 345 346 347
    await ddm.Config.notifyDataChange(account, bundleName, function (err, data) {
        if (err == undefined) {
            console.info('Succeeding in notifying the change of data');
        } else {
            console.error('Failed to notify the change of data' + `, error code is ${err.code}, message is ${err.message}`);
        }
    });
Y
ylq121 已提交
348
} catch (e) {
Y
xiugai  
ylq121 已提交
349
    console.error('An unexpected error occurred.' + `, error code is ${e.code}, message is ${e.message}`);
Y
ylq121 已提交
350 351 352 353 354 355 356 357 358
}
```

### notifyDataChange

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

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

Y
ylq121 已提交
359
**系统能力:** SystemCapability.DistributedDataManager.CloudSync.Server
Y
ylq121 已提交
360 361 362

**参数:**

Y
xiugai  
ylq121 已提交
363 364 365 366
| 参数名     | 类型   | 必填 | 说明             |
| ---------- | ------ | ---- | ---------------- |
| accountId  | string | 是   | 具体打开的云ID。 |
| bundleName | string | 是   | 应用名           |
Y
ylq121 已提交
367 368 369 370 371 372 373 374 375 376 377 378 379

**返回值:**

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

**示例:**

```js
let account = "test_id";
let bundleName = "test_bundleName";
try {
Y
xiugai  
ylq121 已提交
380 381 382 383 384
    await  ddm.Config.notifyDataChange(account, bundleName).then((data) => {
        console.info('Succeeding in notifying the change of data');
    }).catch((error) => {
        console.error('Failed to notify the change of data' + `, error code is ${error.code}, message is ${error.message}`);
    });
Y
ylq121 已提交
385
} catch (e) {
Y
xiugai  
ylq121 已提交
386
    console.error('An unexpected error occurred.' + `, error code is ${e.code}, message is ${e.message}`);
Y
ylq121 已提交
387 388 389
}
```