iOS SDK 快速接入

最后更新于:2019-05-07 10:49:15

在使用前,请先阅读数据模型的介绍。

更多参数接口信息介绍可前往 iOS SDK 使用说明

1、事件设计表(示例)

2、集成 SDK

3、埋点示例

1. 事件设计表(示例)

事件设计表一般是由神策分析师和你们对接的同事,针对具体业务需求一起梳理的需要做埋点的 Excel 表。 神策分析系统宏观上有两张表,事件表(events)用于记录用户的行为事件,比如 App 启动,App 浏览页面;用户表(users)用于保存用户相关的一些信息,比如个人资料。

事件和用户属性设计
事件表(events) 用户表(users)
事件名(带 $ 符号的为神策预置事件,开启全埋点自动采集) 事件属性 用户属性
App 启动事件( $AppStart ) 预置事件属性 邮箱( email )
App 退出事件( $AppEnd ) 预置事件属性
App 浏览页面事件( $AppViewScreen ) 预置事件属性
App 元素点击事件( $AppClick ) 预置事件属性
搜索事件( search ) 搜索关键词( searchKeyWord )

2. 集成 SDK

神策 SDK 提供了 全埋点 的功能,可以帮您采集四类事件:

事件显示名 事件名 事件描述
App 启动事件 $AppStart App 启动时触发
App 退出事件 $AppEnd App 退到后台时触发
App 浏览页面事件 $AppViewScreen Controller viewViewAppear 时触发
App 元素点击事件 $AppClick 控件被点击时触发

pod 'SensorsAnalyticsSDK'
  1. 下载 iOS SDK 源码
  2. 将解压目录下 SensorsAnalyticsSDK 文件夹拖拽到 Xcode 工程内并请勾选 Copy items if needed 选项
  3. 项目设置 Build Phase —> Link Binary With Libraries 添加依赖库:libicucore、libsqlite3 和 libz

在程序的入口 AppDelegate.m 中引入 SensorsAnalyticsSDK.h,并在 - application:didFinishLaunchingWithOptions:launchOptions 中调用 sharedInstanceWithConfig: 初始化 SDK。

#import "SensorsAnalyticsSDK.h"

#ifdef DEBUG
#define SA_SERVER_URL @"<#【测试项目】数据接收地址#>"
#else
#define SA_SERVER_URL @"<#【正式项目】数据接收地址#>"
#endif

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

    [self initSensorsAnalyticsWithLaunchOptions:launchOptions];
    return YES;
}

- (void)initSensorsAnalyticsWithLaunchOptions:(NSDictionary *)launchOptions {
    // 初始化 SDK
    SAConfigOptions *options = [[SAConfigOptions alloc] initWithServerURL:SA_SERVER_URL launchOptions:launchOptions];
    [SensorsAnalyticsSDK sharedInstanceWithConfig:options];

    // 设置公共属性
    [[SensorsAnalyticsSDK sharedInstance] registerSuperProperties:@{@"appName": @"HelloSensorsAnalytics"}];
    // 追踪激活事件,详见:https://sensorsdata.cn/manual/app_channel_tracking.html
    [[SensorsAnalyticsSDK sharedInstance] trackInstallation:@"AppInstall"];
    // 打开自动采集, 并指定追踪哪些 AutoTrack 事件
    [[SensorsAnalyticsSDK sharedInstance] enableAutoTrack:SensorsAnalyticsEventTypeAppStart|
     SensorsAnalyticsEventTypeAppEnd|
     SensorsAnalyticsEventTypeAppViewScreen|
     SensorsAnalyticsEventTypeAppClick];
    // 打通 App 与 H5,详见:https://sensorsdata.cn/manual/app_h5.html
    [[SensorsAnalyticsSDK sharedInstance] addWebViewUserAgentSensorsDataFlag];
}

数据接收地址 server_url 获取方式

3. 埋点示例

3.1 追踪事件

初始化 SDK 之后,可以在相应业务逻辑处通过 track: 方法追踪用户行为事件,并为事件添加自定义属性(触发的事件会存储到神策分析系统的 events 表中)。

    // 记录搜索(search )事件
    [[SensorsAnalyticsSDK sharedInstance] track:@"ViewProduct"
                                 withProperties:@{@"searchKeyWord" : @"神策数据"}];

3.2 设置用户属性

为了更准确地提供针对人群的分析服务,可以使用神策分析 SDK 的 set: 等方法设置用户属性,如年龄、性别等。用户可以在留存分析、分布分析等功能中,使用用户属性作为过滤条件,精确分析特定人群的指标。 (设置的用户属性会存储到神策分析系统的 users 表中)

// 设置用户的 email
[[SensorsAnalyticsSDK sharedInstance] set:@{@"email": @"xxx@xxx.xx"}];

3.3 匿名 ID 和登录 ID 关联

如何准确的标识用户

成功关联设备 ID登录 ID 之后,用户在该设备 ID 上或该登录 ID 下的行为就会贯通,被认为是一个神策 ID 发生的。在进行事件、漏斗、留存等用户相关分析时也会算作一个用户。

关联设备 ID登录 ID 的方法虽然实现了更准确的用户追踪,但是也会增加埋点接入的复杂度。所以一般来说,我们建议只有当同时满足以下条件时,才考虑进行 ID 关联:

  1. 需要贯通一个用户在一个设备上注册前后的行为。
  2. 需要贯通一个注册用户在不同设备上登录之后的行为

用户在登录前 ,SDK 会分配一个匿名 ID 来标识游客。当用户注册成功或登录成功时调用 login 方法,传入对应的登录 ID ;匿名 ID 会与对应的登录 ID 进行关联,关联成功之后视为同一个用户。 调用时机:注册成功、登录成功 、初始化 SDK(如果能获取到登录 ID)都需要调用 login 方法传入登录 ID。

注意:登录 ID 是指可以唯一标识一个用户的 ID,通常是业务数据库里的主键或其它唯一标识

//注册成功、登录成功、初始化SDK后  调用 login 传入登录 ID
[[SensorsAnalyticsSDK sharedInstance] login:@"你们服务端分配给用户具体的登录 ID"];

注意: 如果服务端做了埋点,需在用户注册/登录的时候将匿名 ID 传给服务端做用户 ID 关联。 可以通过 anonymousId 方法可获取神策分析 iOS SDK 分配的 匿名 ID

  //在用户注册或登录时,获取当前用户的匿名 ID 传给服务端
  NSString *anonymousId = [[SensorsAnalyticsSDK sharedInstance] anonymousId];

3.4 调试查看埋点数据

1.10.23及以后的版本, SDK 调试模式默认为关闭状态,需在代码中配置 scheme 后,通过扫描神策分析「设置调试模式」的二维码开启调试模式; 开启调试模式只针对当前扫码打开的 App 有效,如果 App 被强杀,下次打开 App, SDK 的调试模式恢复为关闭状态.

3.4.1 获取并配置 scheme

获取 scheme

使用 admin 账号,登录到神策分析相应的项目,点击右上角的账号,从「数据接入」页面获取 scheme 的值。

配置 scheme

点击项目 target 选择选项卡 Info,添加 URL Types,将第一步获取到的 scheme 配置到 URL Scheme 中。

3.4.2 处理 URL

在 AppDelegate.m 中的 - (BOOL)application:(UIApplication )app openURL:(NSURL )url options:(NSDictionary *)options 方法中 调用 handleSchemeUrl: 函数接收 URL

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

3.4.3 用手机自带的浏览器扫码打开 App,选择调试模式

在神策分析 v1.13 及之后版本中点击「设置设备调试模式」打开二维码。

二维码位置:「神策分析」——「埋点」——「导入实时查看」——「Debug 数据」——「设置设备调试模式」

扫码打开 App 时,会弹出提示,选择想要切换的调试模式。

开启调试模式(导入数据): 打开调试模式,校验数据,并将数据导入到神策分析中。

开启调试模式(不导入数据): 打开调试模式,仅校验数据,但不进行数据导入,数据最终不会进入到数据库。

3.4.4 导入实时查看

开启调试模式后,可以在神策分析 「埋点」→ 「导入实时查看」 点击「开始刷新」查看当前设备的调试数据上报情况

3.4.5 查看本地日志

开启调试模式后,也可以通过 Xcode 控制台查看输出的日志。过滤日志关键字为:SALog,一个事件有两条日志。 日志中如果出现 【track event】 字段, 说明此事件已触发,如果出现 【valid message】 字段,说明数据已同步到服务端。