开发指南
本文介绍如何在游戏中加入云存档功能。
集成前准备
- 参考 开发者中心配置 创建应用、 开启云存档服务
- 参考集成指南(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.10.0",
"com.taptap.sdk.login":"4.10.0",
"com.taptap.sdk.cloudsave":"4.10.0"
}
GitHub 方式:在 Packages/manifest.json 中添加:
"dependencies":{
"com.taptap.sdk.core":"https://github.com/taptap/tapsdk-unity-dist.git?path=/Core#4.10.0",
"com.taptap.sdk.login":"https://github.com/taptap/tapsdk-unity-dist.git?path=/Login#4.10.0",
"com.taptap.sdk.cloudsave":"https://github.com/taptap/tapsdk-unity-dist.git?path=/CloudSave#4.10.0"
}
本地文件导入
在 下载页 下载并导入以下 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.10.0'
implementation 'com.taptap.sdk:tap-login:4.10.0'
implementation 'com.taptap.sdk:tap-cloudsave:4.10.0'
}
注册/注销统一状态码监听回调
统一状态回调,不同 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:初始化失败 需重新初始化
}
创建存档
创建游戏存档并上传云端。
info
存档名称仅支持【英文/数字/下划线/中划线】,不支持中文
存档摘要 (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("