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

Java

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

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

Java SDKはJDK 8以降に対応しています

最新バージョン:v3.0.4-beta.1

更新日:2026-01-07

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

注意

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

SDKのAPIはスレッドセーフで、デフォルトでは同期呼び出しです。送信するデータ量が多い場合は、業務スレッドへの影響を避けるため、サブスレッドでAPIを呼び出すことができます。

1. SDKの統合​

1. Mavenを使用してSDKを統合する場合は、pom.xmlファイルに次の依存関係の情報を追加してください:

<dependencies>
// others...
<dependency>
<groupId>cn.thinkingdata</groupId>
<artifactId>thinkingdatasdk</artifactId>
<version>3.0.2</version>
</dependency>
</dependencies>

2. Logbusのインストール

SDK+LogBusの形式でサーバー側のデータの収集と送信を行うことをお勧めします。次のドキュメントを参考に、Logbusをインストールしてください:LogBus使用ガイド

2. 初期化​

方法1​

TDAnalytics te = new TDAnalytics(new TDLoggerConsumer("LOG_DIRECTORY"), false);

LOG_DIRECTORYは、データを書き込むフォルダーのパスです。

方法2​

SDKは設定を渡して初期化することに対応しており、設定によってSDKの機能を細かく制御できます。例えば、ログファイルにプレフィックスを付けることができます。

TDLoggerConsumer.Config config = new TDLoggerConsumer.Config("LOG_DIRECTORY");
config.setFilenamePrefix("unique_name");
TDAnalytics te = new TDAnalytics(new TDLoggerConsumer(config), false);

3. よく使う機能​

ゲストIDとアカウントIDを正しく紐付けるため、ゲーム内でゲストIDとアカウントIDの両方を使用する場合は、この2つのIDを同時に送信することを強くお勧めします。そうしないと、アカウントが一致せず、ユーザーが重複してカウントされる可能性があります。具体的なIDの紐付けルールについては、ユーザー識別ルールの章を参照してください。

3.1 イベントの送信​

trackを呼び出してイベントを送信できます。事前に整理したドキュメントに従って、イベントのプロパティと送信条件を設定することをお勧めします。イベントを送信するサンプルコードは次のとおりです:

//イベントプロパティを設定
HashMap<String,Object> properties = new HashMap<>();
// ユーザーのIPアドレスを設定。AEシステムはIPアドレスからユーザーの地理位置情報を解析します
properties.put("#ip", "192.168.1.1");//文字列
properties.put("channel","te");//文字列
properties.put("age",1);//数値
properties.put("isSuccess",true);//ブール値
properties.put("birthday",new Date());//時間

HashMap<String,Object> object = new HashMap<>();
object.put("key", "value");
properties.put("object",object);//オブジェクト

HashMap<String,Object> object1 = new HashMap<>();
object1.put("key", "value");

ArrayList<Object> arr = new ArrayList<>();
arr.add(object1);
properties.put("object_arr",arr);//オブジェクトグループ

ArrayList<String> arr1 = new ArrayList<>();
arr1.add("value");
properties.put("arr",arr1);//配列

try {
te.track("account_id","distinct_id","payment",properties);
} catch (Exception e) {
System.out.println("except:"+e);
}
  • イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
  • Keyはそのプロパティの名前で、文字列型です。英字で始まり、数字、英字、アンダースコア "_" を含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。AEはすべて小文字に変換します
  • Valueはプロパティの値で、文字列、数値、ブール値、時間、オブジェクト、オブジェクトグループ、配列に対応しています

ユーザープロパティの要件は、イベントプロパティと同じです

3.2 ユーザープロパティの設定​

一般的なユーザープロパティは、userSetを呼び出して設定できます。このインターフェースで送信したプロパティは、既存のプロパティ値を上書きします。そのユーザープロパティが以前に存在しない場合は新しく作成され、タイプは渡されたプロパティのタイプと同じになります。ここでは、ユーザー名の設定を例にします:

//この時点でuser_nameはTA
Map<String,Object> userProperties = new HashMap<String,Object>();
userProperties.put("user_name", "TA");
try {
te.userSet("account_id","distinct_id",userProperties);
} catch (Exception e) {
System.out.println("except:"+e);
}

//この時点でuser_nameはAE
Map<String,Object> newUserProperties = new HashMap<String,Object>();
newUserProperties.put("user_name", "AE");
try {
te.userSet("account_id","distinct_id",newUserProperties);
} catch (Exception e) {
System.out.println("except:"+e);
}

3.3 データの送信​

TDLogConsumerを使用する場合、収集されたイベントはまずjson文字列にエンコードされ、キャッシュに追加されます。キャッシュ内の文字列の長さが設定された長さを超えた時点で、データがディスクに書き込まれます。デフォルトの最大長は8192 byteです。

業務シナリオによっては、データをすぐにAEサーバーへ送信したい場合があります。その場合はflush()インターフェースを呼び出します。なお、flush()を頻繁に呼び出すと、サービスのパフォーマンスが低下します。

te.flush();

3.4 SDKの終了​

try{
te.close();
} catch (Exception e) {
System.out.println("except:"+e);
}

SDKを終了します。キャッシュ内のデータが失われないよう、サーバーをシャットダウンする前にこのインターフェースを呼び出してください

4. ベストプラクティス​

次のサンプルコードには、上記のすべての操作が含まれています。次の手順で使用することをお勧めします:

//SDKを初期化。LOG_DIRECTORYはローカルに書き込むフォルダーのパス
TDAnalytics te = new TDAnalytics(new TDLoggerConsumer("LOG_DIRECTORY"), false);

//イベントプロパティを設定
HashMap<String,Object> properties = new HashMap<>();
// ユーザーのIPアドレスを設定。AEシステムはIPアドレスからユーザーの地理位置情報を解析します
properties.put("#ip", "192.168.1.1");//文字列
properties.put("channel","te");//文字列
properties.put("age",1);//数値
properties.put("isSuccess",true);//ブール値
properties.put("birthday",new Date());//時間

HashMap<String,Object> object = new HashMap<>();
object.put("key", "value");
properties.put("object",object);//オブジェクト

HashMap<String,Object> object1 = new HashMap<>();
object1.put("key", "value");

ArrayList<Object> arr = new ArrayList<>();
arr.add(object1);
properties.put("object_arr",arr);//オブジェクトグループ

ArrayList<String> arr1 = new ArrayList<>();
arr1.add("value");
properties.put("arr",arr1);//配列

try {
te.track("account_id","distinct_id","payment",properties);
} catch (Exception e) {
System.out.println("except:"+e);
}

//ユーザープロパティを設定
Map<String,Object> userProperties = new HashMap<String,Object>();
userProperties.put("user_name", "TE");
try {
te.userSet("account_id","distinct_id",userProperties);
} catch (Exception e) {
System.out.println("except:"+e);
}
このページは役に立ちましたか?