# C# - Advanced
# ユーザーID設定
SDKインスタンスはランダムのUUIDでユーザーのゲストIDとして付与します。ゲストIDはユーザーがログインする前のユーザー識別IDとして使われます。ただし、事前に注意すべきのは、アカウントIDはユーザー再インストールすると変更されます。
# 1.1 ゲストID設定
TIP
一般的には、ゲストIDを手動設定することは不要で、ユーザー識別ルールを確認した上で、ゲストID設定を行なってください。
もしゲストIDを変更したい場合は、SDKを初期設定したあとですぐ呼び出すように設定してください。
独自でゲストIDの管理体制がある場合は、SetIdentity
を呼び出して、ゲストIDを設定してください
TDAnalytics.SetIdentity("Thinker");
# 1.2 アカウントIDを設置
ユーザーがログインする時に、login
を呼び出して、ユーザーのアカウントIDを設定できます。TEプラットフォームはアカウントIDを身分識別IDとしてlogout
を呼び出しする前までに保留します。login
を数回呼び出すと、前のアカウントIDが上書きされます。
TDAnalytics.Login("TE");
その方法ではログインイベントは送信されません。
# 1.3 アカウントID設定
ユーザーログイン時に、Login
を呼び出してアカウントIDを設定できます。TEはアカウントIDをユーザー身分の識別IDとして使われています。一度設定されたアカウントIDはLogout
を呼び出す前に保存されます。Login
を多数呼び出した場合は、その前のアカウントIDを上書きされます。
TDAnalytics.Logout();
ユーザーがアカウントを削除する際にLogoutを呼び出すよう設定してください。
ログアウトイベントとして送信されません。
# イベント送信
SDKが初期化設定完了後、データプランに応じて、トラッキングコードを実装し、ユーザーの行動データを収集することができます。一般的には、通常イベント送信は十分収集可能で、実際業務シーンによって、初回・更新可能などの特殊イベント収集することも可能です。
# 2.1 通常イベント
track
を呼び出して、データプランに応じてイベントのプロパティを設定の上、データ送信できます。
例:アイテム購入
Dictionary<string, Object> dic = new Dictionary<string, object>();
dic.Add("product_name", "アイテム名");
TDAnalytics.Track( "product_buy",dic);
# 2.2 初回イベント
初回イベントはあるデバイスもしくはその他分析主体のIDごとで、1回目のみ記録されるイベントとなります。
例えば:あるデバイスのアクティブイベントはそれを使って便利です
Dictionary<string, Object> dic = new Dictionary<string, object>();
dic.Add("key", "value");
TDAnalytics.TrackFirst("device_activation", dic);
もしデバイス以外で初回判断したい場合は、first_check_idで初回イベントを定義してください。
Dictionary<string, Object> dic = new Dictionary<string, object>();
dic.Add("key", "value");
TDAnalytics.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);
TDAnalytics.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);
TDAnalytics.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);
TDAnalytics.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);
TDAnalytics.TrackOverwrite("OVERWRITABLE_EVENT", "eventId", dic1);
# ユーザープロパティ
TEでユーザープロパティを設定するAPIは: UserSet
、UserSetOnce
、UserAdd
、UserUnset
、UserDelete
、UserAppend
。
# 3.1 UserSet
一般的にユーザープロパティ設定はUserSet
を用いて設定できます。この呼び出しを利用して元のプロパティ値を書き替えされます。元のプロパティ値がない場合は、新規作成になります。データタイプは格納されたデータタイプと一致します。以下は例:
//the username now is TA
TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TA"}});
//the userName now is TE
TDAnalytics.UserSet(new Dictionary<string, object>(){{"user_name", "TE"}});
# 3.2 UserSetOnce
もしユーザープロパティは一回設定の上で変更がない場合は、UserSetOnce
を用いて設定できます。この呼び出しは値のある際に書き替えを行いません。
//first_payment_time is 2018-01-01 01:23:45.678
TDAnalytics.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
TDAnalytics.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
TDAnalytics.UserAdd(new Dictionary<string, object>(){{"total_revenue",30}});
//in this case, the total_revenue is 678
TDAnalytics.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");
TDAnalytics.UserUnSet(list2);
送信値はクリアされたプロパティのkey値となります
# 3.5 UserDelete
ユーザーを削除したい場合はUserDelete
を用いて設定できます。削除したら当ユーザーのユーザープロパティはクエリできなくなりますが、当ユーザーが生成したイベントデータはクエリできます。
TDAnalytics.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);
TDAnalytics.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のバージョン |
# 4.3 SDKの時間校正
デフォルトでローカルの時間がイベント発生時刻として使用されます。ユーザーがデバイスの時間を手動で変更すると、ビジネス分析に影響を与える可能性があります。この場合は、タイムスタンプ時間校正方法を使用してイベント発生時刻の正確性を保証することができます。
- サーバーから取得した現在のタイムスタンプを使用してSDKの時間を調整できます。その後、イベントデータやユーザー属性設定など、指定されていないすべての呼び出しは、調整後の時間が発生時刻として使用されます。
// 1585633785954 is the current Unix timestamp, measured in milliseconds, corresponding to tokyo time 2020-03-31 14:49:45.
TDAnalytics.CalibrateTime(1585633785954);