常见问题

最后更新于:2019-06-11 18:46:30

1. DebugMode 中的 SensorsAnalyticsDebugOnly 与 SensorsAnalyticsDebugAndTrack 有什么区别?

SensorsAnalyticsDebugOnly 模式下,同步数据时,服务端只做校验,不会真正的导入数据。 而在 SensorsAnalyticsDebugAndTrack 模式下,服务端校验并且会导入数据。

2. 为什么系统名称会同时出现 iPhone 和 iOS

iOS 10 中,

[[UIDevice currentDevice] systemName]

iPhone OSiPad OS 统一成 iOS 了。

建议更新 iOS SDK1.6.19 及以后的版本,$os 将统一成 iOS

3. App 版本号不包含 build 信息

$app_version 属性我们SDK中默认获取 ShortVersion (即:NSBundleCFBundleShortVersionString 对应的值),代码如下:

[[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"];

由于各个公司对 build 定义的不同,我们无法将 build 简单的拼接到 version 的后面,或者简单的使用 build 作为 version 。因为有些客户的 build 就是一个简单的编号,如:235,有些客户的 build 中已包含 version 的信息,如:1.2.3.235)。如果 version 中需要包含 build 信息,例如 build 中已经包含了 version 的信息,可以直接把 build 的值作为 $app_version 的值,只需在初始化 SDK 之后调用如下代码即可:

NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *app_build = [infoDictionary objectForKey:@"CFBundleVersion"];
[[SensorsAnalyticsSDK sharedInstance] registerSuperProperties:@{@"$app_version" : app_build}];

客户可根据具体的需求对$app_version 属性进行赋值。

4. 属性对应的 value 值中 YES/NOtrue/false 的区别

用户在track事件或profile用户属性时,会添加自定义属性。在添加自定义属性时,若传入的属性对应的value值为 YES/NO ,对应的数据类型为BOOL;若传入的value为 true/false ,对应的数据类型为NUMBER,请确保同名属性的类型一致。例如:

    NSMutableDictionary *dict = [[NSMutableDictionary alloc]init];
    [dict setObject:@YES forKey:@"isFirst"];
    [dict setObject:@true forKey:@"isStart"];

其中:

isFirst 对应的数据类型为 BOOL 类型

isStart 对应的数据类型为 NUMBER 类型

5. 开启 IDFA 后如何通过审核

以上是使用广告标识符(IDFA)的选项,每个选项的具体含义如下:

  • 在 App 内投放广告
    • 服务应用中的广告,如果您的应用中集成了广告,需要选择该选项;
  • 将此 App 安装归因于先前投放的特定广告
    • 跟踪投放的广告带来的安装,如果您使用了我们提供的渠道追踪功能,但是应用中并没有集成广告,需要选择该选项;
  • 将此 App 中发生的操作归因于之前投放的广告
    • 跟踪广告带来的用户的后续行为,如果您使用了我们提供的渠道追踪功能,需要选择该选项;
  • iOS 中的“限制广告跟踪”设置,
    • 这一项下的内容其实就是对你的应用使用 IDFA 的目的做下确认,只要你选择了采集 IDFA,那么这一项都是需要勾选;

如果您应用中集成了广告,并且使用了我们的渠道追踪功能,可选择1、2、3、4选项;如果您应用中没有集成广告,但是使用了我们的渠道追踪功能,可选择2、3、4选项。

6. 使用 .a 静态库的方式集成 SDK

选中对应的 target ,build settings -> other linker flag 设置为 -ObjC.

7. App 被动启动($AppStartPassively) 是什么事件?

当 App 处于后台没有被上划 kill 的情况下,经过一段时间后,iOS 系统会回收该 App 使用的系统资源,此时 App 会处于 not_running 的状态。 在收到推送或者用户位置移动时,系统可能会唤醒 App (基于用户习惯,具体触发时机不可知)时,App 会被重新拉活(并非用户点击 App 图标打开 App),会走到 didFinishLaunchingWithOptions 方法中,此时 SDK 会采集被动启动事件,并上报。