menu
Is this helpful?

# C++ - Advanced

# ユーザーID設定

SDKインスタンスはランダムの値でユーザーのゲストIDとして付与します。ゲストIDはユーザーがログインする前のユーザー識別IDとして使われます。ただし、事前に注意すべきのは、アカウントIDはユーザー再インストールすると変更されます。

# 1.1 ゲストID設定

TIP

一般的には、ゲストIDを手動設定することは不要で、ユーザー識別ルールを確認した上で、ゲストID設定を行なってください。

もしゲストIDを変更したい場合は、SDKを初期設定したあとですぐ呼び出すように設定してください。

独自でゲストIDの管理体制がある場合は、Identifyを呼び出して、ゲストIDを設定してください

// set distinct ID as Thinker
ThinkingAnalyticsAPI::Identify("Thinker");

現在のゲストIDを取得したい場合は、DistinctID()を呼び出して取得できます。

// Return distinct ID
ThinkingAnalyticsAPI::DistinctID().c_str()

# 1.2 アカウントIDを設置

ユーザーがログインする時に、loginを呼び出して、ユーザーのアカウントIDを設定できます。TEプラットフォームはアカウントIDを身分識別IDとしてlogoutを呼び出しする前までに保留します。loginを数回呼び出すと、前のアカウントIDが上書きされます。

// The login unique identifier of the user, corresponding to the #account_id in data tracking. #Account_id now is TE
ThinkingAnalyticsAPI::Login("TE");

その方法ではログインイベントは送信されません。

# 1.3 アカウントID設定

ユーザーログイン時に、Loginを呼び出してアカウントIDを設定できます。TEはアカウントIDをユーザー身分の識別IDとして使われています。一度設定されたアカウントIDはLogoutを呼び出す前に保存されます。Loginを多数呼び出した場合は、その前のアカウントIDを上書きされます。

ThinkingAnalyticsAPI::LogOut();

ユーザーがアカウントを削除する際にLogOutを呼び出すよう設定してください。

ログアウトイベントとして送信されません。

# イベント送信

SDKが初期化設定完了後、データプランに応じて、トラッキングコードを実装し、ユーザーの行動データを収集することができます。一般的には、通常イベント送信は十分収集可能で、実際業務シーンによって、初回・更新可能などの特殊イベント収集することも可能です。

# 2.1 通常イベント

track を呼び出して、データプランに応じてイベントのプロパティを設定の上、データ送信できます。

例:アイテム購入

TDJSONObject event_properties;
event_properties.SetString("product_name", "product name");
ThinkingAnalyticsAPI::Track("product_buy", event_properties);

# 2.2 初回イベント

初回イベントはあるデバイスもしくはその他分析主体のIDごとで、1回目のみ記録されるイベントとなります。

例えば:あるデバイスのアクティブイベントはそれを使って便利です

TDJSONObject jsonObject1;
jsonObject1.SetString("test","test");
TDFirstEvent *firstEvent = new TDFirstEvent("device_activation",jsonObject1);
ThinkingAnalyticsAPI::Track(firstEvent);

もしデバイス以外で初回判断したい場合は、firstEventで初回イベントを定義してください。

TDJSONObject jsonObject1;
jsonObject1.SetString("test","test");
TDFirstEvent *firstEvent = new TDFirstEvent("device_activation",jsonObject1);
ThinkingAnalyticsAPI::Track(firstEvent);

注意:サーバ側で初回なのかを検証するため、初回イベントはデフォルトで1時間遅延して格納されます。

# 2.3 更新可能イベント

通常イベントはデータを格納されたら更新不可となりますが、データ更新を行いたい場合は、更新可能イベントを利用してください。更新可能イベントは識別イベントのIDが必要で、作成時はプロパティに入れてください。TEシステムはイベント名とイベントIDを識別対象として更新データを確定します。

 //The event property status is 3 after reporting, with the price being 100
TDJSONObject jsonObject;
jsonObject.SetNumber("status", 3);
jsonObject.SetNumber("price", 100);
TDUpdatableEvent *updatableEvent = new TDUpdatableEvent("UPDATABLE_EVENT",jsonObject,"test_event_id");
ThinkingAnalyticsAPI::Track(updatableEvent);

//The event property status is 5 after reporting, with the price remaining the same
TDJSONObject jsonObject1;
jsonObject1.SetNumber("status", 5);
TDUpdatableEvent *updatableEvent1 = new TDUpdatableEvent("UPDATABLE_EVENT",jsonObject1,"test_event_id");
ThinkingAnalyticsAPI::Track(updatableEvent1);

# 2.4 書き替えイベント

書き替えイベントは更新可能イベントと同じようで、書き替えイベントは過去データを最新のデータで上書きされるため、前のデータを削除し新しくデータを格納するように見られます。TEシステムはイベント名とイベントIDを識別対象として更新データを確定します。

// Instance: Assume the event name is OVERWRITE_EVENT when reporting an overwritable event
//The event property status is 3 after reporting, with the price being 100
TDJSONObject jsonObject;
jsonObject.SetNumber("status", 3);
jsonObject.SetNumber("price", 100);
TDOverWritableEvent *event = new TDOverWritableEvent("OVERWRITE_EVENT",jsonObject,"test_event_id");
ThinkingAnalyticsAPI::Track(event);

//The event property status is 5 after reporting, with the price deleted
TDJSONObject jsonObject1;
jsonObject1.SetNumber("status", 5);
TDOverWritableEvent *event1 = new TDOverWritableEvent("OVERWRITE_EVENT",jsonObject1,"test_event_id");
ThinkingAnalyticsAPI::Track(event1);

# ユーザープロパティ

TEでユーザープロパティを設定するAPIは:UserSetUserSetOnceUserAddUserUnsetUserDeleteUserAppend.

# 3.1 UserSet

一般的にユーザープロパティ設定はUserSetを用いて設定できます。この呼び出しを利用して元のプロパティ値を書き替えされます。元のプロパティ値がない場合は、新規作成になります。データタイプは格納されたデータタイプと一致します。以下は例:

TDJSONObject userProperties;
//the username now is TA
userProperties.SetString("username", "TA");
ThinkingAnalyticsAPI::UserSet(userProperties);
//the userName now is TE
TDJSONObject userProperties1;
userProperties1.SetString("username", "TE");
ThinkingAnalyticsAPI::UserSet(userProperties1)

# 3.2 UserSetOnce

もしユーザープロパティは一回設定の上で変更がない場合は、UserSetOnceを用いて設定できます。この呼び出しは値のある際に書き替えを行いません。

//first_payment_time is 2018-01-01 01:23:45.678
TDJSONObject userProperties;
userProperties.SetString("first_payment_time","2018-01-01 01:23:45.678");
ThinkingAnalyticsAPI::UserSetOnce(userProperties);

//first_payment_time is still 2018-01-01 01:23:45.678
TDJSONObject userProperties1;
userProperties1.SetString("first_pay_time","2018-12-31 01:23:45.678");
ThinkingAnalyticsAPI::UserSetOnce(userProperties1);

# 3.3 UserAdd

もし数値型のプロパティで累積計算を行いたい場合は、UserAddを用いて設定できます。この呼び出しは値のない際に自動で0を付与した上で計算されます。"-"値で計算することも可能で、例:累積課金金額

//in this case, the total_revenue is 30
TDJSONObject userProperties;
userProperties.SetNumber("total_revenue",30;
ThinkingAnalyticsAPI::UserAdd(userProperties);
//in this case, the total_revenue is 678
TDJSONObject userProperties1;
userProperties1.SetNumber("total_revenue",648);
ThinkingAnalyticsAPI::UserAdd(userProperties1);

プロパティkeyは文字列で、Valueは数値型のみとなります

# 3.4 UserUnset

ユーザープロパティをリセットしたい場合は、UserUnsetを用いて設定できます。この呼び出しは文字列またはリスト型のパラメータをサポートしています。

ThinkingAnalyticsAPI::UserUnset("userUnset_key");

送信値はクリアされたプロパティのkey値となります

# 3.5 UserDelete

ユーザーを削除したい場合はUserDeleteを用いて設定できます。削除したら当ユーザーのユーザープロパティはクエリできなくなりますが、当ユーザーが生成したイベントデータはクエリできます。

ThinkingAnalyticsAPI::UserDelete();

# 3.6 UserAppend

UserAppend を用いてArray型のユーザープロパティを追加できます。

TDJSONObject userProperties;
vector<string> listValue;
listValue.push_back("apple");
listValue.push_back("ball");
userProperties.SetList("user_list",listValue);
ThinkingAnalyticsAPI::UserAppend(userProperties);

# その他機能

# 4.1 SDKログをプリント

SDKを実装する中で、IDEコントローラーでのログを確認できます。

ThinkingAnalyticsAPI::EnableLog(true);

# 4.2 プリセットプロパティ

プリパティ名 名称 タイプ 説明
#ip IP アドレス 文字列 ユーザのIPアドレス、TAはユーザの地理的位置情報
#country 文字列 ユーザーの国または地域は、IPアドレスに基づいて生成
#country_code 国コード 文字列 ユーザーの所在する国または地域の国別地域コード(ISO 3166-1 alpha-2、つまり2大文字英字)は、IPアドレスに基づいて生成
#province 文字列 ユーザーの州、IPアドレスに基づいて生成
#city 都市 文字列 ユーザーの都市は、IPアドレスに基づいて生成
#os OS 文字列 Android、iOSなど
#device_id デバイス ID 文字列 ユーザーのデバイスID、iOSはユーザーのIDFVやUUID、AndroidはAndroidIDを取得
#lib SDK タイプ 文字列 SDKのタイプ:Android,iOSなど
#lib_version SDK バージョン 文字列 SDKのバージョン