开发指南
介绍
TapSDK 提供了一套可供游戏开发者收集账号数据的 API。 系统会收集账号数据并进行分析,最终形成数据报表,帮助游戏开发者分析账号行为并优化游戏。
SDK 获取
请先下载 SDK,并添加相关依赖 .
如果只需要单独使用 TapDB,可以只依赖 common+tapdb
- Unity
- Android
- iOS
"dependencies":{
// 登录
"com.taptap.tds.login":"https://github.com/TapTap/TapLogin-Unity.git#2.1.8",
"com.taptap.tds.common":"https://github.com/TapTap/TapCommon-Unity.git#2.1.8",
"com.taptap.tds.bootstrap":"https://github.com/TapTap/TapBootstrap-Unity.git#2.1.8",
// 数据分析
"com.taptap.tds.tapdb": "https://github.com/TapTap/TapDB-Unity.git#2.1.8",
}
repositories{
flatDir {
dirs 'libs'
}
}
dependencies {
...
implementation (name:'TapBootstrap_2.1.8', ext:'aar') // 必选: TapSDK 启动器
implementation (name:'TapCommon_2.1.8', ext:'aar') // 必选:TapSDK 基础库
implementation (name:'TapLogin_2.1.8', ext:'aar') // 必选:TapTap 登录
implementation (name:'TapDB_2.1.8', ext:'aar') // 数据统计
}
// 登录
TapBootstrapSDK.framework
TapCommonResource.bundle
TapLoginResource.bundle
TapCommonSDK.framework
TapLoginSDK.framework
//TapDB
TapDB.framework
初始化 SDK
以下两种初始化方式结合使用场景任选其一即可。
TapSDK 初始化
在 TapSDK 初始化时,同步初始化 TapDB。
- Unity
- Android
- iOS
TapConfig tapConfig = new TapConfig.Builder()
.ClientID("clientId")// 必须
.ClientSecret("client_secret")// 必须
.RegionType(RegionType.CN)// 非必须,默认 CN
.TapDBConfig(true, "gameChannel", "gameVersion", true) // TapDB 会根据 TapConfig 的配置进行自动初始化
.ConfigBuilder();
TapBootstrap.Init(tapConfig);
TapDBConfig tapDBConfig = new TapDBConfig();
tapDBConfig.setEnable(true);
tapDBConfig.setChannel("gameChannel");
TapConfig tapConfig = new TapConfig.Builder()
.withAppContext(getApplicationContext())
.withRegionType(TapRegionType.CN) // TapRegionType.CN: 国内 TapRegionType.IO: 国外
.withClientId("clientId")
.withClientSecret("clientSecret")
.withTapDBConfig(tapDBConfig)
.build();
TapBootstrap.init(MainActivity.this, tapConfig);
// 初始化 SDK
TapConfig *config = TapConfig.new;
config.clientId = @"clientId";
config.clientSecret=@"clientSecret";
TapDBConfig * dbConfig = [[TapDBConfig alloc]init];
dbConfig.enable = YES;
dbConfig.channel=@"taptap";
dbConfig.gameVersion=@"1.0.0";
dbConfig.advertiserIDCollectionEnabled=YES;
config.dbConfig = dbConfig;
config.region = TapSDKRegionTypeCN;
[TapBootstrap initWithConfig:config];
TapDB 单独使用
在单独使用 TapDB 功能时(即不接登录功能时,不导入 TapBootstrap 包时),可以通过以下方式初始化 TapDB。
- Unity
- Android
- iOS
TapDB.Init("clientId", "taptap", "gameVersion", true);
TapDB.init(getApplicationContext(), "clientId", "taptap", "gameVersion", true);
[TapDB onStartWithClientId:@"clientid" channel:@"taptap" version:@"gameVersion" isCN:YES];
上述代码示例中,clientId 可以在控制台获取,taptap 为分包渠道(游戏安装包渠道),gameVersion 为游戏版本号,最后一个参数表示区域,true 表示中国大陆,false 表示国际。
分包渠道和游戏版本号的长度不大于 256,可以为 null。
分包渠道为 null 时,就无法根据渠道筛选收集到的数据了。
游戏版本号为 null 时,TapSDK 会自动获取游戏安装包的版本。
设置获取 IDFA
针对 iOS14.5+,可以设置是否获取 IDFA。
默认不获取 IDFA,如果设置获取 IDFA,还需要在应用层额外配置相关弹窗权限。
- Unity
- Android
- iOS
TapDB.AdvertiserIDCollectionEnabled(true);
// Android 平台不适用
[TapDB setAdvertiserIDCollectionEnabled:YES];
设置账号
调用该 API 记录一个账号,当账号登录时调用。
- Unity
- Android
- iOS
TapDB.SetUser("userId");
TapDB.setUser("userId");
[TapDB setUser:@"userId"];
userId 是代表账号的唯一字符串,字符串长度不大于 256,只能包含数字、大小写字母、下划线(_)、短横(-)。
开发者需要保证不同账号的 userId 均不相同。
账号昵称
游戏设置账号昵称时调用。
- Unity
- Android
- iOS
TapDB.SetName("Tarara");
TapDB.setName("Tarara");
[TapDB setName:@"Tarara"];
参数的类型为字符串,不可为空,长度不大于 256。
账号等级
设置账号等级,通常在账号升级时调用。
- Unity
- Android
- iOS
TapDB.SetLevel(5);
TapDB.setLevel(5);
[TapDB setLevel:5];
账号所在服务器
通常在账号登录或切换服务器 时调用。
- Unity
- Android
- iOS
TapDB.SetServer("1 区");
TapDB.setServer("1 区");
[TapDB setServer:@"1 区"];
服务器参数为非空字符串,长度不大于 256。
充值
充值成功时调用。 可以选择通过客户端 SDK 推送和通过服务端推送。 建议优先选择服务端推送方式,以保证数据的准确性。
客户端推送
- Unity
- Android
- iOS
TapDB.OnCharge("0xueiEns", "轩辕剑", "100", "CNY", "wechat", "{\"on_sell\":true}");
JSONObject info = new JSONObject();
info.put("on_sell": true);
TapDB.onCharge("0xueiEns", "轩辕剑", "100", "CNY", "wechat", info);
[TapDB onChargeSuccess:@"0xueiEns" product:@"轩辕剑" amount:100 currencyType:@"CNY" payment:@"wechat", properties:@{@"on_sell":YES}];
上述代码示例中,0xueiEns 是订单 ID,轩辕剑 是商品名,100 是金额,CNY 是货币名称,wechat 是充值渠道,最后一个参数传入自定义字段,示例中传入了一个 on_sell 字段,表示这个商品是否正在促销。
订单 ID、商品名、充值渠道是长度大于 0、不大于 256 的字符串,可以为 null。
传递订单 ID 方便排重,防止重复计算。
金额是大于 0、小于等于 100000000000 的整数,单位为分(主币价值的百分之一),不可为 null。
货币名称由三位字母组成,遵循 ISO 4217 标准,为 null 时表示使用默认值 CNY。
服务端推送
由于客户端推送可能会不太准确,因此推荐通过服务端推送。
请求地址:https://e.tapdb.net/event
POST 数据(实际发送请求时需去除注释、空格、换行符并 urlencode):
{
"module": "GameAnalysis", // 固定值
"ip": "172.16.254.1", // 可选,充值账号的 IP
"name": "charge", // 固定值
// 必需,需要替换成 client id
"client_id": "CLIENTID",
// 必需,账号 ID。
// 必须和 SDK 的 setUser 接口传递的账号 ID 相一致,
// 并且对应账号已经通过 SDK 接口进行过推送。
"identify": "userId",
"properties": { // 详见上节「客户端推送」的说明
"order_id": "0xueiEns", // 可选,订单 ID
"amount": 100, // 必需,金额
"currency_type": "CNY", // 可选,货币名称
"product": "轩辕剑", // 可选,商品名
"payment": "wechat" // 可选,充值渠道
"on_sell": true // 自定义字段
}
}
返回的 HTTP Code 为 200 时发送成功,否则发送失败。