如何集成

iOS SDK 提供了 无埋点埋点 两个SDK版本:

  • 埋点 SDK 只自动采集用户访问事件,需要开发同学调用相应埋点 API 采集自定义事件;

  • 无埋点 SDK 具备埋点 SDK 的所有功能,同时具备自动采集基本用户行为事件,如页面访问,点击事件等。

CDP无埋点SDK(包括埋点 SDK)代码托管在 Github,欢迎 star,fork 一波。

开发环境 Xcode 9.0 及以上 iOS 8.0 及以上

无埋点SDK集成

Cocoapods集成

在Podfile文件中添加

pod 'GrowingAnalytics-cdp/Autotracker'

添加 URL Scheme

URL Scheme 是您在 GrowingIO 平台创建应用时生成的该应用的唯一标识。把 URL Scheme 添加到您的项目,以便使用Mobile Debug等功能时唤醒您的应用。

选择工程 → Target → Info → URL Types → 添加您的Url Scheme 即可

您需要在GrowingIO网站上先创建您的App应用,获取Url Scheme

SDK初始化配置

  1. 导入头文件"GrowingAutotracker.h"请将以下 [GrowingAutoTracker startWithConfiguration:]加在您的AppDelegateapplication:didFinishLaunchingWithOptions: 方法中 代码示例:

// Config GrowingIO
// 参数需要从GrowingIO网站上,创建新应用,或从已知应用中获取
// YourProjectId eg:0a1b4118dd954ec3bcc69da5138bdb96
// YourServerHost 域名前面需要加上 协议:// eg:http://106.75.81.105:8080
// YourDatasourceId eg: 11223344aabbcc
GrowingTrackConfiguration *configuration = [GrowingTrackConfiguration configurationWithProjectId:@"YourProjectId"];
configuration.dataCollectionServerHost = @"YourServerHost";
configuration.dataSourceId = @"YourDatasourceId";
[GrowingAutotracker startWithConfiguration:configuration launchOptions:launchOptions];

注意

  1. 请确保将代码添加在 AppDelegate 的 application:didFinishLaunchingWithOptions

    方法中,添加到其他方法中或者延迟初始化可能导致GrowingIO SDK 未初始化的情况,从而导致页面的采集数据丢失。

  2. startWithConfiguration第二个参数为 application:didFinishLaunchingWithOptions 的 launchOptions

  3. projectId,serverHost,dataSourceId 为必传参数;其中 serverHost格式为:请求协议://域名

2. 在appDelegate.m文件中实现urlSchme跳转以及DeepLink跳转的代理方法

// url scheme跳转
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSNSString *)sourceApplication
annotation:(id)annotation {
return NO;
}
// universal Link执行
- (BOOL) application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray<id <UIUserActivityRestoring>> *_Nullable))restorationHandler {
return YES;
}

3. 若使用了iOS 13的 UIScene,请在您指定的SceneDelegate中设置如下

- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity {
}
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
}

上述代理方法空实现即可,SDK会自动加入处理代码

SDK 初始化配置项

API

参数类型

是否必填

默认值

说明

projectId

NSString

nil

官网的中您的项目ID

urlScheme

NSString

nil

官网的中您的相应APP的UrlScheme

dataSourceId

NSString

nil

官网的中您的相应APP的DataSourceId

dataCollectionServerHost

NSString

nil

您部署服务的后端Host

uploadExceptionEnable

BOOL

YES

收集SDK内部异常上报服务端

debugEnabled

BOOL

NO

调试模式,会打印SDK log,抛出错误异常,在线上环境务必关闭

cellularDataLimit

NSUInteger

10

每天发送数据的流量限制,单位MB

dataUploadInterval

NSTimeInterval

15

数据发送的间隔,单位秒

sessionInterval

NSTimeInterval

30

每次访问会话的最大时长,单位秒

dataCollectionEnabled

BOOL

YES

是否采集数据

impressionScale

float

0

元素曝光事件中的比例因子,范围 [0-1]

excludeEvent

NSUInteger

0

需要过滤的事件类型计算的掩码值

ignoreField

NSUInteger

0

事件中需要过滤的属性计算的掩码值

埋点SDK集成

埋点 SDK只自动采集用户访问事件和APP关闭事件,其他事件均需要开发同学调用相应埋点 API 采集自定义事件。

Cocoapods集成

在Podfile文件中添加

pod 'GrowingAnalytics-cdp/Tracker'

添加 URL Scheme

URL Scheme 是您在 GrowingIO 平台创建应用时生成的该应用的唯一标识。把 URL Scheme 添加到您的项目,以便使用Mobile Debug等功能时唤醒您的应用。

选择工程 -> Target -> Info -> URL Types -> 添加您的Url Scheme 即可

您需要在GrowingIO网站上先创建您的App应用,获取Url Scheme

SDK初始化配置

  1. 导入头文件"GrowingTracker.h",请将以下 [GrowingTracker startWithConfiguration:]加在您的AppDelegateapplication:didFinishLaunchingWithOptions: 方法中 代码示例:

// Config GrowingIO
// 参数需要从GrowingIO网站上,创建新应用,或从已知应用中获取
// YourProjectId eg:0a1b4118dd954ec3bcc69da5138bdb96
// YourServerHost eg:http://106.75.81.105:8080
// YourDatasourceId eg: 11223344aabbcc
GrowingTrackConfiguration *configuration = [GrowingTrackConfiguration configurationWithProjectId:@"YourProjectId"];
configuration.dataCollectionServerHost = @"YourServerHost";
configuration.dataSourceId = @"YourDatasourceId";
[GrowingTracker startWithConfiguration:configuration launchOptions:launchOptions];

注意

  1. 请确保将代码添加在 AppDelegateapplication:didFinishLaunchingWithOptions

    方法中,添加到其他方法中或者延迟初始化可能导致GrowingIO SDK 未初始化的情况,从而导致页面的采集数据丢失。

  2. startWithConfiguration第二个参数为 application:didFinishLaunchingWithOptions 的 launchOptions

  3. projectId,serverHost,dataSourceId 为必传参数;其中 serverHost格式为:请求协议://域名

2. 在appDelegate.m文件中实现 urlScheme 跳转以及 DeepLink 跳转的代理方法

// url scheme跳转
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
return NO;
}
// universal Link执行
- (BOOL) application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray<id <UIUserActivityRestoring>> *_Nullable))restorationHandler {
return YES;
}

3. 若使用了iOS 13的 UIScene,请在您指定的SceneDelegate中设置如下

- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity {
}
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
}

上述代理方法空实现即可,SDK会自动加入处理代码

SDK 初始化配置项

API

参数类型

是否必填

默认值

说明

projectId

NSString

nil

官网的中您的项目ID

urlScheme

NSString

nil

官网的中您的相应APP的UrlScheme

dataSourceId

NSString

nil

官网的中您的相应APP的DataSourceId

dataCollectionServerHost

NSString

nil

您部署服务的后端Host

uploadExceptionEnable

BOOL

YES

收集SDK内部异常上报服务端

debugEnabled

BOOL

NO

调试模式,会打印SDK log,抛出错误异常,在线上环境务必关闭

cellularDataLimit

NSUInteger

10

每天发送数据的流量限制,单位MB

dataUploadInterval

NSTimeInterval

15

数据发送的间隔,单位秒

sessionInterval

NSTimeInterval

30

每次访问会话的最大时长,单位秒

dataCollectionEnabled

BOOL

YES

是否采集数据

excludeEvent

NSUInteger

0

需要过滤的事件类型计算的掩码值

ignoreField

NSUInteger

0

事件中需要过滤的属性计算的掩码值

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;
    }
    }];
    }