目录
此内容是否有帮助?

# C# - Advanced

# ユーザーID設定

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

# 1.1 ゲストID設定

::: Tips

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

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

:::

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

te.SetIdentity("Thinker");

# 1.2 アカウントIDを設置

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

te.Login("TE");

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

# 1.3 アカウントID設定

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

te.Logout();

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

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

# イベント送信

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

# 2.1 通常イベント

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

例:アイテム購入

Dictionary<string, Object> dic = new Dictionary<string, object>();
dic.Add("product_name", "アイテム名");
te.Track( "product_buy",dic);

# 2.2 初回イベント

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

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

Dictionary<string, Object> dic = new Dictionary<string, object>();
dic.Add("key", "value");
ta.TrackFirst("device_activation", dic);

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

Dictionary<string, Object> dic = new Dictionary<string, object>();
dic.Add("key", "value");
te.TrackFirst("account_activation", "TE", dic);

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

# 2.3 更新可能イベント

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

//The event property status is 3 after reporting, with the price being 100
Dictionary<string, Object> dic = new Dictionary<string, object>();
dic.Add("price", 100);
dic.Add("status",3);
te.TrackUpdate("UPDATABLE_EVENT", "updateEventId", dic);

//The event property status is 5 after reporting, with the price remaining the same
Dictionary<string, Object> dic1 = new Dictionary<string, object>();
dic1.Add("status",5);
te.TrackUpdate("UPDATABLE_EVENT", "updateEventId", dic1);

# 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
Dictionary<string, Object> dic = new Dictionary<string, object>();
dic.Add("price", 100);
dic.Add("status",3);
te.TrackOverwrite("OVERWRITABLE_EVENT", "eventId", dic);

//The event property status is 5 after reporting, with the price deleted
Dictionary<string, Object> dic1 = new Dictionary<string, object>();
dic1.Add("status",5);
te.TrackOverwrite("OVERWRITABLE_EVENT", "eventId", dic1);

# ユーザープロパティ

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

# 3.1 UserSet

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

//the username now is TA
te.UserSet(new Dictionary<string, object>(){{"user_name", "TA"}});
//the userName now is TE
te.UserSet(new Dictionary<string, object>(){{"user_name", "TE"}});

# 3.2 UserSetOnce

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

//first_payment_time is 2018-01-01 01:23:45.678
te.UserSetOnce(new Dictionary<string, object>(){{"first_pay_time","2018-01-01 01:23:45.67"}});
//first_payment_time is still 2018-01-01 01:23:45.678
te.UserSetOnce(new Dictionary<string, object>(){{"first_pay_time","2018-12-31 01:23:45.678"}});

# 3.3 UserAdd

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

//in this case, the total_revenue is 30
te.UserAdd(new Dictionary<string, object>(){{"total_revenue",30}});
//in this case, the total_revenue is 678
te.UserAdd(new Dictionary<string, object>(){{"total_revenue",648}})

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

# 3.4 UserUnset

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

List<string> list2 = new List<string>();
list2.Add("nickname");
list2.Add("age");
te.UserUnSet(list2);

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

# 3.5 UserDelete

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

te.UserDelete();

# 3.6 UserAppend

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

Dictionary<string, object> dictionary = new Dictionary<string, object>();
List<string> list6 = new List<string>();
list6.Add("true");
list6.Add("test");
dictionary.Add("arrkey4", list6);
te.UserAppend( dictionary);

# その他機能

# 4.1 SDKログをプリント

ThinkingdataAnalytics.setLoggingType(TALogging.TALoggingLog);

# 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
のバージョン