一.初始化配置项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 | 默认值 | 说明 | 无埋点SDK版本支持 | 埋点SDK版本支持 |
startWithAccountId:AccountId | 无 | 初始化方法,AccountID为项目id,默认采样率为100%。 | ✔️ | ✔️ |
startWithAccountId:AccountId withSampling:sampling | 无 | 初始化方法,AccountID为项目id;sampling为采样率。 | ✔️ | ✔️ |
handleUrl | 无 | URL Scheme处理方法,通过参数不同区分圈选、MobileDebugger、DeepLink等。 | ✔️ | - |
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及页面元素的 | >=2.6.7 | - |
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
// 手动标识该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;
// 手动标识该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,且不能含有特殊字符,不允许传空、 |
示例代码
// 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;
|
示例代码
// 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 | 是 | 访问用户信息。 限制:不能为
|
代码示例
// 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;
|
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;
|
代码示例
// 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;
|
代码示例
// 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"}];