iOS SDK 多实例指南
1. 多实例功能介绍
在iOS SDK 1.2.0版本中,新增了多APPID特性,可以创建多个SDK实例,分别对应各自的APPID进行数据上报,也就是可以向多个APPID进行数据上报。
在iOS SDK 2.1.0版本中,新增了轻量实例的特性,可以支持对同一APPID生成多个子轻量实例,子轻量实例与父实例的APPID一致,但账号等信息不一致。
如果您将老版本(1.2.0之前的版本)SDK升级至1.2.0之后的版本,如果老版本SDK本地缓存还有未上报的数据,那么将会直接上报到第一个实例化的APPID中。对于只使用一个APPID实例的用户而言,数据不会有任何影响。
2. 如何创建多SDK实例
本节介绍iOS SDK 1.2.0之后版本的SDK初始化方式以及多SDK实例的创建方法:
//初始化
ThinkingAnalyticsSDK *instance = [ThinkingAnalyticsSDK startWithAppId:APP_ID withUrl:SERVER_URL];
// 后续可以通过如下两种方法使用 SDK
[instance track:@"event_name" properties:eventProperties];
// [[ThinkingAnalyticsSDK sharedInstanceWithAppid:APP_ID] track:@"event_name" properties:eventProperties];
// 1.2.0之前,或者单实例可使用下列使用 SDK
// [[ThinkingAnalyticsSDK sharedInstance] track:@"event_name" properties:eventProperties];
//支持初始化多个APPID实例
//ThinkingAnalyticsSDK *instance2 = [ThinkingAnalyticsSDK startWithAppId:APP_ID2 withUrl:SERVER_URL2];
请注意多个SDK实例的APPID必须不同,多实例之间的大多数数据是不共通的,详情可参考第四节“多实例间的数据、设置共享”。
3. 创建轻实例
在iOS SDK 2.1.0版本中,您可以通过轻实例的方式,创建同一个APPID下的多个实例
//首先创建一个SDK实例
ThinkingAnalyticsSDK *instance = [ThinkingAnalyticsSDK startWithAppId:APP_ID withUrl:SERVER_URL];
//通过之前创建的实例,调用createLightInstance生成轻实例
ThinkingAnalyticsSDK *lightInstance = [instance createLightInstance];
[lightInstance login:@"123ABCabc@thinkingdata.cn"];
[lightInstance track:@"some_event" properties:eventProperties];
子轻量实例与父实例的APPID、上报地址以及部分设置一致,但其他信息不共享,详情可参考第四节“多实例间的数据、设置共享”。
4. 多实例间的数据、设置共享
大多数接口都是由实例对象所调用,因此绝大部分数据与设置在多APPID实例、父实例与轻量实例间是不共享的,但有部分数据与设置会对所有实例生效,以下是所有数据与设置在多实例间是否共享的详细说明:
账号相关信息
- 系统默认生成的访客ID
#distinct_id
:共享 - 调用
identify
设置的访客ID#distinct_id
:不共享 - 调用
login
设置的账号ID#account_id
:不共享
- 系统默认生成的访客ID
事件上报
track
与用户属性上报user_set
、user_setOnce
、user_add
、user_delete
:不共享公共属性
setSuperProperties
和动态公共属性registerDynamicSuperProperties
:不共享SDK 配置信息是否在多实例之间共享:
- 上报策略相关(即上报的间隔时间与每批次数据量):共享,由第一个实例化的APPID对应的项目数据决定
- 上传的网络条件
setNetworkType
:共享
自动采集事件
- 建议只在一个实例上开启自动采集事件
- 支持向多个APP ID上报自动采集事件
- 自动采集事件的设置可以只对单个APPID实例生效,详情请参考iOS SDK 自动采集指南
记录事件时长
timeEvent
:不共享