C#
接続する前に、まず接続前の準備をお読みください。
最新バージョン:v2.0.3
更新日:2025-09-03
リソースのダウンロード:ソースコード
このドキュメントはv2.0.0以降のバージョンに適用されます。以前のバージョンについては、C# SDK接続ガイド(V1)を参照してください
1. SDKの統合
方法1:NuGetによる統合
- NuGetでThinkingDataAnalyticsライブラリを検索し、プロジェクトにインストールします
- ThinkingDataAnalyticsライブラリをインストールすると、Newtonsoft.Jsonライブラリも自動的にインストールされます
方法2:dllファイルによる統合
- SDKのソースコードをダウンロードします
- ソースコード内のソリューションを開き、SDKのdllファイルを手動でコンパイルします
- ThinkingDataAnalytics SDKのdllファイルをプロジェクトに取り込みます
- SDKはjsonの解析にNewtonsoft.Jsonフレームワークを使用しているため、Newtonsoft.Jsonライブラリを手動でプロジェクトに追加してください。
Logbusのインストール
SDK+LogBusの形式でサーバー側のデータの収集と送信を行うことをお勧めします。次のドキュメントを参考に、Logbusをインストールしてください:LogBus使用ガイド
2. 初期化
SDKの初期化のサンプルコードは次のとおりです:
using ThinkingData.Analytics
TDAnalytics te = new TDAnalytics(new TDLoggerConsumer("LOG_DIRECTORY"));
LOG_DIRECTORYは、ローカルに書き込むフォルダーのパスです。LogBusの監視フォルダーのパスをここで指定したパスに設定するだけで、LogBusでデータを監視して送信できます。
3. よく使う機能
ゲストIDとアカウントIDを正しく紐付けるため、ゲーム内でゲストIDとアカウントIDの両方を使用する場合は、この2つのIDを同時に送信することを強くお勧めします。そうしないと、アカウントが一致せず、ユーザーが重複してカウントされる可能性があります。具体的なIDの紐付けルールについては、ユーザー識別ルールの章を参照してください。
3.1 イベントの送信
trackを呼び出してイベントを送信できます。事前に整理したドキュメントに従って、イベントのプロパティと送信条件を設定することをお勧めします。イベントを送信するサンプルコードは次のとおりです:
Dictionary<string, object> properties = new Dictionary<string, object>();
// ユーザーのipアドレスを設定。AEシステムはIPアドレスに基づいてユーザーの位置情報を解析します
properties.Add("#ip", "123.123.123.123");
//イベントプロパティを設定
properties.Add("channel", "TE");//文字列
properties.Add("age", 1);//数値
properties.Add("is_success", true);//ブール値
List<string> list = new List<string>();
list.Add("value");
properties.Add("array", list);//配列
//オブジェクト
Dictionary<string, Object> objectTest = new Dictionary<string, object>();
objectTest.Add("key", "value");
properties.Add("object", objectTest);
//オブジェクトグループ
List<Object> object_arr = new List<Object>();
object_arr.Add(objectTest);
properties.Add("object_arr", object_arr);
//カスタムプロパティ付きのイベントを送信。accountIdとdistinctIdの少なくとも一方を空以外にする必要があります
te.Track("accountId", "distinctId", "Payment", properties);
- イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
- Keyはそのプロパティの名前で、文字列型です。英字で始まり、数字、英字、アンダースコア "_" を含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。AEはすべて小文字に変換します
- Valueはプロパティの値で、文字列、数値、ブール値、時間、オブジェクト、オブジェクトグループ、配列に対応しています
ユーザープロパティの要件は、イベントプロパティと同じです
3.2 ユーザープロパティの設定
一般的なユーザープロパティは、UserSetを呼び出して設定できます。このインターフェースで送信したプロパティは、既存のプロパティ値を上書きします。そのユーザープロパティが以前に存在しない場合は新しく作成され、タイプは渡されたプロパティのタイプと同じになります。ここでは、ユーザー名の設定を例にします:
//この時点でusernameはTA
Dictionary<string, object> properties= new Dictionary<string, object>();
properties.Add("user_name","TA");
te.UserSet("accountId","distinctId", properties);
//この時点でuserNameはAE
Dictionary<string, object> newProperties= new Dictionary<string, object>();
newProperties.Add("user_name","TE");
//ユーザープロパティを設定。accountIdとdistinctIdの少なくとも一方を設定する必要があります
te.UserSet("accountId","distinctId", newProperties);
3.3 データの送信
TDLoggerConsumerを使用する場合、収集したイベントはまずjson文字列にエンコードされ、キャッシュ文字列に追加されます。キャッシュ文字列の長さが設定した長さを超えた時点で、データがディスクに書き込まれます。デフォルトの最大長は8192です。
業務シナリオによっては、データをすぐにAEサーバーへ送信したい場合があります。その場合はflush()インターフェースを呼び出します。なお、flush()を頻繁に呼び出すと、サービスのパフォーマンスが低下します。
te.Flush();
3.4 SDKの終了
te.Close();
SDKを終了します。キャッシュ内のデータが失われないよう、サーバーをシャットダウンする前にこのインターフェースを呼び出してください
4. ベストプラクティス
次のサンプルコードには、上記のすべての操作が含まれています。次の手順で使用することをお勧めします:
using ThinkingData.Analytics;
//SDKを初期化
TDAnalytics te = new TDAnalytics(new TDLoggerConsumer("LOG_DIRECTORY"));
Dictionary<string, object> properties = new Dictionary<string, object>();
// ユーザーのipアドレスを設定。AEシステムはIPアドレスに基づいてユーザーの位置情報を解析します
properties.Add("#ip", "123.123.123.123");
//イベントプロパティを設定
properties.Add("channel", "TE");//文字列
properties.Add("age", 1);//数値
properties.Add("is_success", true);//ブール値
List<string> list = new List<string>();
list.Add("value");
properties.Add("array", list);//配列
Dictionary<string, Object> objectTest = new Dictionary<string, object>();
objectTest.Add("key", "value");
properties.Add("object", objectTest);
//オブジェクトグループ
List<Object> object_arr = new List<Object>();
object_arr.Add(objectTest);
properties.Add("object_arr", object_arr);
//カスタムプロパティ付きのイベントを送信。accountIdとdistinctIdの少なくとも一方を空以外にする必要があります
te.Track("accountId", "distinctId", "Payment", properties);
//この時点でusernameはTA
Dictionary<string, object> userProperties = new Dictionary<string, object>();
userProperties.Add("user_name", "TA");
te.UserSet("accountId", "distinctId", userProperties);
//flushインターフェースを呼び出すと、データはすぐにファイルに書き込まれます。本番環境では、flushを頻繁に呼び出してIOやネットワークのオーバーヘッドが発生しないよう注意してください
te.Flush();

