メインコンテンツまでスキップ

C#

最終更新 2026/10/03
ヒント

接続する前に、まず接続前の準備をお読みください。

最新バージョン:v2.0.3

更新日:2025-09-03

リソースのダウンロード:ソースコード

注意

このドキュメントはv2.0.0以降のバージョンに適用されます。以前のバージョンについては、C# SDK接続ガイド(V1)を参照してください

1. SDKの統合​

方法1:NuGetによる統合​

  1. NuGetでThinkingDataAnalyticsライブラリを検索し、プロジェクトにインストールします
  2. ThinkingDataAnalyticsライブラリをインストールすると、Newtonsoft.Jsonライブラリも自動的にインストールされます

方法2:dllファイルによる統合​

  1. SDKのソースコードをダウンロードします
  2. ソースコード内のソリューションを開き、SDKのdllファイルを手動でコンパイルします
  3. ThinkingDataAnalytics SDKのdllファイルをプロジェクトに取り込みます
  4. 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();
このページは役に立ちましたか?