# CloudSaveManager.createArchive
基础库 2.0.0 开始支持,低版本需做兼容处理
以 Promise 风格调用:支持
# 功能描述
创建云存档,上传本地文件到云存储,并设置云存档的封面文件和基础信息。
创建后每个云存档对应唯一的 uuid,后续可以通过这个 uuid(对应方法的 archiveUUID 参数)调用对应的 API 更新/下载 这个存档文件,从而保证在用户更换设备、删除缓存等场景也不丢失游戏数据。
适用于之前没有云存档,第一次上传带有本地配置/记录信息等的文件到云存储的场景。
# 注意事项
archiveFilePath 和 archiveCoverPath 都是本地已经存在的文件,如果没有,请先在本地创建好文件,并填充文件内容后再调用此 API。
createArchive 和 updateArchive 有频次限制(一分钟之内最多调用一次),请做好频控,避免频繁地上传更新云存档文件。
# 参数
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| archiveMetaData | ArchiveMetaData | 是 | 云存档基础信息 | |
| archiveFilePath | string | 是 | 存档文件路径(单个存档文件大小不超过10MB); 支持FileSystemManager文件路径(如${tap.env.USER_DATA_PATH}/config.json),和小游戏代码中的文件路径(不支持相对路径) | |
| archiveCoverPath | string | 否 | 存档封面文件路径(可选,封面大小不超过512KB); 支持FileSystemManager文件路径(如${tap.env.USER_DATA_PATH}/cover.png,和小游戏代码中的文件路径(不支持相对路径) | |
| success | function | 否 | 成功的回调 | |
| fail | function | 否 | 失败的回调 | |
| complete | function | 否 | 完成的回调 |
ArchiveMetaData:
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| name | string | 是 | 存档名,60字节以内,不允许空,不允许汉字 | |
| summary | string | 是 | 存档描述,500字节以内,不允许空 | |
| extra | string | 否 | 用户自定义信息,1000字节以内,允许空 | |
| playtime | number | 否 | 游戏时间(秒级),不允许负值 |
success回调返回数据:
Object res:
| 属性名 | 数据类型 | 说明 |
|---|---|---|
| uuid | string | 云存档的唯一标识,updateArchive后不会更新 |
| fileId | string | 云存档文件的ID,updateArchive后会更新 |
# 错误
| 错误码 | 说明 |
|---|---|
| 400000 | 非法的存档文件/封面大小 |
| 400001 | 存档上传频率超限(createArchive和updateArchive限制一分钟一次) |
| 400003 | 单个应用下存档数量超限 |
| 400005 | 总使用存储空间超限 |
| 400006 | 非法的操作令牌,通常是由于网络卡顿,创建/更新存档耗时过长导致 |
| 400007 | 不允许并发调用 |
| 400008 | 找不到可用的OSS供应商 |
| 400009 | 存档名称不合法 |
| 400100 | 云存档sdk初始化失败 |
| 400101 | 云存档路径对应的文件不存在 |
| 400200 | archiveFilePath为空 |
# 示例代码
tapCloudSave.createArchive({
archiveMetaData: {
"name": "test_cloud_save_create",
"summary": " 测试创建云存档",
"extra": "createArchive",
"playtime": parseInt(+new Date() / 1000)
},
archiveFilePath: "files/archiveFile.json", // 存档文件路径(单个存档文件大小不超过10MB)
archiveCoverPath: "files/archiveCoverFile.png", // 存档封面文件路径(可选,封面大小不超过512KB)
success: (res) => {
console.log("createArchive success:", JSON.stringify(res, null, 2));
},
fail: ({errMsg, errno}) => {
console.error(`createArchive failed: errMsg={errMsg}, errno=${errno}`);
},
complete: ({errMsg, errno}) => {
console.log(` createArchive complete: errMsg=${errMsg}, errno=${errno}`);
}
});
