js-apis-data-cloudData.md 12.2 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

> **说明:** 
>
> 本模块首批接口从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 59

**示例:**

```js
let account = "test_id";
Y
xiugai  
ylq121 已提交
60
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 70
} catch (error) {
    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 102

**返回值:**

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

**示例:**

```js
let account = "test_id";
Y
xiugai  
ylq121 已提交
103
let switches = { "test_bundleName1": true, "test_bundleName2": false };
Y
ylq121 已提交
104
try {
Y
xiugai  
ylq121 已提交
105 106 107 108
    cloudData.Config.enableCloud(account, switches).then(() => {
        console.info('Succeeded in enabling cloud');
    }).catch((err) => {
        console.error('Failed to enable.' + `Code: ${err.code}, message: ${ err.message }`);
Y
xiugai  
ylq121 已提交
109
    });
Y
xiugai  
ylq121 已提交
110 111
} catch (error) {
    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 137 138

**示例:**

```js
let account = "test_id";
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 178

**返回值:**

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

**示例:**

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

### changeAppCloudSwitch

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

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

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

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

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

**参数:**

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

**示例:**

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

### changeAppCloudSwitch

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

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

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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

### notifyDataChange

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

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

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

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

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

**参数:**

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

**示例:**

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

### notifyDataChange

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

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

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

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

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

**参数:**

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

**返回值:**

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

**示例:**

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