iOS SDK

添加依赖

  1. 获取iOS SDK以下包并解压,由GrowingIO提供。

  2. Growing.hGrowingCDPCoreKit.framework 添加到iOS工程中;记得勾选“Copy item if needed“。

  3. 在工程项目中添加以下库文件:

添加库依赖的位置在项目设置 Target > 选项卡General > Linked Frameworks and Libraies。

库名称

说明

Foundation.framework

基础依赖库

CoreTelephony.framework

用于读取运营商

SystemConfiguration.framework

用于判断网络状态

AdSupport.framework

用于来源管理激活匹配

libsqlite3.tbd

存储日志

CoreLocation.framework

用于读取地理位置信息(如果您的App有权限)

添加编译参数,并注意大小写。

添加URL Scheme

添加URL Scheme到项目中,以便唤醒您的程序。

初始化配置

在AppDelegate 中引入#import "Growing.h"并添加初始化方法。

#import "Growing.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 启动GrowingIO
[Growing startWithAccountId:@"您的项目ID" dataSourceId:@"您的数据源ID"]; // 替换为您的项目ID和数据源ID
// 其他配置,设置埋点上报地址
[Growing setTrackerHost:@"http://test.xxx.com"];
// 开启Growing调试日志 可以开启日志
// [Growing setEnableLog:YES];
}

添加支持用户运营扫码的代码

在 AppDelegate 中添加

因为您代码的复杂程度以及iOS SDK的版本差异,有时候 [Growing handleUrl:url] 并没有被调用。请在各个平台上调试这段代码,确保当App被URL scheme唤醒之后,该函数能被调用到。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// 如果没有触发handleUrl 扫码弹窗 和扫码注册推送不生效
if ([Growing handleUrl:url]) // 请务必确保该函数被调用
{
return YES;
}
return NO;
}

常用示例:

若您在 AppDelegate 中实现了以下一个或多个方法,请在已实现的函数中,调用[Growing handleUrl:]

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options

若以上所有方法均未实现,请实现以下方法并调用[Growing handleUrl:]

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotatio

重要配置

App Store 提交注意事项‌

如果您添加了库AdSupport.framework,GrowingIO则会启用 IDFA,所以在向 App Store 提交应用时,需要:‌

  • 对于问题 Does this app use the Advertising Identifier (IDFA),选择 YES

  • 对于选项Attribute this app installation to a previously served advertisement,打勾。

  • 对于选项Attribute an action taken within this app to a previously served advertisement,打勾。

为什么 GrowingIO 使用 IDFA?

GrowingIO 使用 IDFA 来做来源管理激活设备的精确匹配,让你更好的衡量广告效果。如您不希望启用IDFA,可以选择不引入 AdSupport.framework

关于权限获取

  • 对于iOS 14之前,你无需主动获取 广告标识IDFA 的权限

  • 对于iOS 14之后,你需要使用如下方法来开启你的 广告标识IDFA 的权限

  1. Plist 文件中添加 NSUserTrackingUsageDescription

    <key>NSUserTrackingUsageDescription</key>
    <string>GrowingIO测试demo 需要使用你的广告标识信息以用于数据追踪分析</string> //描述内容请根据App修改
  2. 导入框架 #import <AppTrackingTransparency/AppTrackingTransparency.h>

  3. 调用获取权限代码

    if (@available(iOS 14, *)) {
    // iOS14及以上版本需要先请求权限
    [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
    switch (status) {
    case ATTrackingManagerAuthorizationStatusDenied:
    //用户拒绝向App授权
    break;
    case ATTrackingManagerAuthorizationStatusAuthorized:
    //用户同意向App授权
    break;
    case ATTrackingManagerAuthorizationStatusNotDetermined:
    //用户未做选择或未弹窗
    break;
    case ATTrackingManagerAuthorizationStatusRestricted:
    //用户在系统级别开启了限制广告追踪
    break;
    default:
    break;
    }
    }];
    }

API

初始化配置API

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

API

默认值

是否必填

说明

startWithAccountId:AccountId

dataSourceId:dataSourceId

初始化方法,AccountID为项目id;

dataSourceId为数据源ID,默认采样率为100%。

startWithAccountId:AccountId

dataSourceId:dataSourceId

withSampling:sampling

初始化方法,AccountID为项目id;

dataSourceId为数据源ID;sampling为采样率。

代码示例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[Growing startWithAccountId:@"YOUR_ACCOUNT_ID" dataSourceId:@"YOUR_DATASOURCE_ID"];
//输出调试日志
[Growing setEnableLog:YES];
return YES;
}

SDK功能API

GrowingIO所有API 都需要在主线程调用。

API

说明

sdkVersion

获取当前GrowingIO SDK版本号。

setEnableLog

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

getEnableLog

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

setZone

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

getDeviceId

获取当前设备ID。

getVisitUserId

获取当前访问用户ID。

getSessionId

获取当前访问ID。

setTrackerHost

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

数据采集API

API

默认值

说明

setAspectMode

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

setFlushInterval

15s

设置、获取发送数据的事件间隔,默认设置15s。

setDailyDataLimit

10485KB

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

getDailyDataLimit

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

disableDataCollect

设置GDPR生效。

enableDataCollect

设置GDPR失效。

setEnableLocationTrack

Yes

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

getEnableLocationTrack

获取是否采集地理位置。

常用API

设置登录用户ID

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

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

参数名称

类型

是否必须

说明

userId

string

登录用户的用户ID。

Tips :

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

清除登录用户ID

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

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

设置自定义事件和属性

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

参数名称

类型

是否必须

说明

eventId

string

事件标识符。

variable

NSDictionary

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

限制:非空;variable 内部不允许含有

NSDictionary或者NSArray;

key 长度限制小于等于50,value 长度限

制小等于200,值不能为空串,也就是""。

itemId

string

物品模型唯一标识属性,如“order_id"

itemKey

string

物品模型唯一标识属性值,如“123456”

代码示例:

// track API原型
+ (void)track:(NSString *)eventId;
+ (void)track:(NSString *)eventId withVariable:(NSDictionary<NSString *, NSObject *> *)variable;
+ (void)track:(NSString *)eventId withVariable:(NSDictionary<NSString *, NSObject *> *)variable forItem:(NSString *)itemId itemKey:(NSString *)itemKey;
// track API调用示例一
[Growing track:@"registerSuccess"];
// track API调用示例二 - 事件属性
[Growing track:@"registerSuccess" withVariable:@{@"gender":@"male", @"age":@"21"}];
// track API调用示例三 - 物品模型
[Growing track:@"registerSuccess" withVariable:@{@"gender":@"male", @"age":@"21"} forItem:@"order_id" itemKey:@"123456"];

发送用户事件

发送一个自定义的用户事件。

参数名称

类型

是否必填

说明

attributes

NSDictionary<NSString *,id>*

用户事件携带的其他信息。

// setUserAttributes API原型
+ (void)setUserAttributes:(NSDictionary<NSString *, id>*)attributes;
//代码示例
NSDictionary *dict = @{@"age" : 18, @"name": @"growingIO"};
[Growing setUserAttributes:dict];

发送自定义Page 事件 (数据采集SDK >=1.2.0)

参数名称

类型

是否必须

说明

pageName

string

page事件标识符。

/**
发送自定义Page事件
@param pageName : 页面名称, pageName为正常中英文数字组合的字符串, 长度<=1000, 请不要含有 "'|\*&[email protected]/', 等特殊字符
*/
+ (void)trackPage:(NSString *)pageName;
//代码示例
[Growing trackPage:@"TestPageEvent"];

加载了H5内嵌页SDK gio_hybrid_cdp.js的页面。自动采集H5(数据采集SDK >=1.2.0)

参数名称

类型

是否必须

说明

webView

WKWebView

WKWebView

+ (void)bridgeForWKWebView:(WKWebView *)webView;
//代码示例
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame];
[Growing bridgeForWKWebView:webView];

需要在 webview 初始化后调用