# CloudSaveManager.createArchive

基础库 2.0.0 开始支持,低版本需做兼容处理

以 Promise 风格调用:支持

# 功能描述

创建云存档,上传本地文件到云存储,并设置云存档的封面文件和基础信息。

创建后每个云存档对应唯一的 uuid,后续可以通过这个 uuid(对应方法的 archiveUUID 参数)调用对应的 API 更新/下载 这个存档文件,从而保证在用户更换设备、删除缓存等场景也不丢失游戏数据。

适用于之前没有云存档,第一次上传带有本地配置/记录信息等的文件到云存储的场景。

# 注意事项

archiveFilePatharchiveCoverPath 都是本地已经存在的文件,如果没有,请先在本地创建好文件,并填充文件内容后再调用此 API。

createArchiveupdateArchive 有频次限制(一分钟之内最多调用一次),请做好频控,避免频繁地上传更新云存档文件。

# 参数

属性 类型 默认值 必填 说明
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}`);
        }
    });