API 参考
重要说明
初始化要求
除了 TapSDK_RestartAppIfNecessary
之外,调用其他所有 API 函数前必须先成功调用 TapSDK_Init
进行初始化。
未初始化或初始化失败时调用其他函数将返回错误或者非预期结果。
数据类型定义
基础类型
typedef char ErrMsg[1024]; // 错误信息,最大长度 1023 字节 + '\0'
typedef void (T_CALLTYPE *callback_t)(TapEventID, void *); // 回调函数类型
枚举类型
TapSDK_Init_Result
SDK 初始化结果枚举:
enum class TapSDK_Init_Result : uint32_t {
OK = 0, // 初始化成功
FailedGeneric = 1, // 其他错误
NoPlatform = 2, // 未找到 TapTap 平台
NotLaunchedByPlatform = 3, // 未通过 TapTap 启动
PlatformVersionMismatch = 4 // 平台版本不匹配
};
TapUser_AsyncAuthorize_Result
用户授权请求结果枚举:
enum class TapUser_AsyncAuthorize_Result : uint32_t {
Unknown = 0, // 未知错误,通常由于未初始化(未调用 TapSDK_Init)或初始化失败导致
OK = 1, // 成功发起授权流程
Failed = 2, // 发起授权流程失败,建议提示用户重试
InFlight = 3 // 授权流程正在执行中,建议忽略错误或提示用户等待
};
TapEventID
事件 ID 枚举:
enum class TapEventID : uint32_t {
Unknown = 0,
AuthorizeFinished = 2002, // 授权完成事件
GamePlayableStatusChanged = 4001, // 游戏可玩状态变更事件
DLCPlayableStatusChanged = 4002, // DLC 可玩状态变更事件
};
结构体类型
AuthorizeFinishedResponse
授权完成响应结构体:
struct AuthorizeFinishedResponse {
bool is_cancel; // 用户是否取消授权
char error[1024]; // 错误信息
char token_type[32]; // Token 类型
char kid[8*1024]; // Key ID
char mac_key[8*1024]; // MAC 密钥
char mac_algorithm[32]; // MAC 算法
char scope[1024]; // 权限范围
};
GamePlayableStatusChangedResponse
游戏可玩状态变更响应结构体:
struct GamePlayableStatusChangedResponse {
bool is_playable; // 游戏本体是否可玩
};
DLCPlayableStatusChangedResponse
DLC 可玩状态变更响应结构体:
struct DLCPlayableStatusChangedResponse {
char dlc_id[32]; // DLC ID
bool is_playable; // DLC 是否可玩
};
SDK 核心功能
TapSDK_RestartAppIfNecessary
检查是否需要重启应用。
bool TapSDK_RestartAppIfNecessary(const char *clientID);
参数:
clientID
:客户端 ID
返回值:
true
:需要重启,TapTap 将重新打开游戏,请立即退出游戏进程false
:不需要重启,可以继续初始化
使用示例:
const char* clientID = "your_client_id";
if (TapSDK_RestartAppIfNecessary(clientID)) {
std::cout << "需要重启应用" << std::endl;
return 0; // 立即退出
}
注意事项:
- 此函数必须在
TapSDK_Init
之前调用 - 如果返回 true,应立即退出程序,等待 TapTap 重启游戏
TapSDK_Init
初始化 SDK。
TapSDK_Init_Result TapSDK_Init(ErrMsg *errMsg, const char *pubKey);
参数:
errMsg
:错误信息缓冲区,长度为 1024 字节pubKey
:从 TapTap 开发者中心获取的公钥
返回值:
TapSDK_Init_Result
:初始化结果枚举
使用示例:
ErrMsg errMsg;
const char* pubKey = "your_public_key";
TapSDK_Init_Result result = TapSDK_Init(&errMsg, pubKey);
switch (result) {
case TapSDK_Init_Result::OK:
std::cout << "初始化成功" << std::endl;
break;
case TapSDK_Init_Result::NoPlatform:
std::cout << "未找到 TapTap 平台,请下载并安装 TapTap 启动器" << std::endl;
std::cout << "下载地址:https://www.taptap.cn/mobile" << std::endl;
break;
case TapSDK_Init_Result::NotLaunchedByPlatform:
std::cout << "游戏未通过 TapTap 启动器启动,请从启动器重新打开游戏" << std::endl;
break;
case TapSDK_Init_Result::PlatformVersionMismatch:
std::cout << "平台版本不匹配,请升级 TapTap 启动器或游戏到最新版本" << std::endl;
break;
default:
std::cout << "初始化失败: " << errMsg << std::endl;
std::cout << "请关闭游戏,并从 TapTap 重新打开" << std::endl;
break;
}
TapSDK_Shutdown
关闭 SDK,释放资源。
bool TapSDK_Shutdown();
返回值:
true
:成功关闭false
:关闭失败(通常由于未 初始化(未调用 TapSDK_Init)或初始化失败导致)
使用示例:
if (TapSDK_Shutdown()) {
std::cout << "SDK 已成功关闭" << std::endl;
} else {
std::cout << "SDK 关闭失败" << std::endl;
}
TapSDK_GetClientID
获取当前客户端 ID。
bool TapSDK_GetClientID(char *buffer);
参数:
buffer
:用于存储客户端 ID 的缓冲区,固定长度 256 字节
返回值:
true
:成功获取false
:获取失败(通常由于未初始化(未调用 TapSDK_Init)或初始化失败导致)
使用示例:
char clientID[256];
if (TapSDK_GetClientID(clientID)) {
std::cout << "Client ID: " << clientID << std::endl;
} else {
std::cout << "获取 Client ID 失败,请检查 SDK 是否已正确初始化" << std::endl;
}
回调相关功能
TapSDK_RegisterCallback
注册事件回调。
void TapSDK_RegisterCallback(TapEventID eventID, callback_t callback);
参数:
eventID
:事件 IDcallback
:回调函数
使用示例:
void T_CALLTYPE OnAuthorizeFinished(TapEventID eventID, void* data) {
if (eventID == TapEventID::AuthorizeFinished) {
AuthorizeFinishedResponse* response = (AuthorizeFinishedResponse*)data;
// 处理授权完成事件
}
}
// 注册回调
TapSDK_RegisterCallback(TapEventID::AuthorizeFinished, OnAuthorizeFinished);
TapSDK_UnregisterCallback
注销事件回调。
void TapSDK_UnregisterCallback(TapEventID eventID, callback_t callback);
参数:
eventID
:事件 IDcallback
:要注销的回调函数
使用示例:
// 注销回调
TapSDK_UnregisterCallback(TapEventID::AuthorizeFinished, OnAuthorizeFinished);
TapSDK_RunCallbacks
处理回调事件,建议每帧调用。
void TapSDK_RunCallbacks();
使用示例:
// 在游戏主循环中调用
while (gameRunning) {
TapSDK_RunCallbacks(); // 处理 SDK 事件
// 游戏逻辑
UpdateGame();
RenderGame();
Sleep(16); // 控制帧率
}