# CloudSaveManager.updateArchive

以 Promise 风格调用:支持

# 功能描述

更新云存档,支持更新已有的云存档文件和信息。适用于之前创建了云存档,重新上传更新云存储文件的场景。

# 注意事项

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

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

# 参数

属性 类型 默认值 必填 说明
archiveUUID string 云存档的UUID
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限制一分钟一次)
400002 指定的存档不存在
400003 单个应用下存档数量超限
400005 总使用存储空间超限
400006 非法的操作令牌,通常是由于网络卡顿,创建/更新存档耗时过长导致
400007 不允许并发调用
400008 找不到可用的OSS供应商
400009 存档名称不合法
400100 云存档sdk初始化失败
400101 云存档路径对应的文件不存在
400200 archiveFilePath为空
400201 archiveUUID为空

# 示例代码

 tapCloudSave.updateArchive({
        archiveMetaData: {
            "name": "test_cloud_save_update",
            "summary": " 测试更新云存档",
            "extra": "updateArchive",
            "playtime": parseInt(+new Date() / 1000) 
        },
        archiveFilePath: `${tap.env.USER_DATA_PATH}/archiveFile.json`,  // 存档文件路径(单个存档文件大小不超过10MB)
        archiveCoverPath: `${tap.env.USER_DATA_PATH}/archiveCoverFile.png`, // 存档封面文件路径(可选,封面大小不超过512KB)
        success: (res) => {
           console.log("updateArchive  success:", JSON.stringify(res, null, 2));
        },
        fail: ({errMsg, errno}) => {
           console.error(`updateArchive  failed: errMsg={errMsg}, errno=${errno}`);

        },
        complete: ({errMsg, errno}) => {
           console.log(` updateArchive  complete: errMsg=${errMsg}, errno=${errno}`);
        }
    });