menu
Is this helpful?

# マルチ - インスタンス

# 機能紹介

マルチ-インスタンス機能は、複数の 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 インスタンス、メインインスタンス、およびライトインスタンス間で共用されませんが、一部のデータと設定はすべてのインスタンスで有効になります。以下はすべての詳細:

  1. アカウント情報
    • システムでデフォルトで生成したゲストID#distinct_id:共用
    • identifyを呼び出して設定した#distinct_id:不共用
    • loginを呼び出して設定した#account_id:不共用
  2. イベントデータのtrackとユーザープロパティデータのuser_setuser_setOnceuser_adduser_delete:不共用
  3. 共通プロパティsetSuperPropertiesと動的共通プロパティsetDynamicSuperPropertiesTracker:不共用
  4. SDK設定情報:
    • データ送信ポリシー(送信間隔時間と毎回送信数):共用、一個目のインスタンスのAPPIDのプロジェクトデータによって決定される
    • 送信のネット条件setNetworkType:共用
  5. 自動収集イベント
    • 1つのインスタンス上で自動収集イベントを有効にするのを推奨
    • 複数のAPP IDに自動収集イベントを送信対応
    • 自動収集イベントの設定は一つのAPPIDインスタンスのみ有効可能
  6. イベント時間経過を記録timeEvent:不共有