常见问题

最后更新于:2018-12-11 18:09:49

1、SDK 是否需要混淆?

由于 SDK 本身就是开源的, 如果你们没有对 SDK 的核心逻辑做修改,不建议混淆。再加上 SDK 中有部分类和接口会被 H5 中的 JavaScript 调用,如果混淆,这部分代码会被混淆掉。

2、DebugMode 中的 DEBUG_ONLY 与 DEBUG_AND_TRACK 有什么区别?

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

3、事件名称和属性名称,是否可以直接用中文?

eventproperties 的名称必须是合法的变量名,即不能以数字开头,且只包含:大小写字母、数字、下划线和 $。

事件属性的 value 支持的类型为:String 、Number、JSONArray 、Boolean 、Date 。

4、渠道信息应该放在哪里?

profile 里面的渠道使用用户第一次启动时带上的渠道信息,记录用户是从哪里来的,这样在以后的事件分析里就可以看到不同渠道来的用户的情况。不太建议每个事件中都放入当前渠道,因为在 app 中不像 web 一样渠道更新频繁

5、在发送事件的时候,某些情况下,有的属性值没有,是建议为空还是不带上这个属性?

不带上,或者为null,效果一样的。

6、使用 eclipse 集成时,报 SensorsDataContentProvider 找不到?

eclipse 不能 merge AndroidManifest.xml 文件,需要在 AndroidManifest <application> 标签中下加入以下配置:

  ...
  <application>
      <provider
            android:name="com.sensorsdata.analytics.android.sdk.SensorsDataContentProvider"
            android:authorities="您项目的包名.SensorsDataContentProvider"
            android:enabled="true"
            android:exported="true" />

        <meta-data
            android:name="com.sensorsdata.analytics.android.MainProcessName"
            android:value="您项目的包名" />
      ...
  </application>
  ...

7、$title 字段采集不对应 ?

如果没有使用到 ActionBar 可以在 Manifest 中给相应的 Activity 设置 label ,这样 $title 字段采集的内容 就会是你设置的 label 内容。

      <activity 
            android:label="商品详情页" 
            android:name=".DemoActivity" 
            android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

  ...

8、在 Application onCreate 中初始化 SDK 时,调用顺序

① 初始化 SDK

② registerSuperProperties 设置公共属性(如果不需要设置公共属性,忽略此步)

③ if 获取到用户的 注册 ID ,调用 login 传入 注册 ID 

④ trackInstallation 记录激活事件,渠道追踪 (如果要做 App 内推广,请参考 App 内推广文档调用 trackInstallation )

⑤ enableAutoTrack 开启全埋点自动采集 

⑥ trackFragmentAppViewScreen 开启 Fragment 页面浏览事件自动采集(如果不需要自动采集 Fragment 浏览页面事件,忽略此步)

9、初始化 SDK 时出现 javax.net.ssl.SSLHandshakeException:Invalid input to toASCII

项目的数据接收地址包含了‘_’,在 https 中报错了

10、fragment 页面浏览事件 $title 的设置

Fragment 页面浏览事件 $title 属性默认与所在 Activity 的 $title 采集规则一致。

在 SDK 2.0.0 及以上的版本可使用 @SensorsDataFragmentTitle 注解设置 Fragment 的 $title 属性的值。

例:

@SensorsDataFragmentTitle(title = "HomeFragment")
public class HomeFragment extends Fragment {
...
}

App 内推广