新书推荐《iOS 全埋点解决方案



集成神策分析 SDK

  • Podfile 文件中添加 pod 'SensorsAnalyticsSDK'
  • 打开终端,切换到项目目录
  • 执行 pod install  pod update

注:如果执行 pod update 无法检测到最新版本,可以先执行 pod cache clean SensorsAnalyticsSDK 清除本地缓存后重新 update

  • 从  GitHub 获取 SDK 的源代码;
  • 将 SDK 源代码导入 App 项目,并选中 Copy items if needed
  • 项目设置 "Build Phase" -> "Link Binary With Libraries" 中添加依赖库:libicucorelibsqlite3libz
  • 在 Cartfile 文件中添加以下配置:
github "sensorsdata/sa-sdk-ios"
CODE
  • 执行 carthage update --platform iOS 并将 SensorsAnalyticsSDK.framework 添加到您的项目中;
  • 集成 SDK 会使 App 安装包体积增加约 350KB
  • SDK 兼容 iOS 8.0 及以上版本

初始化神策分析 SDK

获取项目数据接收地址

  • 每个项目都有单独的数据接收地址
  • 请使用管理员账户获取相应项目的数据接收地址

初始化 SDK

AppDelegate - application: didFinishLaunchingWithOptions: 中添加初始化代码

// 引入神策分析 SDK
#import <SensorsAnalyticsSDK/SensorsAnalyticsSDK.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

	// 初始化配置
	SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:<#数据接收地址#> launchOptions:launchOptions];

	/**
	 * 配置 SDK,如开启全埋点、开启 Log 等
	 */

	// 初始化 SDK
	[SensorsAnalyticsSDK startWithConfigOptions:options];

	return YES;
}
CODE

配置 scheme

获取项目 scheme

  • 项目的 scheme 需要管理员账户进行获取
  • App 工程中可以同时配置多个项目的 scheme

配置 scheme

App 工程中选择 target -> Info -> Types,点击加号(+),将上一步获取到的 scheme 配置到 URL Types 中

处理传入的 URL

AppDelegate- application:openURL:options: 方法中调用 - handleSchemeUrl: 对神策分析 scheme 进行处理

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
	if ([[SensorsAnalyticsSDK sharedInstance] handleSchemeUrl:url]) {
		return YES;
	}
	return NO;
}
CODE

如果 - application:openURL:options: 中还有其他逻辑处理,需要将 - handleSchemeUrl: 尽量前置,以保证 - handleSchemeUrl: 能被执行。

SDK 基本配置

开启全埋点

初始化 SDK 时,通过 - autoTrackEventType 接口可以配置需要开启的全埋点类型

// 开启全埋点,可根据需求进行组合
options.autoTrackEventType = SensorsAnalyticsEventTypeAppStart |
							 SensorsAnalyticsEventTypeAppEnd |
							 SensorsAnalyticsEventTypeAppClick |
							 SensorsAnalyticsEventTypeAppViewScreen;
CODE

设置事件公共属性

对于所有事件都需要添加的属性,初始化 SDK 后,可使用 - registerSuperProperties: 将属性注册为公共属性

// 将 AppName 注册为公共属性
[[SensorsAnalyticsSDK sharedInstance] registerSuperProperties:@{@"AppName" : @"<#YOUR APP NAME#>"}];
CODE

公共属性会保存在 App 本地缓存中。可以通过 - unregisterSuperProperty: 删除一个公共属性,或使用 - clearSuperProperties: 删除所有已设置的事件公共属性

用户登录

当用户注册成功或者进行登录时,需要调用SDK 的 - login: 接口

[[SensorsAnalyticsSDK sharedInstance] login:@"<#登录ID#>"];
CODE

为了准确记录登录用户的行为信息,建议在以下时机各调用一次 - login: 接口:

· 用户在注册成功时;
· 用户登录成功时;
· 已登录用户每次启动 App 时;

记录激活事件

如果使用了神策渠道追踪功能,需要在 SDK 初始化之后调用 - trackInstallation: 记录安装激活事件

// 记录激活事件
[[SensorsAnalyticsSDK sharedInstance] trackInstallation:@"AppInstall"
                                         withProperties:@{@"DownloadChannel": @"AppStore"}];
CODE

更多关于渠道追踪功能的说明,请参考渠道追踪

代码埋点追踪事件

可以通过 - track: 和 - track:withProperties: 方法追踪用户行为事件,并为事件添加自定义属性

UInt64 productId = 123456;
NSString *productCatalog = @"Laptop Computer";
BOOL isAddedToFavorites = NO;

[[SensorsAnalyticsSDK sharedInstance] track:@"BuyProduct"
							 withProperties:@{@"ProductID" : [NSNumber numberWithUnsignedLong:productId],
											  @"ProductCatalog" : productCatalog,
											  @"IsAddedToFav" : @(isAddedToFavorites)];
CODE

事件名和事件属性的格式规范,请参考 数据格式

调试查看事件信息

初始化 SDK 时,进行以下配置,即可打开 SDK 的日志输出功能

// 打开 SDK log 功能
options.enableLog = YES;
OBJECTIVE-C

然后在 IDE (如 Xcode )日志控制台中筛选 SALog 关键词:

  • 点事件触发成功时,SDK 会输出 【track event】 开头的事件数据;
  • 事件数据上报成功时,SDK 会输出 【valid message】字段开头的事件数据;
  • 事件数据上报失败时,SDK 会输出 【invalid message】 字段开头的事件数据并输出错误原因。

SDK 可选配置

设置用户属性

 - set: 方法可以设定用户属性,同一个 key 多次设置时,value 值会进行覆盖替换。

// 设定用户年龄属性 "Age" 为 18
// set: 方法设定一个或多个用户属性
[[SensorsAnalyticsSDK sharedInstance] set:@{@"Age" : [NSNumber numberWithInt:18]}];
CODE

打通 App 与 H5

版本要求

iOS SDK v2.0.8 及以上版本

初始化 SDK 时,进行如下配置,即可开启 App 打通 H5 功能

// 开启 App 打通 H5
options.enableJavaScriptBridge = YES;
OBJECTIVE-C

打通功能需要 App 和 H5 同时开启才可以生效,H5 开启方法请参考App 打通 H5

可视化全埋点

版本要求

神策分析 v1.17.2517+

iOS SDK v2.0.0+

SDK 初始化时,进行如下配置,即可开启可视化全埋点

// 开启可视化全埋点
options.enableVisualizedAutoTrack = YES;
OBJECTIVE-C