iOS SDK API

anwei发表于:2019年12月05日 15:02:27更新于:2019年12月05日 15:04:38

一.初始化配置项API

GrowingIO初始化配置项均在AppDelegate.m文件中的didFinishLaunchingWithOptions方法中 SDK 初始化代码块中设置,下面将分类并描述含义。

代码示例


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   
     // Override point for customization after application launch.    
     [Growing startWithAccountId:@"0a1b4118dd954ec3bcc69da5138bdb96"];    
     //输出调试日志    
     [Growing setEnableLog:YES];    
     // 设置为 YES, 将启用 HashTag    
     [Growing enableHybridHashTag:YES];    
     return YES;
}

基础配置API

API

默认值

说明

无埋点SDK版本支持

埋点SDK版本支持

startWithAccountId:AccountId

初始化方法,AccountID为项目id,默认采样率为100%。

✔️

✔️

startWithAccountId:AccountId withSampling:sampling

初始化方法,AccountID为项目id;sampling为采样率。

✔️

✔️

handleUrl

URL Scheme处理方法,通过参数不同区分圈选、MobileDebugger、DeepLink等。

✔️

-

SDK功能API

API

默认值

说明

无埋点SDK版本支持

埋点SDK版本支持

sdkVersion

获取当前GrowingIO SDK版本号。

>=2.0.0

-

setEnableLog

YES

采集日志开关,setEnableLog=YES时,会输出调试日志。

✔️

✔️

getEnableLog

获取采集日志开关的当前状态。

✔️

✔️

setTrackerHost

设置数据收集平台服务器地址。

✔️

✔️

setReportHost

设置设备报活服务器地址。

✔️

✔️

setDataHost

设置数据查看平台服务器地址。

✔️

✔️

setGtaHost

设置数据后台服务器地址。

✔️

✔️

setWsHost

设置数据后台服务器地址。

✔️

✔️

setHybridJSSDK

UrlPrefix

设置数据后台服务器地址。

✔️

-

setZone

设置 zone 信息,即时区信息。

✔️

✔️

getDeviceId

获取当前设备 ID。

✔️

✔️

getVisitUserId

获取当前访问用户ID。

✔️

✔️

getSessionId

获取当前访问ID。

✔️

✔️

growingAttributesDonotTrackImp

false

设置是否采集view及页面元素的imp事件。

>=2.6.7

-

数据采集发送API

API

默认值

说明

无埋点SDK版本支持

埋点SDK版本支持

setAspectMode

设置数据采集模式,有 GrowingAspectModeSubClass 和 GrowingAspectModeDynamicSwizzling 两种

✔️

✔️

setEnableDiagnose

enable

是否允许发送基本性能诊断信息,默认为开。

基本性能指发送成功、失败、timeout等信息

✔️

✔️

disable

全局不发送统计信息

✔️

✔️

enableAllWebViews

enable

设置是否采集 UIWebView / WKWebView 信息

✔️

-

enableHybridHashTag

enable

是否启用 HashTag

✔️

-

isTrackingWebView

true

是否启用 trackingWebView

✔️

-

setImp

true

设置是否发送元素的展现次数(浏览量、曝光量)

✔️

-

setFlushInterval

30s

设置、获取发送数据的时间间隔,默认值为30秒

✔️

✔️

setDailyDataLimit

3M

设置每天使用数据网络(2G、3G、4G)上传的数据量的上限(单位是 KB),默认值为 3 MB

✔️

✔️

getDailyDataLimit

获取每天使用数据网络(2G、3G、4G)上传的数据量的上限(单位是 KB),默认值为3 MB

✔️

✔️

disableDataCollect

设置 GDPR 生效

✔️

✔️

enableDataCollect

设置 GDPR 失效

✔️

✔️

disablePushTrack

Yes

设置是否采集push推送点击,默认不采集

✔️

-

setEnableLocationTrack

Yes

设置是否采集地理位置的统计信息,默认采集

>=2.8.6

-

getEnableLocationTrack

获取是否采集地理位置

>=2.8.6

-


二.埋点SDK支持的其他接口

GrowingIO 埋点 SDK 仅自动采集设备信息和您埋点内容数据,对比无埋点 SDK ,埋点 SDK 少很多 API, 请勿在埋点 SDK 中调用无埋点 SDK 接口。


1,若使用加密功能,请在UI元素初始化之前设置此函数
+ (void)setEncryptStringBlock:(NSString*(^)(NSString*string))block;

2,deeplink广告落地页参数回调设置
+ (void)registerDeeplinkHandler:(void(^)(NSDictionary*params, NSError*error))handler;

3,Universallink广告落地页参数回调设置
+ (void)registerUniversallinkHandler:(void(^)(NSDictionary*params, NSError*error))handler;

4,该函数请在main函数第一行调用APP启动后将不允许修改采集模式
+ (void)setAspectMode:(GrowingAspectMode)aspectMode;+ (GrowingAspectMode)getAspectMode;

5,设置发送数据的时间间隔(单位为秒)
+ (void)setFlushInterval:(NSTimeInterval)interval;
+ (NSTimeInterval)getFlushInterval;


三.动态添加属性说明

SDK版本要求:iOS 无埋点SDK >=2.x

1. UIView 增加属性


// 手动标识该view不要追踪
@property (nonatomic, assign) BOOL growingAttributesDonotTrack; 

// 手动标识该view不要追踪它的值,默认是NO,特别的UITextView,UITextField,
//UISearchBar默认是YES
@property (nonatomic, assign) BOOL growingAttributesDonotTrackValue; 

//手动标识该view的取值  比如banner广告条的id 可以放在banner按钮的任意view上
@property (nonatomic, copy)   NSString *growingAttributesValue; 

// 手动标识SDCycleScrollView组件的bannerIds  如若使用,请在创建SDCycleScrollView实例对象后,
//立即赋值;(如果不进行手动设置,SDK默认会采集banner的imageName或者imageURL)
@property (nonatomic, strong)  NSArray<NSString *> *growingSDCycleBannerIds; 

// 手动标识该view的附加属性  该值可被子节点继承
@property (nonatomic, copy)   NSString* growingAttributesInfo;

2. UIViewController 增加属性


// 手动标识该vc的附加属性  该值可被子节点继承
@property (nonatomic, copy)   NSString* growingAttributesInfo; 

// 手动标识该页面的标题,必须在该UIViewController显示之前设置
@property (nonatomic, copy)   NSString* growingAttributesPageName;


四.自定义数据上传API

您的APP或网页在集成了 GrowingIO 的 SDK 之后,它将会自动地为您采集一系列用户行为数据,并在 GrowingIO 分析后台供您制成数据分析报表。除上述的用户行为数据(或称为无埋点数据)之外,GrowingIO 还提供了多种 API 接口,供您上传一些自定义事件和变量,下面介绍自定义事件和变量 API 使用方法。

API概览

SDK 提供多种不同类型的API,请根据您的实际需要正确地调用。


// 发送自定义事件 API
+ (void)track:(NSString *)eventId;
+ (void)track:(NSString *)eventId withVariable:(NSDictionary<NSString *, NSObject *> *)variable;

// 发送页面级变量 API
+ (void)setPageVariableWithKey:(NSString *)key andStringValue:(NSString *)stringValue toViewController:(UIViewController *)viewController;
+ (void)setPageVariableWithKey:(NSString *)key andNumberValue:(NSNumber *)numberValue toViewController:(UIViewController *)viewController;
+ (void)setPageVariable:(NSDictionary<NSString *, NSObject *> *)variable toViewController:(UIViewController *)viewController;

// 发送转化变量 API
+ (void)setEvarWithKey:(NSString *)key andStringValue:(NSString *)stringValue;
+ (void)setEvarWithKey:(NSString *)key andNumberValue:(NSNumber *)numberValue;
+ (void)setEvar:(NSDictionary<NSString *, NSObject *> *)variable;

// 发送用户变量 API
+ (void)setPeopleVariableWithKey:(NSString *)key andStringValue:(NSString *)stringValue;
+ (void)setPeopleVariableWithKey:(NSString *)key andNumberValue:(NSNumber *)numberValue;
+ (void)setPeopleVariable:(NSDictionary<NSString *, NSObject *> *)variable;

// 访问用户变量 API
+ (void)setVisitor:(NSDictionary<NSString *, NSObject *> *)variable;

// 设置登录用户ID API
+ (void)setUserId:(NSString *)userId;

// 清除登录用户ID API
+ (void)clearUserId;

接口定义

设置登录用户ID(setUserId)

当用户登录之后调用setUserId API,设置登录用户ID。


// setUserId API原型
+ (void)setUserId:(NSString *)userId;

参数说明

参数名称

类型

是否必须

说明

userId

string

用户的登录用户ID

限制:英文数字组合的字符串,长度小于等于1000,且不能含有特殊字符,不允许传空、"" 或者nil,如有清除操作,请调用 clearUserId 方法

示例代码


// setuserId API调用示例
[Growing setUserId:@"1234567890"];


如果您的App每次用户升级版本时无需重新登陆的话,为防止用户本地缓存被清除导致的无法被识别为登陆用户,建议在用户每次升级App版本后初次访问时重新调用上述setUserId方法。


清除登录用户ID(clearUserId)

当用户登出之后调用clearUserId,清除已经设置的登录用户ID。


// clearUserId API原型
+ (void)clearUserId;


// clearUserId API调用示例
[Growing clearUserId];

设置登录用户变量(setPeopleVariable)

发送用户信息用于用户信息相关分析,在添加代码之前必须在打点管理界面上声明用户变量。


// setPeopleVariable API原型
+ (void)setPeopleVariableWithKey:(NSString *)key andStringValue:(NSString *)stringValue;
+ (void)setPeopleVariableWithKey:(NSString *)key andNumberValue:(NSNumber *)numberValue;
+ (void)setPeopleVariable:(NSDictionary<NSString *, NSObject *> *)variable;

参数说明

参数名称

类型

是否必须

说明

key

string

用户变量的标识符。

限制:不能为nil或"",长度小于等于50。

value

string

用户变量的值。

限制:变量不为nil或者"",若为字符串则长度应小于等于 1000。

customerVariables

JSON Object

用户变量用于用户信息相关的分析。

限制:不能为nil;customerVariables 内部不允许含有JSONObject或者JSONArray;

key 长度限制小于等于50,value 长度限制小等于1000,值不能为空串,也就是""。

示例代码


// setPeopleVariable API调用示例一
[Growing setPeopleVariableWithKey:@"gender" andStringValue:@"male"];


// setPeopleVariable API调用示例二
[Growing setPeopleVariable:@{@"gender":@"male", @"age":@"25"}];


设置访问用户变量(setVisitor)

当用户未登录时,定义用户属性变量,也可以用于A/B测试上传标签。

SDK版本支持:>=2.4.0


// setVisitor 访问用户变量 API原型
+ (void)setVisitor:(NSDictionary<NSString *, NSObject *> *)variable;

参数说明

参数名称

类型

是否必须

说明

variable

JSON Object

访问用户信息。

限制:不能为nil;variable 内部不允许含有JSONObject或者JSONArray;

key 长度限制小于等于50,value 长度限制小等于1000,值不能为空串,也就是""。

代码示例


// setVisitor API调用示例
[Growing setVisitor:@{@"gender":@"male", @"age":@"25"}];

设置页面级变量(setPageVariable)

使用限制:适用于无埋点SDK。

发送页面级别的信息,在添加代码之前必须在打点管理界面上声明页面级变量。


// setPageVariable API原型
+ (void)setPageVariableWithKey:(NSString *)key andStringValue:(NSString *)stringValue toViewController:(UIViewController *)viewController;
+ (void)setPageVariableWithKey:(NSString *)key andNumberValue:(NSNumber *)numberValue toViewController:(UIViewController *)viewController;
+ (void)setPageVariable:(NSDictionary<NSString *, NSObject *> *)variable toViewController:(UIViewController *)viewController;

参数说明

参数名称

类型

是否必须

说明

key

string

页面级变量的标识符。

限制:不能为 nil 或者"",长度小于等于50。

value

string

页面级变量的值。

限制:不能为 nil 或者"",若为字符串则长度应小于等于 1000。

pageLevelVariables

JSON Object

页面级别的信息。

限制:不能为 nil;pageLevelVariable 内部不允许含有JSONObject或者JSONArray;

key 长度限制小于等于50,value 长度限制小等于1000,值不能为空串,也就是""。


SDK 2.6.7 将页面级变量pageLevelVariables与该页面对象绑定,设置不同的值将会合并,如果想要清空,需要传 null 。

代码示例


// setPageVariable API调用示例一
[Growing setPageVariableWithKey:@"author" andStringValue:@"Zhang San" toViewController:myViewController];


// setPageVariable API调用示例二
[Growing setPageVariable:@{@"pageName":@"Home Page", @"author":@"Zhang San"} toViewController:myViewController];

设置转化变量(setEvar)

发送一个转化信息用于高级归因分析,在添加代码之前必须在打点管理界面上声明转化变量。


// setEvar API原型
+ (void)setEvarWithKey:(NSString *)key andStringValue:(NSString *)stringValue;
+ (void)setEvarWithKey:(NSString *)key andNumberValue:(NSNumber *)numberValue;
+ (void)setEvar:(NSDictionary<NSString *, NSObject *> *)variable;

参数说明

参数名称

类型

是否必须

说明

key

string

转化变量的标识符。

限制:不能为 nil 或者"",长度小于等于50。

value

string

转化变量的值。

限制:变量不为nil或者"",若为字符串则长度应小于等于 1000。

conversionVariables

JSON Object

转化变量用于高级归因分析。

限制:不能为nil;conversinoLevelVariable 内部不允许含有JSONObject或者JSONArray;

key 长度限制小于等于50,value 长度限制小等于1000,值不能为空串,也就是""。

代码示例


// setEvar API调用示例一
[Growing setEvarWithKey:@"campaignId" andStringValue:@"1234567890"];


// setEvar API调用示例二
[Growing setEvar:@{@"campaignId":@"12345", @"campaignOwner":@"Li Si"}];

设置自定义事件和事件级变量(track)

发送一个自定义事件。在添加所需要发送的事件代码之前,需要在打点管理用户界面声明事件以及事件级变量。


// track API原型
+ (void)track:(NSString *)eventId;
+ (void)track:(NSString *)eventId withVariable:(NSDictionary<NSString *, NSObject *> *)variable;

参数说明

参数名称

类型

是否必须

说明

eventId

string

事件标识符。

限制:英文数字组合的字符串,不能为 nil 或者"",长度小于等于50,且不能含有特殊字符

eventLevelVariable

JSONObject

事件发生时所伴随的维度信息。

限制:不能为 nil;eventLevelVariable 内部不允许含有JSONObject或者JSONArray;

key 长度限制小于等于50,value 长度限制小等于1000,值不能为空串,也就是""。

代码示例


// track API调用示例一
[Growing track:@"registerSuccess"];


// track API调用示例二
[Growing track:@"registerSuccess" withVariable:@{@"gender":@"male", @"age":@"21"}];


// track API调用示例三
[Growing track:@"loanAmount" withNumber:@800000 andVariable:@{@"loanType":@"houseMortgage", @"province":@"Zhejiang"}];