iOS SDK 文档
#
1.SDK 集成#
1.1.系统要求适用于 iOS 9.0 及以上的系统版本。
#
1.2.导入 SDK请 下载最新的 SDK,将 TapDB.framework 导入到 Xcode 工程中。
#
1.3.添加依赖需要为 Xcode 工程引入下列依赖的框架或库
名词 | 含义 | 备注 |
---|---|---|
AdSupport.framework | 用来获取设备广告标识,跟踪设备 | |
AdService.framework | 广告框架 | optional |
AppTrackingTransparency.framework | iOS 14 新增 app 追踪框架(若无需在 iOS 14 以上追踪 IDFA 可不添加该依赖) | optional |
SystemConfiguration.framework | ||
CoreMotion.framework | ||
CoreTelephony.framework | ||
Security.framework | 用来持久化存储设备 ID | |
libc++.tdb | ||
libresolv.tbd | ||
libz.tbd | ||
libsqlite3.0.tbd |
#
1.4.编译配置在 Build Settings
中的 link
-> Other Linker Flags
中加入: -ObjC
#
1.4.初始化注意:SDK 默认不会收集广告标识符(IDFA),若需要对 IDFA 进行收集,请在初始化前调用以下接口并在 info.plist
中配置 NSUserTrackingUsageDescription
及描述文案,如「请允许 xxx 获取并使用你的 IDFA ,来为你提供更好的服务。」
[TapDB setAdvertiserIDCollectionEnabled:YES];
初始化 TapDB SDK 并上报一个设备登录( device_login
)事件,调用这个接口是使用其它接口的先决条件,需要尽早调用。
一般建议在 AppDelegate的 application:didFinishLaunchingWithOptions:
中调用。
+ (void)onStart:(NSString *)appId channel:(nullable NSString *)channel version:(nullable NSString *)gameVersion;
+ (void)onStart:(NSString *)appId channel:(nullable NSString *)channel version:(nullable NSString *)gameVersion properties:(nullable NSDictionary *)properties;
字段 | 可为空 | 说明 |
---|---|---|
appId | 否 | 创建游戏时获得的APPID |
channel | 是 | 分包渠道 |
version | 是 | 游戏版本,为空时,自动获取游戏安装包的版本( Xcode 配置中的 Version ) |
properties | 是 | 设备登录( device_login )的事件属性,可以传入预置属性覆盖 SDK 的默认取值,也可以传入在后台配置过的自定义属性 |
#
2.设置账号#
2.1.设置账号 ID当用户进行账号登录时,可调用设置账号 ID ( setUser
)接口在记录该账号 ID。调用后会上报一个账号登录( user_login
)事件,并将这个设备的是否有用户注册过 ( has_user
) 属性置为 true
。在重启应用或调用清除账号 ID ( clearUser
) 前,上报的事件都会带有该账号 ID。
+ (void)setUser:(NSString *)userId;
+ (void)setUser:(NSString *)userId properties:(nullable NSDictionary *)properties;
字段 | 可为空 | 说明 |
---|---|---|
userId | 否 | 长度大于 0 并小于等于 256。只能包含数字、大小写字母、下划线(_)、横线(-),用户ID。不同用户需要保证ID的唯一性 |
properties | 是 | 账号登录( user_login )的事件属性 |
#
2.2.清除账号 ID当用户进行登出时,可调用 clearUser 清除当前 SDK 中保存的账号 ID,后续上报的事件将不会带有账号 ID,调用该接口不会上报任何事件。
+ (void)clearUser;
#
2.3.设置账号名称在用户进行账号登录后,可调用该接口设置该账号的名称,调用后将更新账号的账号名称( user_name
)属性。
+ (void)setName:(NSString *)name;
字段 | 可为空 | 说明 |
---|---|---|
name | 否 | 长度大于 0 并小于等于 256,账号名 |
#
2.4.设置账号等级在用户进行账号登录后,可调用该接口设置该账号的等级,调用将更新账号的账号等级( level
)属性。
+ (void)setLevel:(NSInteger)level;
字段 | 可为空 | 说明 |
---|---|---|
level | 否 | 账号等级 |
#
2.5.设置账号区服在用户进行账号登录后,可调用该接口设置该账号的区服信息,调用将初始化账号的首次区服( first_server
)属性、更新账号的当前区服( current_server
)属性。
+ (void)setServer:(NSString *)server;
字段 | 可为空 | 说明 |
---|---|---|
server | 否 | 账号服务器 |
#
3.上报充值在用户进行充值后,可调用该接口上报充值信息,调用后将上报 charge
事件,并将传入的参数作为事件的属性。
+ (void)onChargeSuccess:(NSString *)orderId product:(NSString *)product amount:(NSInteger)amount currencyType:(NSString *)currencyType payment:(NSString *)payment;
+ (void)onChargeSuccess:(NSString *)orderId product:(NSString *)product amount:(NSInteger)amount currencyType:(NSString *)currencyType payment:(NSString *)payment properties:(NSDictionary *)properties;
字段 | 可为空 | 说明 |
---|---|---|
orderId | 否 | 订单 ID |
product | 是 | 产品名称 |
amount | 否 | 充值金额(单位分,即无论什么币种,都需要乘以 100) |
currencyType | 是 | 货币类型,参考:人民币 CNY,美元 USD;欧元 EUR |
payment | 是 | 支付方式,如:支付宝 |
properties | 是 | 充值( charge )的事件属性 |
注意:在条件允许的情况下推荐使用服务端充值统计接口,请参考 服务端接入文档
#
4.上报事件#
4.1.上报事件在 SDK 初始化完成后可使用该接口上报事件
+ (void)trackEvent:(NSString *)eventName properties:(NSDictionary *)properties;
字段 | 可为空 | 说明 |
---|---|---|
eventName | 否 | 事件的名称 |
properties | 是 | 事件的属性 |
注意:
- 事件名支持上报预置事件和自定义事件,其中自定义事件应以
#
开头 - 事件属性的 key 值为属性的名称,支持 NSString 类型
- 事件属性的 value 值为属性的名称,支持 NSString(最大长度
256
)、NSNumber(取值区间为[-9E15, 9E15]
)类型 - 事件属性支持上报预置属性和自定属性,其中自定义属性应以
#
开头 - 事件属性传入预置属性时,SDK 默认采集的预置属性将被覆盖
#
4.2.设置通用事件属性对于一些所有事件都要携带的属性,建议使用通用事件属性实现。
添加静态通用事件属性
+ (void)registerStaticProperties:(NSDictionary *)staticProperties;
字段 | 可为空 | 说明 |
---|---|---|
staticProperties | 否 | 静态通用事件属性字典 |
示例:
//当设置了静态通用事件属性 #current_channel,值固定为 TapDB 后[TapDB registerStaticProperties:@{@"#currentChannel":@"TapDB"}];
//使用事件上报时[TapDB trackEvent:@"#customEventName" withProperties:@{@"#customPropertyName":@"customPropertyValue")}];
//等效于在事件属性中添加了 #current_channel,即[TapDB trackEvent:@"#customEventName"withProperties:@{@"#customPropertyName":@"customPropertyValue",@"#current_channel":@"TapDB")}];
删除单个静态通用事件属性
+ (void)unregisterStaticProperty:(NSString *)propertyName;
字段 | 可为空 | 说明 |
---|---|---|
propertyName | 否 | 静态通用属性名 |
清空全部静态通用属性
+ (void)clearStaticProperties;
注册动态通用事件属性
对于可能随时发生变化的通用事件属性,可以注册动态通用事件属性,dynamicPropertiesCaculator
将在每次调用时触发,将计算好的属性添加到本次上报事件属性中。
+ (void)registerDynamicProperties:(NSDictionary* (^)(void))dynamicPropertiesCaculator;
字段 | 可为空 | 说明 |
---|---|---|
dynamicPropertiesCaculator | 否 | 动态通用事件属性计算回调 |
示例:
//后续上报的事件都将携带 #currentLevel 属性,值为变量 level 在事件上报时刻的值
[TapDB registerDynamicProperties:^NSDictionary *_Nonnull { return @{ @"#currentLevel": level }; }];
注意:
- 在上报事件或通用属性中使用相同属性名会出现属性覆盖的现象,属性覆盖的优先级从高到低依次为:事件属性、动态通用事件属性、静态通用事件属性、预置属性(例如
trackEvent
中设置的事件属性将覆盖动态通用事件属性、静态通用事件属性、预置属性中的同名属性)
#
5.修改用户属性TapDB 支持两种用户模型:设备和账号,你可以通过如下接口对这两种用户的属性进行操作。
设备属性更新操作
对于常规的用设备属性,可使用改接口进行赋值操作,新的属性值将会直接覆盖旧的属性值
+ (void)deviceUpdate:(NSDictionary *)properties;
字段 | 可为空 | 说明 |
---|---|---|
properties | 否 | 属性字典 |
例如:
[TapDB deviceUpdate:@{@"#currentPoints":@10}];// 此时设备表的 "currentPoints" 字段值为 10
[TapDB deviceUpdate:@{@"#currentPoints":@42}];// 此时设备表的 "currentPoints" 字段值为 42
设备属性初始化操作
对于需要保证只有首次设置时有效的属性,可以使用该接口进行赋值操作,仅当前值为空时赋值操作才会生效,如当前值不为空,则赋值操作会被忽略。
+ (void)deviceInitialize:(NSDictionary *)properties;
字段 | 可为空 | 说明 |
---|---|---|
properties | 否 | 属性字典 |
例如: 记录用户首次登陆的区服,客户端无法得知该属性是否已经被设置过,使用该接口保证仅第一次的设置会生效。
[TapDB deviceInitialize:@{@"#firstActiveServer":@"server1"}];// 此时设备表的 "#firstActiveServer" 字段值为 "server1"
[TapDB deviceInitialize:@{@"#firstActiveServer":@"server2"}];// 此时设备表的 "#firstActiveServer" 字段值还是为 "server1"
设备属性累加操作
对于数值类型的属性,可以使用该接口进行累加操作,调用后 TapDB 将对原属性值进行累加后保存结果值
+ (void)deviceAdd:(NSDictionary *)properties;
字段 | 可为空 | 说明 |
---|---|---|
properties | 否 | 属性字典,value 仅支持 NSNumber 类型 |
例如:
[TapDB deviceAdd:@{@"totalPoints":@10}];// 此时设备表的 "totalPoints" 字段值为 10
[TapDB deviceAdd:@{@"totalPoints":@(-2)}];// 此时设备表的 "totalPoints" 字段值为 8
账号属性更新操作
使用方法同设备属性更新操作
+ (void)userUpdate:(NSDictionary *)properties;
账号属性初始化操作
+ (void)userInitialize:(NSDictionary *)properties;
账号属性累加操作
使用方法同设备属性累加操作
+ (void)userAdd:(NSDictionary *)properties;