# マルチ - インスタンス
# 機能紹介
マルチ-インスタンス機能は、複数の SDK インスタンスを作成して、独自の Appid に基づいてデータ追跡を実行できます。つまり、データを複数の Appid に送信できます。
なお iOS SDK バージョン 2.1.0 では、新しい ライト-インスタンス 機能が追加され、同じ Appidの複数のサブライト-インスタンスの生成が対応できます。 ライト-インスタンスはメインインスタンスの Appid と一致していますが、アカウントなどの情報は不一致となります。
# マルチインスタンスを作成
SDKの複数インスタンスの使用方法について説明します:
[TDAnalytics enableLog:YES];
NSString *appId_1 = @"appId_1";
NSString *receiverUrl_1 = @"https://receiver-ta-preview.thinkingdata.cn";
[TDAnalytics startAnalyticsWithAppId:appId_1 serverUrl:receiverUrl_1];
NSString *appId_2 = @"appId_2";
NSString *receiverUrl_2 = @"https://receiver-ta-preview.thinkingdata.cn";
[TDAnalytics startAnalyticsWithAppId:appId_2 serverUrl:receiverUrl_2];
[TDAnalytics calibrateTimeWithNtp:@"time.apple.com"];
[TDAnalytics login:@"TD" withAppId:appId_1];
[TDAnalytics login:@"TD" withAppId:appId_2];
[TDAnalytics setDistinctId:@"Thinker" withAppId:appId_2];
// super property
[TDAnalytics setSuperProperties:@{@"channel": @"ta",} withAppId:appId_1];
[TDAnalytics setSuperProperties:@{@"channel": @"ta",} withAppId:appId_2];
[TDAnalytics unsetSuperProperty:@"isTest" withAppId:appId_1];
[TDAnalytics clearSuperPropertiesWithAppId:appId_1];
[TDAnalytics getSuperPropertiesWithAppId:appId_1];
[TDAnalytics setDynamicSuperProperties:^NSDictionary * _Nonnull{
return @{@"now": [NSDate date]};
} withAppId:appId_1];
// auto track
[TDAnalytics enableAutoTrack:TDAutoTrackEventTypeAppInstall | TDAutoTrackEventTypeAppStart | TDAutoTrackEventTypeAppEnd withAppId:appId_1];
// Ignore automatic collection events on a certain page.
[TDAnalytics ignoreAutoTrackViewControllers:@[] withAppId:appId_1];
[TDAnalytics setAutoTrackProperties:TDAutoTrackEventTypeAll properties:@{@"auto_key2": @"auto_value2"} withAppId:appId_1];
// track
[TDAnalytics track:@"product_buy" withAppId:appId_1];
// track first
TDFirstEventModel *firstModel = [[TDFirstEventModel alloc] initWithEventName:@"device_activation" firstCheckID:@"TD"];
firstModel.properties = @{@"key":@"value"};
[TDAnalytics trackWithEventModel:firstModel withAppId:appId_1];
// track update
TDUpdateEventModel *updateModel = [[TDUpdateEventModel alloc] initWithEventName:@"UPDATABLE_EVENT" eventID:@"test_event_id"];
updateModel.properties = @{@"status": @3, @"price": @100};
[TDAnalytics trackWithEventModel:updateModel withAppId:appId_1];
// track overwrite
TDOverwriteEventModel *overwriteModel = [[TDOverwriteEventModel alloc] initWithEventName:@"OVERWRITE_EVENT" eventID:@"test_event_id"];
overwriteModel.properties = @{@"status": @3, @"price": @100};
[TDAnalytics trackWithEventModel:overwriteModel withAppId:appId_1];
// The following example completes the statistics of the time users spend on a certain product page.
[TDAnalytics timeEvent:@"stay_shop" withAppId:appId_1];
/*
do someting .......
*/
// When the user leaves the product page, the timer ends, and the "stay_shop" event will have an attribute indicating the duration of the event. #duration
[TDAnalytics track:@"stay_shop" withAppId:appId_1];
// logout
[TDAnalytics logoutWithAppId:appId_1];
// user set
[TDAnalytics userSet:@{@"username": @"ThinkingData"} withAppId:appId_2];
// user set once
[TDAnalytics userSetOnce:@{@"first_payment_time": @"2018-01-01 01:23:45.678"} withAppId:appId_1];
// user add
[TDAnalytics userAdd:@{@"total_revenue": @30} withAppId:appId_1];
// user unset
[TDAnalytics userUnset:@"key" withAppId:appId_1];
// user delete
[TDAnalytics userDeleteWithAppId:appId_1];
// user append
[TDAnalytics userAppend:@{@"user_list": @[@"apple", @"ball"]} withAppId:appId_1];
// user uniqe append
[TDAnalytics userUniqAppend:@{@"user_list":@[@"apple", @"cube"]} withAppId:appId_1];
// Connect H5 page data
[TDAnalytics addWebViewUserAgent];
[TDAnalytics getDeviceId];
[TDAnalytics flushWithAppId:appId_1];
// third party data
[TDAnalytics enableThirdPartySharing:TDThirdPartyTypeAppsFlyer withAppId:appId_1];
注意:APP IDは異なる必要があります。マルチインスタンスの間のデータは共用しません
# ライトインスタンスを作成
iOS SDK 2.1.0バージョンは、ライトインスタンスのメソットで、同じAPPIDの元で複数インスタンスを作成できます。
// original project
NSString *appId = @"appId";
NSString *receiverUrl = @"https://receiver-ta-preview.thinkingdata.cn";
[TDAnalytics startAnalyticsWithAppId:appId serverUrl:receiverUrl];
// create light project id with original project
NSString *lightProjectAppId = [TDAnalytics lightInstanceIdWithAppId:appId];
// track ...
[TDAnalytics track:@"event" withAppId:lightProjectAppId];
// user profile ....
[TDAnalytics userSet:@{@"age": 18} withAppId:lightProjectAppId];
サブライトインスタンスはメインインスタントのAPPID、data receiverのURL及び一部設定は一致で、その他の情報は共用しません。
# マルチインスタンスの間のデータ共用
ほとんどのインターフェイスはインスタンス オブジェクトによって呼び出されるため、ほとんどのデータと設定は複数の APPID インスタンス、メインインスタンス、およびライトインスタンス間で共用されませんが、一部のデータと設定はすべてのインスタンスで有効になります。以下はすべての詳細:
- アカウント情報
- システムでデフォルトで生成したゲストID
#distinct_id
:共用 identify
を呼び出して設定した#distinct_id
:不共用login
を呼び出して設定した#account_id
:不共用
- システムでデフォルトで生成したゲストID
- イベントデータの
track
とユーザープロパティデータのuser_set
、user_setOnce
、user_add
、user_delete
:不共用 - 共通プロパティ
setSuperProperties
と動的共通プロパティsetDynamicSuperPropertiesTracker
:不共用 - SDK設定情報:
- データ送信ポリシー(送信間隔時間と毎回送信数):共用、一個目のインスタンスのAPPIDのプロジェクトデータによって決定される
- 送信のネット条件
setNetworkType
:共用
- 自動収集イベント
- 1つのインスタンス上で自動収集イベントを有効にするのを推奨
- 複数のAPP IDに自動収集イベントを送信対応
- 自動収集イベントの設定は一つのAPPIDインスタンスのみ有効可能
- イベント時間経過を記録
timeEvent
:不共有