开发指南
本文介绍如何在游戏中加入云存档功能。
集成前准备
- 参考 开发者中心配置 创建应用、开启云存档服务
- 参考集成指南(Unity、Android、iOS)完成对应平台或引擎的基础接入,对于 Windows 平台,使用前还需接入启动校验
- 云存档模块依赖于 TapTap 登录模块,开发者接入前应先完成 TapTap 登录的接入
权限说明
- Android
该模块需要如下权限:
| 权限 | 使用目的 | 权限申请时机 |
|---|---|---|
| 网络权限 | 用于访问网络数据 | 用户首次使用该功能时会申请权限 |
| 网络状态权限 | 用于检查网络连接状态(如 Wi-Fi 或移动数据是否可用) | 用户首次使用该功能时会申请权限 |
该模块将在应用中添加如下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
SDK 获取
- Unity
- Android
- iOS
远程依赖
NPMJS 方式:在 Packages/manifest.json 中添加:
"dependencies":{
"com.taptap.sdk.core":"4.9.5",
"com.taptap.sdk.login":"4.9.5",
"com.taptap.sdk.cloudsave":"4.9.5"
}
GitHub 方式:在 Packages/manifest.json 中添加:
"dependencies":{
"com.taptap.sdk.core":"https://github.com/taptap/tapsdk-unity-dist.git?path=/Core#4.9.5",
"com.taptap.sdk.login":"https://github.com/taptap/tapsdk-unity-dist.git?path=/Login#4.9.5",
"com.taptap.sdk.cloudsave":"https://github.com/taptap/tapsdk-unity-dist.git?path=/CloudSave#4.9.5"
}
本地文件导入
在 下载页 下载并导入以下 unitypackage 文件:
TapSDK_Core.unitypackage(TapTapSDK 核心模块,必选)TapSDK_Login.unitypackage(TapTapSDK 登录模块,必选)TapSDK_CloudSave.unitypackage(TapTapSDK 云存档模块,必选)
在 app module 的 build.gradle 中添加对应依赖:
dependencies {
implementation 'com.taptap.sdk:tap-core:4.9.5'
implementation 'com.taptap.sdk:tap-login:4.9.5'
implementation 'com.taptap.sdk:tap-cloudsave:4.9.5'
}
注册/注销统一状态码监听回调
统一状态回调,不同 code 代表不同的状态。
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using TapSDK.CloudSave;
TapCloudSaveCallback callback = new TapCloudSaveCallback();
TapTapCloudSave.RegisterCloudSaveCallback(callback);
class TapCloudSaveCallback : ITapCloudSaveCallback
{
public TapCloudSaveCallback(){}
public void OnResult(int resultCode)
{
// 处理状态码
// 300001:需要登录
// 300002:初始化失败 需要重新初始化
}
}
import com.taptap.sdk.cloudsave.internal.TapCloudSaveCallback;
import com.taptap.sdk.cloudsave.TapTapCloudSave;
TapCloudSaveCallback callback = new TapCloudSaveCallback(){
@Override
public void onResult(int resultCode) {
// 处理云存档的状态码
// 300001:需要登录
// 300002:初始化失败 需重新初始化
}
};
TapTapCloudSave.registerCloudSaveCallback(callback);
import com.taptap.sdk.cloudsave.internal.TapCloudSaveCallback
import com.taptap.sdk.cloudsave.TapTapCloudSave
private val cloudSaveCallback = object : TapCloudSaveCallback {
override fun onResult(resultCode: Int) {
// 处理云存档的状态码
// 300001:需要登 录
// 300002:初始化失败 需重新初始化
}
}
TapTapCloudSave.registerCloudSaveCallback(cloudSaveCallback)
import TapTapCloudSaveSDK
class CloudSaveCallbackImpl: NSObject, TapTapCloudSaveCallback {
override init() {}
func onResult(_ resultCode: Int) {
// 处理云存档的状态码
// 300001:需要登录
// 300002:初始化失败 需重新初始化
}
}
let callback = CloudSaveCallbackImpl()
TapTapCloudSave.registerCloudSaveCallback(callback)
// 不需要接收回调时调用接口移除之前设置的回调对象
TapTapCloudSave.unregisterCloudSaveCallback(callback)
#import "TapTapCloudSaveSDK/TapTapCloudSaveSDK-Swift.h"
@interface GameMainController () <TapTapCloudSaveCallback>
@end
@implementation GameMainController
- (void)handleCloudSaveCallback {
//注册回调
[TapTapCloudSave registerCloudSaveCallbackWithCallback:self];
// 不需要接收回调时调用接口移除之前设置的回调对象
[TapTapCloudSave unregisterCloudSaveCallbackWithCallback:self];
}
- (void)onResultWithResultCode:(NSInteger)resultCode {
// 处理云存档的状态码
// 300001:需要登录
// 300002:初始化失败 需重新初始化
}
创建存档
创建游戏存档并上传云端。
信息
存档名称仅支持【英文/数字/下划线/中划线】,不支持中文
存档摘要 (summary) 以及额外信息 (extra) 无此限制,但 summary 不能为空字符串
一分钟内最多可调用 60 次(与更新存档共享冷却时间)
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using System.Threading.Tasks;
using TapSDK.Core;
using TapSDK.CloudSave;
// 存档元信息
ArchiveMetadata metadata = new ArchiveMetadata(
archiveName: "存档名称",
archiveSummary: "存档描述",
archiveExtra: "额外信息",
archivePlaytime: 0 // 创建时间
);
// 存档文件路径(单个存档文件大小不超过10MB)
string archiveFilePath = "path/to/archive/file";
// 存档封面路径(可选,封面大小不超过512KB)
string archiveCoverPath = "path/to/cover/image";
try
{
ArchiveData archive = await TapTapCloudSave.CreateArchive(metadata, archiveFilePath, archiveCoverPath);
// 处理存档创建成功
}
catch (TapException ex)
{
// 处理错误,可使用 ex.Code 与 ex.Message
}
import com.taptap.sdk.cloudsave.TapTapCloudSave;
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback;
import com.taptap.sdk.cloudsave.internal.model.ArchiveMetadata;
import com.taptap.sdk.cloudsave.internal.model.ArchiveData;
// 存档元信息
ArchiveMetadata metadata = new ArchiveMetadata.Builder()
.setName("存档名称")
.setSummary("存档描述")
.setExtra("额外信息")
.setPlaytime(0)
.build();
// 存档文件路径(单个存档文件大小不超过10MB)
String archiveFilePath = "path/to/archive/file";
// 存档封面路径(可选,封面大小不超过512KB)
String archiveCoverPath = "path/to/cover/image";
// 请求回调
TapCloudSaveRequestCallback callback = new TapCloudSaveRequestCallback() {
@Override
public void onRequestError(int errorCode, @NonNull String errorMessage) {
// 处理请求错误
}
@Override
public void onArchiveCreated(@NonNull ArchiveData archive) {
// 处理存档创建成功
}
};
TapTapCloudSave.createArchive(metadata, archiveFilePath, archiveCoverPath, callback);
import com.taptap.sdk.cloudsave.TapTapCloudSave
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback
import com.taptap.sdk.cloudsave.internal.model.ArchiveMetadata
import com.taptap.sdk.cloudsave.internal.model.ArchiveData
// 存档元信息
val metadata = ArchiveMetadata.Builder()
.setName("存档名称")
.setSummary("存档描述")
.setExtra("额外信息")
.setPlaytime(0)
.build()
// 存档文件路径(单个存档文件大小不超过10MB)
val archiveFilePath = "path/to/archive/file"
// 存档封面路径(可选,封面大小不超过512KB)
val archiveCoverPath = "path/to/cover/image"
// 请求回调
val callback = object : TapCloudSaveRequestCallback() {
override fun onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
override fun onArchiveCreated(archive: ArchiveData) {
// 处理存档创建成功
}
}
TapTapCloudSave.createArchive(metadata, archiveFilePath, archiveCoverPath, callback)
import TapTapCloudSaveSDK
// 存档元信息
let metadata = ArchiveMetadata(
name: "存档名称",
summary: "存档描述",
extra: "额外信息",
playtime: 0
)
// 存档文件路径(单个存档文件大小不超过10MB)
let archiveFilePath = "path/to/archive/file"
// 存档封面路径(可选,封面大小不超过512KB)
let archiveCoverPath = "path/to/cover/image"
// 请求回调
class CloudSaveRequestCallback: NSObject, TapTapCloudSaveRequestCallback {
func onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
func onArchiveCreated(archive: ArchiveData) {
// 处理存档创建成功
}
}
let callback = CloudSaveRequestCallback()
TapTapCloudSave.createArchive(
archiveMetadata: metadata,
archiveFilePath: archiveFilePath,
archiveCoverPath: archiveCoverPath,
callback: callback
)
#import "TapTapCloudSaveSDK/TapTapCloudSaveSDK-Swift.h"
// 存档元信息
ArchiveMetadata *metadata = [[ArchiveMetadata alloc] initWithName:@"存档名称"
summary:@"存档描述"
extra:@"额外信息"
playtime:0];
// 存档文件路径(单个存档文件大小不超过10MB)
NSString *archiveFilePath = @"path/to/archive/file";
// 存档封面路径(可选,封面大小不超过512KB)
NSString *archiveCoverPath = @"path/to/cover/image";
// 请求回调
id<TapTapCloudSaveRequestCallback> callback = // 实现回调协议
[TapTapCloudSave createArchiveWithArchiveMetadata:metadata
archiveFilePath:archiveFilePath
archiveCoverPath:archiveCoverPath
callback:callback];
获取存档列表
获取当前用户的存档列表。
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using System.Collections.Generic;
using System.Threading.Tasks;
using TapSDK.Core;
using TapSDK.CloudSave;
try
{
List<ArchiveData> archives = await TapTapCloudSave.GetArchiveList();
// 处理存档列表
}
catch (TapException ex)
{
// 处理错误,可使用 ex.Code 与 ex.Message
}
import com.taptap.sdk.cloudsave.TapTapCloudSave;
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback;
TapCloudSaveRequestCallback callback = new TapCloudSaveRequestCallback() {
@Override
public void onArchiveListResult(@NonNull List<ArchiveData> archiveList) {
// 处理存档列表
}
@Override
public void onRequestError(int errorCode, @NotNull String errorMessage) {
// 处理请求错误
}
};
TapTapCloudSave.getArchiveList(callback);
import com.taptap.sdk.cloudsave.TapTapCloudSave
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback
val callback = object : TapCloudSaveRequestCallback() {
override fun onArchiveListResult(archiveList: List<ArchiveData>) {
// 处理存档列表
}
override fun onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
TapTapCloudSave.getArchiveList(callback)
import TapTapCloudSaveSDK
class CloudSaveRequestCallback: NSObject, TapTapCloudSaveRequestCallback {
func onArchiveListResult(archives: [ArchiveData]) {
// 处理存档列表
}
func onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
let callback = CloudSaveRequestCallback()
TapTapCloudSave.getArchiveList(callback: callback)
#import "TapTapCloudSaveSDK/TapTapCloudSaveSDK-Swift.h"
id<TapTapCloudSaveRequestCallback> callback = // 实现回调协议
[TapTapCloudSave getArchiveListWithCallback:callback];
下载存档
下载指定的存档文件。
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using System.Threading.Tasks;
using TapSDK.Core;
using TapSDK.CloudSave;
// 存档UUID
string archiveUuid = "archive_uuid";
// 存档文件ID
string archiveFileId = "archive_file_id";
try
{
byte[] data = await TapTapCloudSave.GetArchiveData(archiveUuid, archiveFileId);
// 处理下载的存档数据
}
catch (TapException ex)
{
// 处理错误,可使用 ex.Code 与 ex.Message
}
import com.taptap.sdk.cloudsave.TapTapCloudSave;
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback;
// 存档UUID
String archiveUuid = "archive_uuid";
// 存档文件ID
String archiveFileId = "archive_file_id";
TapCloudSaveRequestCallback callback = new TapCloudSaveRequestCallback() {
@Override
public void onArchiveDataResult(@NonNull byte[] archiveData) {
// 处理下载的存档数据
}
@Override
public void onRequestError(int errorCode, @NotNull String errorMessage) {
// 处理请求错误
}
};
TapTapCloudSave.getArchiveData(archiveUuid, archiveFileId, callback);
import com.taptap.sdk.cloudsave.TapTapCloudSave
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback
// 存档UUID
val archiveUuid = "archive_uuid"
// 存档文件ID
val archiveFileId = "archive_file_id"
val callback = object : TapCloudSaveRequestCallback() {
override fun onArchiveDataResult(archiveData: ByteArray) {
// 处理下载的存档数据
}
override fun onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
TapTapCloudSave.getArchiveData(archiveUuid, archiveFileId, callback)
import TapTapCloudSaveSDK
// 存档UUID
let archiveUuid = "archive_uuid"
// 存档文件ID
let archiveFileId = "archive_file_id"
class CloudSaveRequestCallback: NSObject, TapTapCloudSaveRequestCallback {
func onArchiveDataResult(archiveUUID: String, archiveFileID: String, data: Data) {
// 处理下载的存档数据
}
func onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
let callback = CloudSaveRequestCallback()
TapTapCloudSave.getArchiveData(
archiveUUID: archiveUuid,
archiveFileID: archiveFileId,
callback: callback
)
#import "TapTapCloudSaveSDK/TapTapCloudSaveSDK-Swift.h"
// 存档UUID
NSString *archiveUuid = @"archive_uuid";
// 存档文件ID
NSString *archiveFileId = @"archive_file_id";
id<TapTapCloudSaveRequestCallback> callback = // 实现回调协议
[TapTapCloudSave getArchiveDataWithArchiveUUID:archiveUuid
archiveFileID:archiveFileId
callback:callback];
更新存档
更新指定的存档文件。
信息
存档名称仅支持【英文/数字/下划线/中划线】,不支持中文
存档摘要 (summary) 以及额外信息 (extra) 无此限制,但 summary 不能为空字符串
一分钟内最多可调用 60 次(与创建存档共享冷却时间)
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using System.Threading.Tasks;
using TapSDK.Core;
using TapSDK.CloudSave;
// 存档UUID
string archiveUuid = "archive_uuid";
// 存档元信息
ArchiveMetadata metadata = new ArchiveMetadata(
archiveName: "更新后的存档名称",
archiveSummary: "更新后的存档描述",
archiveExtra: "额外信息",
archivePlaytime: 0 // 创建时间
);
// 新的存档文件路径(单个存档文件大小不超过10MB)
string archiveFilePath = "path/to/new/archive/file";
// 新的存档封面路径(可选,封面大小不超过512KB)
string archiveCoverPath = "path/to/new/cover/image";
using System.Threading.Tasks;
using TapSDK.Core;
try
{
ArchiveData updated = await TapTapCloudSave.UpdateArchive(archiveUuid, metadata, archiveFilePath, archiveCoverPath);
// 处理存档更新成功
}
catch (TapException ex)
{
// 处理错误,可使用 ex.Code 与 ex.Message
}
import com.taptap.sdk.cloudsave.TapTapCloudSave;
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback;
// 存档UUID
String archiveUuid = "archive_uuid";
// 存档元信息
ArchiveMetadata metadata = new ArchiveMetadata.Builder()
.setName("更新后的存档名称")
.setSummary("更新后的存档描述")
.setExtra("额外信息")
.setPlaytime(0)
.build();
// 新的存档文件路径(单个存档文件大小不超过10MB)
String archiveFilePath = "path/to/new/archive/file";
// 新的存档封面路径(可选,封面大小不超过512KB)
String archiveCoverPath = "path/to/new/cover/image";
TapCloudSaveRequestCallback callback = new TapCloudSaveRequestCallback() {
@Override
public void onArchiveUpdated(@NonNull ArchiveData archive) {
// 处理存档更新成功
}
@Override
public void onRequestError(int errorCode, @NotNull String errorMessage) {
// 处理请求错误
}
};
TapTapCloudSave.updateArchive(archiveUuid, metadata, archiveFilePath, archiveCoverPath, callback);
import com.taptap.sdk.cloudsave.TapTapCloudSave
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback
// 存档UUID
val archiveUuid = "archive_uuid"
// 存档元信息
val metadata = ArchiveMetadata.Builder()
.setName("更新后的存档名称")
.setSummary("更新后的存档描述")
.setExtra("额外信息")
.setPlaytime(0)
.build()
// 新的存档文件路径(单个存档文件大小不超过10MB)
val archiveFilePath = "path/to/new/archive/file"
// 新的存档封面路径(可选,封面大小不超过512KB)
val archiveCoverPath = "path/to/new/cover/image"
val callback = object : TapCloudSaveRequestCallback() {
override fun onArchiveUpdated(archive: ArchiveData) {
// 处理存档更新成功
}
override fun onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
TapTapCloudSave.updateArchive(archiveUuid, metadata, archiveFilePath, archiveCoverPath, callback)
import TapTapCloudSaveSDK
// 存档UUID
let archiveUuid = "archive_uuid"
// 存档元信息
let metadata = ArchiveMetadata(
name: "更新后的存档名称",
summary: "更新后的存档描述",
extra: "额外信息",
playtime: 0
)
// 新的存档文件路径(单个存档文件大小不超过10MB)
let archiveFilePath = "path/to/new/archive/file"
// 新的存档封面路径(可选,封面大小不超过512KB)
let archiveCoverPath = "path/to/new/cover/image"
class CloudSaveRequestCallback: NSObject, TapTapCloudSaveRequestCallback {
func onArchiveUpdated(archive: ArchiveData) {
// 处理存档更新成功
}
func onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
let callback = CloudSaveRequestCallback()
TapTapCloudSave.updateArchive(
archiveUUID: archiveUuid,
archiveMetadata: metadata,
archiveFilePath: archiveFilePath,
archiveCoverPath: archiveCoverPath,
callback: callback
)
#import "TapTapCloudSaveSDK/TapTapCloudSaveSDK-Swift.h"
// 存档UUID
NSString *archiveUuid = @"archive_uuid";
// 存档元信息
ArchiveMetadata *metadata = [[ArchiveMetadata alloc] initWithName:@"更新后的存档名称"
summary:@"更新后的存档描述"
extra:@"额外信息"
playtime:0];
// 新的存档文件路径(单个存档文件大小不超过10MB)
NSString *archiveFilePath = @"path/to/new/archive/file";
// 新的存档封面路径(可选,封面大小不超过512KB)
NSString *archiveCoverPath = @"path/to/new/cover/image";
id<TapTapCloudSaveRequestCallback> callback = // 实现回调协议
[TapTapCloudSave updateArchiveWithArchiveUUID:archiveUuid
archiveMetadata:metadata
archiveFilePath:archiveFilePath
archiveCoverPath:archiveCoverPath
callback:callback];
删除存档
删除指定的存档文件。
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using System.Threading.Tasks;
using TapSDK.Core;
using TapSDK.CloudSave;
// 存档UUID
string archiveUuid = "archive_uuid";
try
{
ArchiveData deleted = await TapTapCloudSave.DeleteArchive(archiveUuid);
// 处理存档删除成功
}
catch (TapException ex)
{
// 处理错误,可使用 ex.Code 与 ex.Message
}
import com.taptap.sdk.cloudsave.TapTapCloudSave;
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback;
// 存档UUID
String archiveUuid = "archive_uuid";
TapCloudSaveRequestCallback callback = new TapCloudSaveRequestCallback() {
@Override
public void onArchiveDeleted(@NonNull ArchiveData archive) {
// 处理存档删除成功
}
@Override
public void onRequestError(int errorCode, @NotNull String errorMessage) {
// 处理请求错误
}
};
TapTapCloudSave.deleteArchive(archiveUuid, callback);
import com.taptap.sdk.cloudsave.TapTapCloudSave
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback
// 存档UUID
val archiveUuid = "archive_uuid"
val callback = object : TapCloudSaveRequestCallback() {
override fun onArchiveDeleted(archive: ArchiveData) {
// 处理存档删除成功
}
override fun onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
TapTapCloudSave.deleteArchive(archiveUuid, callback)
import TapTapCloudSaveSDK
// 存档UUID
let archiveUuid = "archive_uuid"
class CloudSaveRequestCallback: NSObject, TapTapCloudSaveRequestCallback {
func onArchiveDeleted(archive: ArchiveData) {
// 处理存档删除成功
}
func onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
let callback = CloudSaveRequestCallback()
TapTapCloudSave.deleteArchive(archiveUUID: archiveUuid, callback: callback)
#import "TapTapCloudSaveSDK/TapTapCloudSaveSDK-Swift.h"
// 存档UUID
NSString *archiveUuid = @"archive_uuid";
id<TapTapCloudSaveRequestCallback> callback = // 实现回调协议
[TapTapCloudSave deleteArchiveWithArchiveUUID:archiveUuid callback:callback];
获取存档封面
获取指定存档的封面图片。
- Unity
- Android Java
- Android Kotlin
- iOS Swift
- iOS Objective-C
using System.Threading.Tasks;
using TapSDK.Core;
using TapSDK.CloudSave;
// 存档UUID
string archiveUuid = "archive_uuid";
// 存档文件ID
string archiveFileId = "archive_file_id";
try
{
byte[] cover = await TapTapCloudSave.GetArchiveCover(archiveUuid, archiveFileId);
// 处理封面数据
}
catch (TapException ex)
{
// 处理错误,可使用 ex.Code 与 ex.Message
}
import com.taptap.sdk.cloudsave.TapTapCloudSave;
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback;
// 存档UUID
String archiveUuid = "archive_uuid";
// 存档文件ID
String archiveFileId = "archive_file_id";
TapCloudSaveRequestCallback callback = new TapCloudSaveRequestCallback() {
@Override
public void onArchiveCoverResult(@NonNull byte[] coverData) {
// 处理封面数据
}
@Override
public void onRequestError(int errorCode, @NotNull String errorMessage) {
// 处理请求错误
}
};
TapTapCloudSave.getArchiveCover(archiveUuid, archiveFileId, callback);
import com.taptap.sdk.cloudsave.TapTapCloudSave
import com.taptap.sdk.cloudsave.internal.TapCloudSaveRequestCallback
// 存档UUID
val archiveUuid = "archive_uuid"
// 存档文件ID
val archiveFileId = "archive_file_id"
val callback = object : TapCloudSaveRequestCallback() {
override fun onArchiveCoverResult(coverData: ByteArray) {
// 处理封面数据
}
override fun onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
TapTapCloudSave.getArchiveCover(archiveUuid, archiveFileId, callback)
import TapTapCloudSaveSDK
// 存档UUID
let archiveUuid = "archive_uuid"
// 存档文件ID
let archiveFileId = "archive_file_id"
class CloudSaveRequestCallback: NSObject, TapTapCloudSaveRequestCallback {
func onArchiveCoverResult(archiveUUID: String, archiveFileID: String, coverData: Data) {
// 处理封面数据
}
func onRequestError(errorCode: Int, errorMessage: String) {
// 处理请求错误
}
}
let callback = CloudSaveRequestCallback()
TapTapCloudSave.getArchiveCover(
archiveUUID: archiveUuid,
archiveFileID: archiveFileId,
callback: callback
)
#import "TapTapCloudSaveSDK/TapTapCloudSaveSDK-Swift.h"
// 存档UUID
NSString *archiveUuid = @"archive_uuid";
// 存档文件ID
NSString *archiveFileId = @"archive_file_id";
id<TapTapCloudSaveRequestCallback> callback = // 实现回调协议
[TapTapCloudSave getArchiveCoverWithArchiveUUID:archiveUuid
archiveFileID:archiveFileId
callback:callback];
结果码说明
| 结果码 | 说明 |
|---|---|
| 300001 | 需要登录 |
| 300002 | 初始化失败,需要重新初始化 |
请求错误码
用于 onRequestError(errorCode, errorMessage) 回调中的 errorCode。
| 错误码 | 说明 |
|---|---|
| 400000 | 非法的存档文件/封面大小 |
| 400001 | 存档上传频率超限 |
| 400002 | 指定的存档不存在 |
| 400003 | 单个应用下存档数量超限 |
| 400004 | 单个应用下使用存储空间超限 |
| 400005 | 总使用存储空间超限 |
| 400006 | 创建/更新云存档超时,通常是由于网络卡顿,耗时过长导致 |
| 400007 | 上传云存档并发调用次数超过 10 个,或者并发更新同一个云存档 |
| 400008 | 找不到可用的 OSS 供应商 |
| 400009 | 存档名称不合法 |
国际化
TapTapCloudSave 支持设置语言:目前只支持简体中文