Skip to main content
Version: v4

开发指南

本文介绍如何在游戏中加入云存档功能。

集成前准备

  1. 参考 开发者中心配置 创建应用、开启云存档服务
  2. 参考集成指南(UnityAndroidiOS)完成对应平台或引擎的基础接入,对于 Windows 平台,使用前还需接入启动校验
  3. 云存档模块依赖于 TapTap 登录模块,开发者接入前应先完成 TapTap 登录的接入

权限说明

该模块需要如下权限:

权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
网络状态权限用于检查网络连接状态(如 Wi-Fi 或移动数据是否可用)用户首次使用该功能时会申请权限

该模块将在应用中添加如下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

SDK 获取

远程依赖

NPMJS 方式:在 Packages/manifest.json 中添加:

"dependencies":{
"com.taptap.sdk.core":"4.9.3",
"com.taptap.sdk.login":"4.9.3",
"com.taptap.sdk.cloudsave":"4.9.3"
}

GitHub 方式:在 Packages/manifest.json 中添加:

"dependencies":{
"com.taptap.sdk.core":"https://github.com/taptap/tapsdk-unity-dist.git?path=/Core#4.9.3",
"com.taptap.sdk.login":"https://github.com/taptap/tapsdk-unity-dist.git?path=/Login#4.9.3",
"com.taptap.sdk.cloudsave":"https://github.com/taptap/tapsdk-unity-dist.git?path=/CloudSave#4.9.3"
}

本地文件导入

下载页 下载并导入以下 unitypackage 文件:

  • TapSDK_Core.unitypackage (TapTapSDK 核心模块,必选)
  • TapSDK_Login.unitypackage(TapTapSDK 登录模块,必选)
  • TapSDK_CloudSave.unitypackage (TapTapSDK 云存档模块,必选)

注册/注销统一状态码监听回调

统一状态回调,不同 code 代表不同的状态。

using TapSDK.CloudSave;

TapCloudSaveCallback callback = new TapCloudSaveCallback();
TapTapCloudSave.RegisterCloudSaveCallback(callback);

class TapCloudSaveCallback : ITapCloudSaveCallback
{
public TapCloudSaveCallback(){}

public void OnResult(int resultCode)
{
// 处理状态码
// 300001:需要登录
// 300002:初始化失败 需要重新初始化
}
}

创建存档

创建游戏存档并上传云端。

info

存档名称仅支持【英文/数字/下划线/中划线】,不支持中文

存档摘要 (summary) 以及额外信息 (extra) 无此限制

一分钟内仅可调用一次(与更新存档共享冷却时间)

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
}

获取存档列表

获取当前用户的存档列表。

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
}

下载存档

下载指定的存档文件。

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
}

更新存档

更新指定的存档文件。

info

存档名称仅支持【英文/数字/下划线/中划线】,不支持中文

存档摘要 (summary) 以及额外信息 (extra) 无此限制

一分钟内仅可调用一次(与创建存档共享冷却时间)

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
}

删除存档

删除指定的存档文件。

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
}

获取存档封面

获取指定存档的封面图片。

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
}

结果码说明

结果码说明
300001需要登录
300002初始化失败,需要重新初始化

请求错误码

用于 onRequestError(errorCode, errorMessage) 回调中的 errorCode

错误码说明
400000非法的存档文件/封面大小
400001存档上传频率超限
400002指定的存档不存在
400003单个应用下存档数量超限
400004单个应用下使用存储空间超限
400005总使用存储空间超限
400006非法的操作令牌,通常是由于网络卡顿,创建/更新存档耗时过长导致
400007不允许并发调用
400008找不到可用的 OSS 供应商
400009存档名称不合法

国际化

TapTapCloudSave 支持设置语言:目前只支持简体中文