跳到主要内容
版本:v7

TapSDK iOS 接口

XDSDK v7 已经内置并初始化 TapSDK v4,游戏侧不需要自行初始化 TapSDK。需要使用 TapSDK 能力时,可以参考 TapSDK 官方文档对接口的说明,但使用的时候请调用 XDSDK 导出的 XDGTapSDK 和 XDTapSDK4WrapperSDK 封装接口。

依赖与入口​

Native iOS 工程请先参考 iOS 接入配置 集成 XDSDK。Framework 方式需要包含 XDTapSDK4WrapperSDK.framework 和相关 TapTap 资源 bundle;SPM 方式按需勾选对应 Package Product。

能力入口类
TapSDK 登录XDGAccount
实名和防沉迷无
TapDB 数据分析XDGTapTapEvent
内嵌动态XDGTapTapMomentWrapper
成就系统XDGTapTapAchievementWrapper
云存档XDGTapTapCloudSaveWrapper
#import <XDTapSDK4WrapperSDK/XDTapSDK4WrapperSDK.h>

TapTap 登录​

请使用 XDSDK 的登录接口

实名和防沉迷​

XDSDK 在国内登录流程中已包含实名和防沉迷流程,游戏不需要在自行处理相关内容。

TapDB 数据分析​

对应 TapSDK 文档:TapDB 客户端接入。

发送普通事件请使用 XDSDK 的事件上报接口。

以下接口请使用 XDGTapTapEvent。

方法说明
+ deviceInitialize:初始化设备属性,只在字段为空时写入。
+ deviceUpdate:更新设备属性,新值会覆盖旧值。
+ deviceAdd:累加设备数值属性。
+ userInitialize:初始化账号属性,只在字段为空时写入。
+ userUpdate:更新账号属性。
+ userAdd:累加账号数值属性。
+ addCommonProperty:value:添加单个静态通用事件属性。
+ addCommon:批量添加静态通用事件属性。
+ clearCommonProperty:清除单个静态通用事件属性。
+ clearCommonProperties:批量清除静态通用事件属性。
+ clearAllCommonProperties清除全部静态通用事件属性。
+ registerDynamicProperties:注册动态通用事件属性,每次发送事件时调用 block 获取最新属性。

deviceAdd 和 userAdd 仅支持数值属性。动态属性回调中应返回普通 NSDictionary 数据,避免执行耗时逻辑。

#import <XDTapSDK4WrapperSDK/XDTapSDK4WrapperSDK.h>

[XDGTapTapEvent deviceInitialize:@{@"first_server": @"server_1"}];
[XDGTapTapEvent userUpdate:@{
@"current_server": @"server_2",
@"level": @18
}];
[XDGTapTapEvent addCommon:@{@"build_type": @"release"}];

[XDGTapTapEvent registerDynamicProperties:^NSDictionary *{
return @{@"battle_mode": @"pve"};
}];

内嵌动态​

对应 TapSDK 文档:内嵌动态开发指南。

方法说明
+ setDelegate:设置动态回调代理。
+ open打开 TapTap 动态页面。
+ openScene:打开指定场景动态页面。
+ publish:发布动态,图片内容使用 XDGTapTapMomentImageData,视频内容使用 XDGTapTapMomentVideoData。
+ closeWithTitle:content:showConfirm:关闭所有内嵌窗口,可按参数展示确认弹窗。
+ close直接关闭所有内嵌窗口。
+ fetchNotification获取新动态数量,结果通过代理回调返回。
+ needDeferSystemGestures项目自己的 Controller 需要配置 Defer System Gestures 时调用。

XDGTapTapMomentDelegate 可选实现 onMomentCallbackWithCode:msg:。fetchNotification 成功时,msg 为新消息数量。

发布数据限制:

类型字段限制
XDGTapTapMomentImageDataimages最多 1 张,超出时截取第一张
XDGTapTapMomentImageDatacontent最多 1200 字符
XDGTapTapMomentVideoDataimages最多 1 张,超出时截取第一张
XDGTapTapMomentVideoDatavideos最多 1 个视频,超出时截取第一个
XDGTapTapMomentVideoDatatitle最多 40 字符
XDGTapTapMomentVideoDatacontent最多 40 字符
#import <XDTapSDK4WrapperSDK/XDTapSDK4WrapperSDK.h>

@interface TapMomentHandler : NSObject <XDGTapTapMomentDelegate>
@end

@implementation TapMomentHandler
- (void)onMomentCallbackWithCode:(NSInteger)code msg:(NSString *)msg {
// 根据 code 和 msg 处理动态状态
}
@end

TapMomentHandler *handler = [TapMomentHandler new];
[XDGTapTapMomentWrapper setDelegate:handler];
[XDGTapTapMomentWrapper open];

XDGTapTapMomentImageData *data = [XDGTapTapMomentImageData new];
data.content = @"动态文字内容";
data.images = @[@"file:///path/to/image.png"];
[XDGTapTapMomentWrapper publish:data];

成就系统​

对应 TapSDK 文档:成就系统开发指南。

方法说明
+ incrementWithAchievementId:steps:增加分步成就步数。
+ unlockWithAchievementId:解锁指定成就。
+ registerCallbackWithCallback:注册成就回调。
+ unregisterCallbackWithCallback:移除成就回调。
+ setToastEnableWithEnable:设置是否展示成就达成气泡弹窗。
+ showAchievements显示成就页,已安装 TapTap 时跳转客户端,否则跳转 Web。

XDGTapTapAchievementCallback 需要实现:

方法说明
onAchievementSuccessWithCode:result:成就操作成功。result 包含成就 ID、成就名称、成就类型和当前步数。
onAchievementFailureWithAchievementId:errorCode:errorMsg:成就操作失败。

成就类型 XDGTapTapAchievementTypeNORMAL 表示普通成就,XDGTapTapAchievementTypePLATINUM 表示白金成就。

#import <XDTapSDK4WrapperSDK/XDTapSDK4WrapperSDK.h>

@interface AchievementHandler : NSObject <XDGTapTapAchievementCallback>
@end

@implementation AchievementHandler
- (void)onAchievementSuccessWithCode:(NSInteger)code result:(XDGTapTapAchievementResult *)result {
// 成就操作成功
}

- (void)onAchievementFailureWithAchievementId:(NSString *)achievementId
errorCode:(NSInteger)errorCode
errorMsg:(NSString *)errorMsg {
// 成就操作失败
}
@end

AchievementHandler *handler = [AchievementHandler new];
[XDGTapTapAchievementWrapper registerCallbackWithCallback:handler];
[XDGTapTapAchievementWrapper unlockWithAchievementId:@"achievement_id"];
[XDGTapTapAchievementWrapper incrementWithAchievementId:@"achievement_id" steps:1];
[XDGTapTapAchievementWrapper setToastEnableWithEnable:YES];
[XDGTapTapAchievementWrapper showAchievements];

云存档​

对应 TapSDK 文档:云存档开发指南。

方法说明
+ registerCloudSaveCallback:注册 CloudSave 统一状态回调。
+ unregisterCloudSaveCallback:取消注册 CloudSave 统一状态回调。
+ createArchiveWithArchiveMetadata:archiveFilePath:archiveCoverPath:callback:创建存档并上传云端。
+ updateArchiveWithArchiveUUID:archiveMetadata:archiveFilePath:archiveCoverPath:callback:更新指定存档。
+ deleteArchiveWithArchiveUUID:callback:删除指定存档。
+ getArchiveListWithCallback:获取当前用户的存档列表。
+ getArchiveDataWithArchiveUUID:archiveFileID:callback:下载指定存档文件。
+ getArchiveCoverWithArchiveUUID:archiveFileID:callback:获取指定存档封面。

XDGArchiveMetadata 用于创建和更新存档,包含 name、summary、extra、playtime。XDGArchiveData 为服务端返回的存档数据,包含 uuid、name、summary、extra、playtime、saveSize、coverSize、fileId、createdTime、modifiedTime。

回调协议:

协议方法说明
XDGTapTapCloudSaveCallbackonResult:云存档统一状态结果。
XDGTapTapCloudSaveRequestCallbackonArchiveCreatedWithArchive:创建成功。
XDGTapTapCloudSaveRequestCallbackonArchiveUpdatedWithArchive:更新成功。
XDGTapTapCloudSaveRequestCallbackonArchiveDeletedWithArchive:删除成功。
XDGTapTapCloudSaveRequestCallbackonArchiveListResultWithArchives:存档列表结果。
XDGTapTapCloudSaveRequestCallbackonArchiveDataResultWithArchiveUUID:archiveFileID:data:存档数据下载结果。
XDGTapTapCloudSaveRequestCallbackonArchiveCoverResultWithArchiveUUID:archiveFileID:coverData:存档封面下载结果。
XDGTapTapCloudSaveRequestCallbackonRequestErrorWithErrorCode:errorMessage:请求失败。
#import <XDTapSDK4WrapperSDK/XDTapSDK4WrapperSDK.h>

XDGArchiveMetadata *metadata = [XDGArchiveMetadata new];
metadata.name = @"save_001";
metadata.summary = @"第一章";
metadata.extra = @"{}";
metadata.playtime = 3600;

[XDGTapTapCloudSaveWrapper createArchiveWithArchiveMetadata:metadata
archiveFilePath:@"path/to/archive/file"
archiveCoverPath:@"path/to/cover/image"
callback:requestCallback];

[XDGTapTapCloudSaveWrapper getArchiveListWithCallback:requestCallback];