//
|
// 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
|