menu
Is this helpful?

# 多实例

# 一、功能介绍

我们支持使用多个Appid,创建SDK实例,我们简称为多实例。通过多实例功能,您可以上报数据到不同的项目。

# 二、创建多实例

传入不同的 APP ID 完成 SDK 初始化,即可创建多个 SDK 实例:

// 初始化 SDK
TDAnalytics.init(this, TA_APP_ID, TA_SERVER_URL);
TDAnalytics.init(this, ANOTHER_TA_APP_ID, TA_SERVER_URL);

TDAnalyticsAPI.track("some_event",properties, TA_APP_ID);
TDAnalyticsAPI.track("some_event",properties, ANOTHER_TA_APP_ID)

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

# 三、创建轻实例

您可以通过轻实例的方式,创建同一个 APPID 下的多个实例

//首先创建一个SDK实例
TDAnalytics.init(this, TA_APP_ID, TA_SERVER_URL);
//通过之前创建的实例,调用lightInstance生成轻实例
String uuid = TDAnalytics.lightInstance();
TDAnalyticsAPI.login("anotherAccount",uuid);
TDAnalyticsAPI.track("some_event",properties,uuid);

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

# 四、多实例间的数据共享

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

  1. 账号相关信息
  • 系统默认生成的访客 ID#distinct_id:共享
  • 调用 identify 设置的访客 ID#distinct_id:不共享
  • 调用login设置的账号 ID#account_id:不共享
  1. 事件上报track与用户属性上报user_setuser_setOnceuser_adduser_delete:不共享
  2. 公共属性setSuperProperties和动态公共属性setDynamicSuperPropertiesTracker:不共享
  3. SDK 配置信息是否在多实例之间共享:
  • 上报策略相关(即上报的间隔时间与每批次数据量):共享,由第一个实例化的 APPID 对应的项目数据决定
  • 上传的网络条件setNetworkType:共享
  • 打印上传数据 LogEnableTrackLogging:共享
  1. 自动采集事件
  • 建议只在一个实例上开启自动采集事件
  • 支持向多个 APP ID 上报自动采集事件
  • 自动采集事件的相关配置是否在多实例共享:
    • 设置控件 IDsetViewID:不共享
    • 自定义控件属性setViewProperties等:不共享
    • 忽略某个页面的自动采集事件ignoreAutoTrackActivity等:不共享
    • 忽略某个类型控件的点击事件ignoreViewType:不共享
    • 忽略某个控件ignoreView:不共享
    • 所有的注解:可以通过设置 appId 参数指定生效的实例。如果不设置,则所有实例共享该配置,如:
@ThinkingDataIgnoreTrackAppViewScreen(appId = "debug-appid")
  1. 记录事件时长timeEvent:不共享