少年修仙传客户端基础资源
Fixed IOS SDK 增加今日头条sdk;
Fixed IOS SDK 接入今日头条sdk;
Fixed IOS 切换账号没有回调事件;
1个文件已修改
21个文件已添加
699 ■■■■■ 已修改文件
Assets/Plugins/iOS/TTTracker.framework.meta 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTABTestConfFetcher.h 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTABTestConfFetcher.h.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTInstallBaseMacro.h 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTInstallBaseMacro.h.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTInstallIDManager.h 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTInstallIDManager.h.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTracker+Game.h 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTracker+Game.h.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTracker.h 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTracker.h.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTrackerHeader.h 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTrackerHeader.h.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Info.plist 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Info.plist.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Modules.meta 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Modules/module.modulemap 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/Modules/module.modulemap.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/TTTracker 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework/TTTracker.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/The2thWorldSDK/UniversalSDK.mm 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Plugins/iOS/TTTracker.framework.meta
New file
@@ -0,0 +1,34 @@
fileFormatVersion: 2
guid: 028f19ff0607b43da8c802c940fbfc81
folderAsset: yes
timeCreated: 1534859534
licenseType: Pro
PluginImporter:
  serializedVersion: 2
  iconMap: {}
  executionOrder: {}
  isPreloaded: 0
  isOverridable: 0
  platformData:
    data:
      first:
        Any:
      second:
        enabled: 0
        settings: {}
    data:
      first:
        Editor: Editor
      second:
        enabled: 0
        settings:
          DefaultValueInitialized: true
    data:
      first:
        iPhone: iOS
      second:
        enabled: 1
        settings: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Headers.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 14af147b00f5448428067bc0bd1a20a7
folderAsset: yes
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Headers/TTABTestConfFetcher.h
New file
@@ -0,0 +1,53 @@
//
//  TTABTestConfFetcher.h
//  TTTracker
//
//  Created by fengyadong on 2017/6/18.
//  Copyright © 2017年 fengyadong. All rights reserved.
//
//#if (defined TOBSDK) || (defined VALIDATION)
#import <Foundation/Foundation.h>
typedef void(^TTABTestFinishBlock)(NSDictionary *allConfigs);
@interface TTABTestConfFetcher : NSObject
@property (atomic, copy, readonly) NSDictionary *allConfigs;/*当前最新的全量的配置信息*/
@property (atomic, copy, readonly) NSString *abVersions;/*该用户命中的所有客户端AB实验标示*/
@property (atomic, copy, readonly) NSString *abServerVersions;/*该用户命中的所有服务端AB实验标示*/
/**
 单例方法
 @return TTABTestConfFetcher单例
 */
+ (instancetype)sharedInstance;
/**
 开始异步拉取ABTest配置信息
 @param finishBlock 拉取结束的回调
 */
- (void)startFetchABTestConf:(TTABTestFinishBlock)finishBlock;
/**
 获取指定ABTest实验的返回值
 @param key ABTest实验的名字
 @param defaultValue 默认值,如果下发Conf中没有找到对应的key
 @return ABTest的返回值
 */
- (id)getConfig:(NSString *)key defaultValue:(id)defaultValue;
/**
 设置服务端实验的AB实验参数
 @param versions 服务端实验的AB实验参数
 */
- (void)setServerVersions:(NSString *)versions;
@end
//#endif
Assets/Plugins/iOS/TTTracker.framework/Headers/TTABTestConfFetcher.h.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5d096069665e1462aba68355e7533a19
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Headers/TTInstallBaseMacro.h
New file
@@ -0,0 +1,46 @@
//
//  TTInstallBaseMacro.h
//  Article
//
//  Created by panxiang on 15/11/5.
//
//
#ifndef TTInstallBaseMacro_h
#define TTInstallBaseMacro_h
#define WeakSelf __weak typeof(self) wself = self
#define StrongSelf __strong typeof(wself) self = wself
#ifdef DEBUG
#define TTInstallLOGD( s, ... ) NSLog(@"Debug %s: %@", __FUNCTION__, [NSString stringWithFormat:(s), ##__VA_ARGS__])
#define TTInstallLOGT( s, ... ) NSLog(@"Trace %s: %@", __FUNCTION__, [NSString stringWithFormat:(s), ##__VA_ARGS__])
#define TTInstallTICK  NSDate *startTime = [NSDate date]
#define TTInstallTOCK  LOGD(@"took time: %f seconds.", -[startTime timeIntervalSinceNow])
#else
#define TTInstallLOGD( s, ... )
#define TTInstallLOGT( s, ... )
#define TTInstallTICK
#define TTInstallTOCK
#endif
#ifndef TTInstallIsEmptyString
#define TTInstallIsEmptyString(str) (!str || ![str isKindOfClass:[NSString class]] || str.length == 0)
#endif
#ifndef TTInstallIsEmptyArray
#define TTInstallIsEmptyArray(array) (!array || ![array isKindOfClass:[NSArray class]] || array.count == 0)
#endif
#ifndef TTInstallIsEmptyDictionary
#define TTInstallIsEmptyDictionary(dict) (!dict || ![dict isKindOfClass:[NSDictionary class]] || ((NSDictionary *)dict).count == 0)
#endif
#endif /* TTInstallBaseMacro_h */
Assets/Plugins/iOS/TTTracker.framework/Headers/TTInstallBaseMacro.h.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e093e6de16cd449b4b0457b63176f5df
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Headers/TTInstallIDManager.h
New file
@@ -0,0 +1,89 @@
//
//  TTInstallIDManager.h
//  Article
//
//  Created by fengyadong on 17-3-14.
//
//
#import <Foundation/Foundation.h>
/** 设备注册完成回调 */
typedef void(^TTInstallDidRegisterBlock)(NSString *deviceID, NSString *installID, NSString *ssID);
/** 自定义Header中的扩展字段,在header中独立的custom结构中 */
typedef NSDictionary<NSString*, id> *(^TTCustomHeaderBlock)(void);
@interface TTInstallIDManager : NSObject
@property (nonatomic, copy, readonly) NSString *appID;/** app的唯一标示,由头条数据仓库团队统一分配 */
@property (nonatomic, copy, readonly) NSString *channel;/** 渠道名称 */
@property (nonatomic, copy, readonly) NSString *deviceID;/** 设备id */
@property (nonatomic, copy, readonly) NSString *installID;/** 安装id */
@property (nonatomic, copy, readonly) NSString *appName;
@property (nonatomic, copy, readonly) NSString *ssID;/** 用户id,串联匿名和登录用户 */
@property (nonatomic, copy, readonly) NSString *userUniqueID;/** 正在注册ssid的user_unique_id */
@property (nonatomic, copy) TTCustomHeaderBlock customHeaderBlock;/** 使用方自定义Header参数 */
+ (instancetype)sharedInstance;
/**
 是否开启激活设备开关
 @param enable YES:开启 NO:关闭 default:YES
 warning ⚠️:如果要关掉激活设备开关此方法必须在 -startWithAppID:channel:appName:finishBlock前调用
 */
+ (void)setActivateDeviceEnable:(BOOL)enable;
//=============================================初始化方法==================================================
/**
 开始调用服务端设备注册接口
 @param appID 当前app的唯一标示,由头条数据仓库团队统一分配
 @param channel 渠道名称,建议正式版App Store 内测版local_test 灰度版用发布的渠道名,如pp
 @param appName 由数据方指定的APP name
 @param didRegisterBlock 设备注册接口完成回调,最多回调一次,没有超时时间。如果已经注册则立马回调,如果还没有则等接口请求解析完成回调。对device_id有依赖的接口可以在这里发送
 */
- (void)startWithAppID:(NSString *)appID
               channel:(NSString *)channel
               appName:(NSString *)appName
           finishBlock:(TTInstallDidRegisterBlock)didRegisterBlock;
//===========================================注册完成回调方法================================================
/**
 设备注册完成的回调
 @param didRegisterBlock 设备注册接口完成回调,最多回调一次,没有超时时间。如果已经注册则立马回调,如果还没有则等接口请求解析完成回调。对device_id有依赖的接口可以在这里发送
 */
- (void)setDidRegisterBlock:(TTInstallDidRegisterBlock)didRegisterBlock;
//=========================================== Debug模式配置 ================================================
/**
 设置当前环境是否为内测版本
 @param isInHouseVersion 是否为内测版本
 */
- (void)setIsInHouseVersion:(BOOL)isInHouseVersion;
//=========================================== User-Profile ================================================
/**
 用户登录状态发生变更的时候需要调用此接口,传入当前的用户的user_unique_id
 @param uniqueID 用户当前的user_unique_id
 */
- (void)setCurrentUserUniqueID:(NSString *)uniqueID;
/**
 用户登录状态发生变更的时候需要调用此接口,传入当前的用户的user_unique_id,并且关心SSID重新获取的时机
 @param uniqueID 用户当前的user_unique_id
 @param didRetriveBlock 重新获取SSID的回调
 */
- (void)setCurrentUserUniqueID:(NSString *)uniqueID
           didRetriveSSIDBlock:(TTInstallDidRegisterBlock)didRetriveBlock;
@end
Assets/Plugins/iOS/TTTracker.framework/Headers/TTInstallIDManager.h.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4c44bda463bd64728b0ed78c6704c621
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTracker+Game.h
New file
@@ -0,0 +1,148 @@
//
//  TTTracker+Game.h
//  Pods
//
//  Created by fengyadong on 2017/9/13.
//
//
//#if (defined GAMESDK) || (defined VALIDATION)
#import <TTTracker/TTTracker.h>
@interface TTTracker (Game)
/**
 用户注册流程完成时调用此接口
 @param method 表示注册方式,业务方可以传任意可标识注册方式的值,如注册方式为手机号:method = @"phone" 微信注册:method = @“WeChat”等。
               这个参数作用:方便业务方在数据平台以method为key查询数据
 @param isSuccess 是否注册成功
 */
+ (void)registerEventByMethod:(NSString *)method isSuccess:(BOOL)isSuccess;
/**
 用户登录完成时调用此接口
 @param method 表示登录的方式,如游戏账号、手机号等
 @param isSuccess 是否登录成功
 */
+ (void)loginEventByMethod:(NSString *)method isSuccess:(BOOL)isSuccess;
/**
 绑定社交账户时调用此接口
 @param method 表示登录的方式,如游戏账号、手机号等
 @param isSuccess 是否注册成功
 */
/**
绑定社交账户时调用此接口
 @param type 社交账号类型 如如微信、微博等
 @param isSuccess 是否绑定成功
 */
+ (void)accessAccountEventByType:(NSString *)type isSuccess:(BOOL)isSuccess;
/**
 完成节点(如教学/任务/副本)时调用此接口
 @param questID 教学/任务/副本等关卡标识符
 @param type 节点类型
 @param name 教学/任务/副本等关卡名称
 @param number 第几个任务节点
 @param desc 节点描述
 @param isSuccess 节点是否完成
 */
+ (void)questEventWithQuestID:(NSString *)questID
                  questType:(NSString *)type
                  questName:(NSString *)name
                 questNumer:(NSUInteger)number
                description:(NSString *)desc
                  isSuccess:(BOOL)isSuccess;
/**
 用户升级后调用此接口
 @param level 当前用户等级
 */
+ (void)updateLevelEventWithLevel:(NSUInteger)level;
/**
 查看内容/商品详情时调用此接口
 @param type 内容类型如“配备”、“皮肤”
 @param name 商品或内容名称
 @param contentID 商品或内容标识符
 */
+ (void)viewContentEventWithContentType:(NSString *)type
                            contentName:(NSString *)name
                              contentID:(NSString *)contentID;
/**
 加入购买/购物车时调用此接口
 @param type 内容类型如“配备”、“皮肤”
 @param name 商品或内容名称
 @param contentID 商品或内容标识符
 @param number 商品数量
 @param isSuccess 加入购买/购物车是否成功
 */
+ (void)addCartEventWithContentType:(NSString *)type
                            contentName:(NSString *)name
                              contentID:(NSString *)contentID
                      contentNumber:(NSUInteger)number
                              isSuccess:(BOOL)isSuccess;
/**
 提交购买/下单时调用此接口
 @param type 内容类型如“配备”、“皮肤”
 @param name 商品或内容名称
 @param contentID 商品或内容标识符
 @param number 商品数量
 @param isVirtualCurrency 是否使用的是虚拟货币
 @param virtualCurrency 虚拟货币类型,如"元宝"、“金币”等
 @param currency 真实货币类型,ISO 4217代码,如:“USD”
 @param isSuccess 提交购买/下单是否成功
 */
+ (void)checkoutEventWithContentType:(NSString *)type
                        contentName:(NSString *)name
                          contentID:(NSString *)contentID
                      contentNumber:(NSUInteger)number
                   isVirtualCurrency:(BOOL)isVirtualCurrency
                    virtualCurrency:(NSString *)virtualCurrency
                            currency:(NSString *)currency
                          isSuccess:(BOOL)isSuccess;
/**
 支付时调用此接口
 @param type 内容类型如“配备”、“皮肤”
 @param name 商品或内容名称
 @param contentID 商品或内容标识符
 @param number 商品数量
 @param channel 支付渠道名,如支付宝、微信等
 @param currency 真实货币类型,ISO 4217代码,如:“USD”
 @param amount 本次支付的真实货币的金额
 @param isSuccess 支付是否成功
 */
+ (void)purchaseEventWithContentType:(NSString *)type
                         contentName:(NSString *)name
                           contentID:(NSString *)contentID
                       contentNumber:(NSUInteger)number
                      paymentChannel:(NSString *)channel
                            currency:(NSString *)currency
                     currency_amount:(unsigned long long)amount
                           isSuccess:(BOOL)isSuccess;
/**
 添加支付渠道时调用此接口
 @param channel 支付渠道名,如支付宝、微信等
 @param isSuccess 添加支付渠道是否成功
 */
+ (void)accessPaymentChannelEventByChannel:(NSString *)channel isSuccess:(BOOL)isSuccess;
@end
//#endif
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTracker+Game.h.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e16e24f1452664db7899861623b32bd8
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTracker.h
New file
@@ -0,0 +1,109 @@
//
//  TTTracker.h
//  TTTracker
//
//  Created by fengyadong on 2017-3-14.
//  Copyright (c) 2017 toutiao. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "TTInstallIDManager.h"
#ifndef TOBSDK
#import "TTTrackerHeader.h"
#import "TTInstallBaseMacro.h"
#endif
//+----------------+----------+----------+---------+--------------------------+
//| Key            | Type     | Required | Default |  Meaning                 |
//+----------------+----------+----------+---------+--------------------------+
//| user_id        | String   | NO       | NULL    | login user_id            |
//| need_encrypt   | BOOL     | NO       | YES     | whether encrypt          |
//| user_unique_id | String   | NO       | NULL    | unique_id for login user |
//+----------------+----------+----------+---------+--------------------------+
typedef NSDictionary *_Nullable(^TTTrackerConfigParamsBlock)(void);
/** 捕获一个即将被缓存的log */
typedef void(^TTTrackerLogHookBlock)(NSDictionary * _Nonnull hookedLog);
@interface TTTracker : NSObject
@property (nonatomic, copy, readonly) NSString * _Nonnull appID;/** 应用唯一标示 */
@property (nonatomic, copy, readonly) NSString * _Nonnull channel;/** 应用发布的渠道名 */
//可选配置
@property (nonatomic, copy) TTTrackerConfigParamsBlock _Nullable configParamsBlock;/** 外部使用方配置是否加密等参数 */
@property (nonatomic, copy) TTCustomHeaderBlock _Nullable customHeaderBlock;/** 使用方自定义Header参数 */
@property (nonatomic, copy, readonly) NSDictionary<NSString*, id> *_Nullable configParams;/** 配置信息参数 */
@property (atomic, copy, readonly) NSDictionary<NSString*, TTTrackerLogHookBlock> *_Nullable logHookDict;
//是否开启session YES开启NO关闭 default= YES ⚠️必须在+startWithAppID:channel:appName前设置才有效
@property (nonatomic, assign) BOOL sessionEnalbe;
//==================================单例方法======================================
+ (instancetype _Nonnull)sharedInstance;
//==================================初始化方法====================================
/**
 启动tracker服务
 @param appID 应用标示,由头条数据仓库组统一分配
 @param appName 应用名,需向头条申请
 @param channel 渠道名称,建议正式版App Store 内测版local_test 灰度版用发布的渠道名,如pp
 */
+ (void)startWithAppID:(NSString *_Nonnull)appID channel:(NSString *_Nonnull)channel appName:(NSString *_Nonnull)appName;
/**
 用户登录状态发生变更的时候需要调用此接口,传入当前的用户的user_unique_id
 @param uniqueID 用户当前的user_unique_id
 */
- (void)setCurrentUserUniqueID:(NSString *_Nullable)uniqueID;
/**
 用户登录状态发生变更的时候需要调用此接口,传入当前的用户的user_unique_id,并且关心SSID重新获取的时机
 @param uniqueID 用户当前的user_unique_id
 @param didRetriveBlock 重新获取SSID的回调
 */
- (void)setCurrentUserUniqueID:(NSString *_Nullable)uniqueID
           didRetriveSSIDBlock:(TTInstallDidRegisterBlock _Nullable)didRetriveBlock;
//=============================== V3 Interface ===================================
/**
 v3格式日志打点
 @param event 事件名称
 @param params 额外参数
 */
+ (void)eventV3:(NSString *_Nonnull)event params:(NSDictionary *_Nullable)params;
//================================== 钩子方法 ======================================
/**
 捕获一条即将被缓存的埋点日志,做一些额外的事情,比如监控等
 @param serviceID 本业务标示建议公司名.产品线.具体业务 比如bytedance.toutiao.ad
 @param logHookBlock 一条即将被缓存的埋点日志
 */
- (void)registerWithServiceID:(NSString *_Nonnull)serviceID willCacheOneLogBlock:(TTTrackerLogHookBlock _Nullable)logHookBlock;
//=============================== Debug模式配置 ====================================
/**
 设置当前环境是否为内测版本
 @param isInHouseVersion 是否为内测版本
 */
- (void)setIsInHouseVersion:(BOOL)isInHouseVersion;
/**
 设置debug阶段埋点验证工具的域名和端口号,一般在应用的高级调试中设置
 @param hostName 返回当前验证工具所在的pc主机的ip和端口号,形如:10.2.201.7:10304 */
- (void)setDebugLogServerHost:(NSString *_Nonnull)hostName;
/**
 设置debug阶段埋点验证工具的完整url地址,一般在二维码扫描回调里调用此方法
 @param serverAddress 返回能连接到当前验证工具的完整url地址 */
- (void)setDebugLogServerAddress:(NSString *_Nonnull)serverAddress;
@end
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTracker.h.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d0cb49a85674046a5a0ce3a7739cf324
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTrackerHeader.h
New file
@@ -0,0 +1,95 @@
//
//  TTTrackerHeader.h
//  Tracker
//
//  Created by fengyadong on 2017-3-14.
//  Copyright (c) 2017 toutiao. All rights reserved.
//
#import <Foundation/Foundation.h>
static const NSUInteger kTTTrackerSDKVersion = 201;
/// 事件类型
typedef NS_ENUM (NSInteger,TTTrackType) {
    /// 普通事件
    TTTrackTypeEvent = 1,
    /// launch或者terminate事件
    TTTrackTypeSession = 2
};
/// 事件类型
typedef NS_ENUM(NSInteger,TTTrackEventType) {
    /// 正常事件
    TTTrackNormalEvent = 0,
    /// CDN事件,已废弃
    TTTrackCDNEvent = 1
};
/// 网络状态
typedef NS_ENUM(NSInteger, TTInstallNetworkConnection) {
    /// 初始状态
    TTInstallNetworkNone = -1,
    /// 无网络连接
    TTInstallNetworkNoConnection = 0,
    /// 移动网络连接
    TTInstallNetworkMobileConnnection = 1,
    /// 2G网络连接
    TTInstallNetwork2GConnection = 2,
    /// 3G网络连接
    TTInstallNetwork3GConnection = 3,
    /// wifi网络连接
    TTInstallNetworkWifiConnection = 4,
    /// 4G网络连接
    TTInstallNetwork4GConnection = 5
};
/// 上报策略
typedef NS_ENUM(NSInteger, TTTrackPolicy) {
    /// 初始状态
    TTTrackPolicyNone = -1,
    /// 批量发送,目前都是
    TTTrackPolicyBatch = 1,
    /// 实时发送
    TTTrackPolicyCritical = 2,
};
/// 上报触发场景
typedef NS_ENUM(NSUInteger, TTTrackerCleanerStartCleanFromType) {
    /// app启动触发
    TTTrackerCleanerStartCleanFromInitAppKey,
    /// 定时器触发
    TTTrackerCleanerStartCleanFromTimer,
    /// 切到前台触发
    TTTrackerCleanerStartCleanFromAppWillEnterForground,
    /// 切到后台触发
    TTTrackerCleanerStartCleanFromAppDidEnterBackground,
};
/// APP启动时上报启动原因,wiki: https://wiki.bytedance.com/pages/viewpage.action?pageId=55125960
typedef NS_ENUM(NSUInteger, TTTrackerLaunchFrom) {
    /// 初始状态
    TTTrackerLaunchFromInitialState = 0,
    /// 用户手动点击进入app
    TTTrackerLaunchFromUserClick = 1,
    /// 用户通过push点击进入app
    TTTrackerLaunchFromRemotePush = 2,
    /// 用户通过widget点击进入app
    TTTrackerLaunchFromWidget = 3,
    /// 用户通过sptlight点击进入app
    TTTrackerLaunchFromSpotlight = 4,
    /// 用户通过外部app唤醒进入app
    TTTrackerLaunchFromExternal = 5,
    /// 用户手动切回前台
    TTTrackerLaunchFromBackground = 6,
};
/// url地址类型
typedef NS_ENUM (NSInteger,TTTrackerURLType) {
    /// 日志库配置
    TTTrackerURLTypeConfig = 0,
    /// 日志库批量上报
    TTTrackerURLTypeBatchReport,
    /// 日志库实时上报
    TTTrackerURLTypeImmediateReport
};
Assets/Plugins/iOS/TTTracker.framework/Headers/TTTrackerHeader.h.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 91f9c8ee99c5841e0ab76d461505ff23
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Info.plist
Binary files differ
Assets/Plugins/iOS/TTTracker.framework/Info.plist.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: edbc4b2f741ec48869f6f9036899d39d
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Modules.meta
New file
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 2be0efbf43e9548df8c38737bb7e888e
folderAsset: yes
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/Modules/module.modulemap
New file
@@ -0,0 +1,6 @@
framework module TTTracker {
  umbrella header "TTTracker.h"
  export *
  module * { export * }
}
Assets/Plugins/iOS/TTTracker.framework/Modules/module.modulemap.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1f45356f62f5d4dd0b4953aa793f5621
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/TTTracker.framework/TTTracker
Binary files differ
Assets/Plugins/iOS/TTTracker.framework/TTTracker.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8d982b261e1d2458c9c9a813f0531ca7
timeCreated: 1534859534
licenseType: Pro
DefaultImporter:
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Plugins/iOS/The2thWorldSDK/UniversalSDK.mm
@@ -15,6 +15,7 @@
#import <UserNotifications/UserNotifications.h>
#endif
#import "SystemConfiguration/CaptiveNetwork.h"
#import <TTTracker/TTTracker+Game.h>
@interface UniversalSDK()<JPUSHRegisterDelegate>
@end
@@ -81,6 +82,9 @@
    
    // 热云初始化
    [Tracking initWithAppKey:@"3c3724431309474be938e0b64d4ad74f" withChannelId:@"_default_"];
    // 今日头条
    [TTTracker startWithAppID:@"151709" channel:@"ios-snqxz" appName:@"少年奇侠传"];
    
    // 发送初始化完成
    [_dict removeAllObjects];
@@ -184,6 +188,8 @@
    [self SendMessageToUnity:_dict];
    
    [Tracking setRegisterWithAccountID:_account.identifier];
    [TTTracker registerEventByMethod:@"freesdk" isSuccess:YES];
}
-(void) FreeSDKLoginOK
@@ -362,6 +368,12 @@
                [FreeSDK logout];
            }
            [FreeSDK presentLoginDialog:nil];
            NSDictionary *_dict = [NSDictionary dictionaryWithObjectsAndKeys:
                                   [NSNumber numberWithInt:S2U_FreePlatformLogoutOk], @"code", nil];
            [self SendMessageToUnity:_dict];
            break;
        }
        case U2S_FreePlatformPay:
@@ -375,6 +387,23 @@
            [FreeSDK pay:_order];
        }
            break;
        case U2S_PayFinished:
        {
            [Tracking setRyzf:[_dict objectForKey:@"orderID"]
                     ryzfType:@"freesdk"
                       hbType:[_dict objectForKey:@"moneyType"]
                     hbAmount:[[_dict objectForKey:@"money"] floatValue]];
            [TTTracker purchaseEventWithContentType:@""
                                        contentName:@""
                                          contentID:@""
                                      contentNumber:1
                                     paymentChannel:@"freesdk"
                                           currency:[_dict objectForKey:@"moneyType"]
                                    currency_amount:[[_dict objectForKey:@"money"] intValue]
                                          isSuccess:YES];
        }
            break;
        case U2S_BatteryListenStart:
            if(_thread == NULL)
            {