クライアントSDKのよくある質問
クライアントSDKの送信ポリシーは?
ネイティブのクライアントSDK(Unity、Unreal、Flutterなどを含む)のデータは、まずローカルデータベースにキャッシュされ、以下の場合にデータ送信がトリガーされます:
- Appがバックグラウンドに移行したとき
- 30秒ごとに送信(AE管理画面で設定可能)
- キャッシュされたデータが30件を超えると送信(AE管理画面で設定可能)
- flushインターフェースを明示的に呼び出したとき
ミニアプリ・ミニゲームSDKおよびJavaScript SDKは、デフォルトでリアルタイムに送信します。batchモードを有効にすると、まずローカルにキャッシュしてから送信します。
デバイスIDの取得ロジックは?
ネイティブのクライアントSDK(Unity、Unreal、Flutterなどを含む)のデバイスIDの取得ロジックは以下のとおりです:
- Android:Android IDを取得
Android 8.0未満のシステムでは、Android IDはデバイスの一意の識別子です。端末の再フラッシュまたは初期化を行った場合にのみ変わり、すべてのアプリで共有されます。Android 8.0以降のシステムでは、アプリの署名鍵、ユーザー、デバイスの組み合わせごとに一意のANDROID_ID値が割り当てられます。そのため、同じデバイスで動作していても署名鍵が異なるアプリでは、同じAndroid IDは取得できなくなります(同じユーザーであっても同様です)。特殊なケースとして、ユーザーがAndroid 8.0未満のデバイスにAPPをインストールし、その後アンインストールして、8.0以降にアップデートしてからアプリを再インストールした場合、Android IDは以前と異なります。再インストールしていなければ、Android IDは変わりません。
- iOS:まずIDFVを取得し、取得できない場合はランダムなUUIDを使用します。初回に取得したデバイスIDの値はキーチェーンに保存され、その後IDFVが変化しても変わりません。
ミニアプリ、ミニゲーム、JavaScriptのインターフェースでは同様のデバイス番号を取得できないため、ランダムに生成したIDをデバイスIDとして使用します。ユーザーがキャッシュを削除すると、このデバイスIDは変わります。
クライアントSDKが対応している最低システムバージョンは?
クライアントSDKが対応している最低バージョンは、Android 4.0とiOS 8.0です
送信の問題を調査するには?
一般的な問題は、クライアントのログからすぐに特定できます。クライアントのログを有効にする方法は、各接続ガイドで説明しています。
Androidでは、enableTrackLogインターフェースを呼び出してクライアントのログを有効にできます。ThinkingDataでAndroid SDKのログを絞り込めます。
TDAnalytics.enableTrackLog(true);
iOSでは、setLogLevelインターフェースを呼び出してログ出力を有効にし、THINKINGでiOS SDKのログを絞り込めます。
[TDAnalytics setLogLevel:TDLoggingLevelDebug]
ログを有効にした後、ログを弊社のテクニカルサポートエンジニアに送っていただければ、問題の特定をお手伝いします。
データ受信URLが正しいかどうかわからない場合は、ヘルスチェックインターフェースでデータ受信URLへの到達性を確認できます。https://YOUR_RECEIVER_URL/health-checkにアクセスし、ページにokが返されれば、受信側のURLは正しく設定されています。
このほか、データ収集プランモジュールの機能を使って、データ送信過程の問題を簡単に特定することもできます。
Unity SDKでデータを送信する際の注意事項は?
- SDKの初期化はAwake()内で行われるため、Awake内で呼び出しをトリガーすることはできません
- デフォルトでは、すべてのインターフェースはメインスレッドでのみ呼び出せます。
- APPがフォアグラウンドに移行したか、バックグラウンドに移行したかは、Androidシステムのコンポーネントのライフサイクルで判断しています。しかし、Unityではプログラムのごく最初の段階でSDKを初期化できる保証がないため、バックグラウンドに移行した時点で初めて初回起動イベントを判定できる場合があります。現在は、最初にバックグラウンドに移行したときにta_app_startを補完して送信します(送信はやや遅れますが、イベント時間#event_timeは正しいため、後続の分析には影響しません)
クラッシュイベントには何が含まれますか?クラッシュイベントの収集方法
クライアントSDKは、一部のクラッシュログの収集に対応しています。SDKを初期化した後、APP Crashの自動収集を有効にする必要があります。クラッシュイベントのイベント名はta_app_crashです。
クラッシュイベントの収集がトリガーされるケース:
-
Androidプラットフォーム:仮想マシンでキャッチされない例外が発生した場合
-
iOSプラットフォーム:
- Unixシグナル例外(SIGABRT, SIGILL, SIGSEGV, SIGFPE, SIGBUS)
- NSException例外
-
UnityエンジンでのC#例外の収集

