直接易用的移动App数据统计分析产品,快捷高效地为开发者收集、处理和分析相关数据,全面掌握用户使用行为,掌握用户行为,改善产品设计,提高用户体验。

iOS SDK 集成说明

1 综述

1.1 适用范围

海度云移动分析系统(以下简称海度系统)为移动移动应用提供数据统计分析服务。 SDK 适用于 iOS 5.1.1 以上操作系统的设备。

1.2 统计标准

海度系统中的基本数据单元依据以下标准定义。

1.2.1 新增用户

数据系统中的“用户”指用户的一台唯一设备。

1.2.3 用户的一次启动

指用户从打开应用的界面至离开界面的完整过程。前后台的切换也算一次启动。

1.2.4 页面统计

通过 enterPage 和 leavePageId 来统计在当前页面的停留时间。

[[HiidoSDK sharedObject] enterPage:userId pageId:@"Page A"];
[[HiidoSDK sharedObject] leavePageId:@"Page A" destPageId:@"Page B" pageParm:@"pageParmFromDemo" needReport:TRUE];
[[HiidoSDK sharedObject] enterPage:userId pageId:@"Page B"];

这样就能产生一条 A 页面停留及跳转到 B 页面启动延时相关记录。

1.2.5 自定义事件

自定义事件用于收集任意您期望跟踪的数据。

指用户在应用中进行了特定的操作或达成了特定的条件。

例如:用户点击了广告栏、用户进行付费等。

2 接入统计系统

2.1 为应用申请appkey

登录海度系统,进入添加应用页面如下图

添加应用

按照上图配置好后将得到一个32位字符串即appkey。

2.2 向工程导入SDK

  1. 在工程目录结构中,右键选择 Add->Existing Files...,选择将头文件 HiidoSDK.h 加入
  2. 在 Target 设置中,在 Build Phases-->Link Binary With Libraries 中加入 libHiidoSDK

2.3 增加依赖库

如果是通过 Cocoapods 的方式加入 HiidoSDK,依赖库已经由 Cocoapods 自动管理。

a. 如果是手动通过头文件和静态库,则需要手动在 Xcode 中 Build Phases-->Link Binary With Libraries 加入依赖库:

  • CoreTelephony.framework
  • SystemConfiguration.framework
  • AdSupport.framework

2.4 增加必须的调用方法(重要)

a. 在需要调用 SDK 方法的文件中导入 HiidoSDK.h;

b. 调用方法

- (void)appStartLaunchWithAppKey: (申请的 appkey)
                           appId: (可自定义的字符串)
                         version: (当前应用版本号)
                            from: (发布应用的渠道)
                        delegate: (获取用户 ID 的代理);

c. from 字段是渠道标识符,可通过为不同越狱推广渠道分配不同的渠道标识安装包的方式来单独追踪数据,AppStore 中提交的版本亦可单独进行标记。不需要区分渠道时,可以传空字符串“”。但请注意,每台设备的全部数据会计入首个安装激活的渠道,用户更换渠道包后不重复计算新增。

示例:

#import “HiidoSDK.h”
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
HiidoSDK *SDK = [HiidoSDK sharedObject]; //sharedObject 为sdk内部单件 app业务层使用;allocObject 用于其它sdk接入
[SDK appStartLaunchWithAppKey:@"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                        appId:[HiidoUtils defaultAppId]
                      version:[HiidoUtils defaultAppVersion]
                         from:@"channelID"
                     delegate:self];
}

3 更多高级功能

3.1 追踪页面使用情况

此功能帮助开发者统计各个页面的访问次数和停留时长,为产品优化提供依据。

a. 在 viewWillAppear 或 viewDidAppear 方法里调用 enterPage 方法: [[HiidoSDK sharedObject] enterPage:userId pageId:@"Page A"];

b.在viewWillDisappear或viewDidDisappear方法里调用 leavePageId 方法: [[HiidoSDK sharedObject] leavePageId:@"Page A" destPageId:@"Page B" pageParm:@"pageParmFromDemo" needReport:TRUE];

注意:

当进入一个页面时调用,请保证每个 Page 的 Id 唯一,比如 @“主页” @“设置页”; 当进入新的 page 时,会汇报上一个 Page 的统计数据给服务器;如果新进入的 pageId 和之前缓存的 destPageId 一样,则说明正常跳转,可以记录 page 的信息。否则,跳转信息可能是不正确的,将被忽略。

3.2 使用自定义事件

使用说明

自定义事件用于统计任何您期望去跟踪的数据,如:点击某功能按钮、填写某个输入框、触发了某个广告等;同时,自定义事件还支持添加一些描述性的属性参数。SDK提供了两种自定义事件,分别是点击次数事件和数值计算事件。

点击次数事件:

- (void)reportTimesEvent: eventId: timesParm:;
- (void)reportTimesEvent: eventId: timesParm: property:;

注意:

  1. 如果你想记录同一件事件中的不同属性,无需定义多个 eid, 可以使用该方法的最后一个参数 label 传入不同属性值来区分。 海度会根据该 label 值进行汇总统计。
  2. 如果事件上报需要上报更多的参数,请使用属性参数 property,该参数以 key,value 的形式上报数据,如果 value 为数值类型,将会统计数值的总数与平均数,如果 value 为字符串类型,将会统计 value 出现的频度及分布情况。

数值计算事件:

- (void)reportCountEvent: eventId: eventValue: customParm:;
- (void)reportCountEvent: eventId: eventValue: customParm:property:;

注意:

  1. 如果你想记录同一件事件中的不同属性,无需定义多个 eid, 可以使用该方法的最后一个 label 传入不同属性值来区分。
  2. 该接口中的第2个 evalue,就是用来统计相关求和,求平均值的数值,该参数传入的必须为数字, 否则将无法计算。例如如果你想统计某一购买行为的金额,那么就可以利用数值计算事件,在 evalue 中把金额上报上来,海度会统计事件所产生的金额总数及平均数。
  3. 如果事件上报需要上报更多的参数,请使用属性参数 property,该参数以 key,value 的形式上报数据,如果 value 为数值类型,将会统计数值的总数与平均数,如果 value 为字符串类型,将会统计 value 出现的频度及分布情况。

3.3 错误事件统计

- (void)reportErrorEvent: errorId: errorMessage: errorParm:;

3.4 收集应用错误日志

收集错误日志可帮助修正 BUG 改进产品。默认情况下自动收集错误日志是关闭的可以调用一下方法来打开

- (void)setCrashReportingEnabled: YES;

如果不使用 Hiido 提供的自动崩溃收集,使用第三方库的情况下,可以通过下方接口上报崩溃:

- (void)reportCrash: crashMessage:;

3.5 获得应用配置文件

a. 监听 kOnlineConfigNotification

b. 调用 updateOnlineConfigs

c. 获得通知后调用 getConfigs 获取在线配置

3.6 消息推送功能

应用获取到推送token后通过此接口上传至服务端。登入后台可以进行消息推送。

- (void)reportPushToken:;

3.7 上报成功/失败事件 可用于统计该事件的成功率

- (void)reportSuccess: actionId: actionType: duration: parm:;
- (void)reportFailure: actionId: actionType: failCode: failMessage: parm:;

注意:

调用成功/失败行为接口的行为 actionId 必须保持一致,才能准备统计该行为成功率失败率