Android SDK 多实例指南

1. 多实例功能介绍

在Android SDK 1.3.0版本中,新增了多APPID特性,可以创建多个SDK实例,分别对应各自的APPID进行数据上报,也就是可以向多个APPID进行数据上报。

在Android SDK 2.1.0版本中,新增了轻量实例的特性,可以支持对同一APPID生成多个子轻量实例,子轻量实例与父实例的APPID一致,但账号等信息不一致。

如果您将老版本(1.3.0之前的版本)SDK升级至1.3.0之后的版本,如果老版本SDK本地缓存还有未上报的数据,那么将会直接上报到第一个实例化的APPID中。对于只使用一个APPID实例的用户而言,数据不会有任何影响。

2. 如何创建多SDK实例

首先介绍Android SDK 1.3.0之后版本的SDK初始化方式:

  // 新的初始化方法
  ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(mContext, TA_APP_ID, TA_SERVER_URL);

  // 可以通过如下方式使用 SDK
  instance.track("some_event",properties);

  // 或者
  ThinkingAnalyticsSDK.sharedInstance(this, TA_APP_ID).track("some_event",properties);

  // 在单个实例下,您仍可以使用之前的初始化方法与调用方法
  ThinkingAnalyticsSDK.sharedInstance(TA_APP_ID,TA_SERVER_URL);
  ThinkingAnalyticsSDK.sharedInstance(this).track("some_event",properties);

使用新的SDK初始化方法,即可创建多个SDK实例:

  // 新的初始化方法
  ThinkingAnalyticsSDK instance1 = ThinkingAnalyticsSDK.sharedInstance(mContext, TA_APP_ID, TA_SERVER_URL);
  ThinkingAnalyticsSDK instance2 = ThinkingAnalyticsSDK.sharedInstance(mContext, ANOTHER_TA_APP_ID, TA_SERVER_URL);
  instance1.track("some_event",properties);
  instance2.track("some_event",properties);

请注意多个SDK实例的APPID必须不同,多实例之间的大多数数据是不共通的,详情可参考第四节“多实例间的数据、设置共享”。

3. 创建轻实例

在Android SDK 2.1.0版本中,您可以通过轻实例的方式,创建同一个APPID下的多个实例

  //首先创建一个SDK实例
  ThinkingAnalyticsSDK instance = ThinkingAnalyticsSDK.sharedInstance(mContext, TA_APP_ID, TA_SERVER_URL);

  //通过之前创建的实例,调用createLightInstance生成轻实例
  ThinkingAnalyticsSDK lightInstance = instance.createLightInstance();

  lightInstance.login("anotherAccount");
  lightInstance.track("some_event",properties);

子轻量实例与父实例的APPID、上报地址以及部分设置一致,但其他信息不共享,详情可参考第四节“多实例间的数据、设置共享”。

4. 多实例间的数据、设置共享

大多数接口都是由实例对象所调用,因此绝大部分数据与设置在多APPID实例、父实例与轻量实例间是不共享的,但有部分数据与设置会对所有实例生效,以下是所有数据与设置在多实例间是否共享的详细说明:

  1. 账号相关信息

    • 系统默认生成的访客ID#distinct_id:共享
    • 调用 identify 设置的访客ID#distinct_id:不共享
    • 调用login设置的账号ID#account_id:不共享
  2. 事件上报track与用户属性上报user_setuser_setOnceuser_adduser_delete:不共享

  3. 公共属性setSuperProperties和动态公共属性setDynamicSuperPropertiesTracker:不共享

  4. SDK 配置信息是否在多实例之间共享:

    • 上报策略相关(即上报的间隔时间与每批次数据量):共享,由第一个实例化的APPID对应的项目数据决定
    • 上传的网络条件setNetworkType:共享
    • 打印上传数据LogEnableTrackLogging:共享
  5. 自动采集事件

    • 建议只在一个实例上开启自动采集事件
    • 支持向多个APP ID上报自动采集事件
    • 自动采集事件的相关配置是否在多实例共享:
      • 设置控件 IDsetViewID:不共享
      • 自定义控件属性setViewProperties等:不共享
      • 忽略某个页面的自动采集事件ignoreAutoTrackActivity等:不共享
      • 忽略某个类型控件的点击事件ignoreViewType:不共享
      • 忽略某个控件ignoreView:不共享
      • 所有的注解:可以通过设置 appId 参数指定生效的实例。如果不设置,则所有实例共享该配置,如:
        @ThinkingDataIgnoreTrackAppViewScreen(appId = "debug-appid")
        
  6. 记录事件时长timeEvent:不共享

results matching ""

    No results matching ""