# クライアント SDK よくある質問
# クライアント SDK の報告ポリシーは何ですか?
ネイティブクライアント SDK(Unity、Unreal、Flutter などを含む)のデータは、最初にローカルデータベースにキャッシュされ、次の場合にトリガーされます
- App バックステージに戻る
- 1 分に 1 回報告する(TA バックグラウンドで設定可能)
- キャッシュされたデータが 100 件を超えると報告がトリガーされます(TA バックグラウンドで設定できます)
- flush インターフェイスをアクティブに呼び出す
アプレット、ミニゲーム SDK、JavaScript SDK はリアルタイムで報告され、ローカルキャッシュはありません。
# デバイス ID の値取りロジックは何ですか?
ネイティブクライアント SDK(Unity、Unreal、Flutter などを含む)のデバイス ID 取得ロジックは次のとおりです
- Android:qǔAndroidID
Android 8.0 以下のシステムでは、Android ID はデバイス固有の ID です。再スワイプまたは工場出荷時の設定を復元すると変更されます。すべてのアプリケーションを共有します。Android 8.0 以降のシステムでは、アプリケーション署名キー、ユーザー、およびデバイスの各組み合わせに固有の ANDROID_ID 値があります。そのため、同じデバイスで実行されているが、異なる署名キーを持つアプリでは、同じ Android ID が表示されなくなります(同じユーザーでも)。一つの特殊な状況:ユーザーが APP デバイスをインストールして 8.0 以下で、アンインストールして、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 インターフェイスを呼び出して
クライアントログを開くことができます。を使用してThinkingAnalytics
Android SDK のログをフィルタリングできます。
ThinkingAnalyticsSDK.enableTrackLog(true);
iOS では、setLogLevel インターフェイスを呼び出し呼び出し
ログ印刷を開き、THINKING でTHINKING
iOS SDK のログをフィルタリングできます。
[ThinkingAnalyticsSDK setLogLevel:TDLoggingLevelDebug]
ログを開いた後、テクニカルサポートエンジニアにログを送信して問題の特定を支援できます。
報告されたアドレスが正しいかどうかわからない場合は、チェックインターフェイスをチェックして報告されたアドレスの到達可能性を検出できます。https://YOUR_RECEIVER_URL/health-check にアクセスし、ページが OK を返すと、受信側のアドレスが正しく設定されます。
そのほか、埋め込みポイント管理モジュールの機能によって、データ報告中の問題にも便利に位置付けることができる。
# Unity SDK でデータを報告する際の注意点は何ですか?
- SDK の初期化は Awake()で行われるため、呼び出しは Awake でトリガーでき
- デフォルトでは、すべてのインターフェイスはメインスレッドでのみ呼び出すことができます。
- 私たちは、Android システムのコンポーネントライフサイクルを通じて、アプリがフロントに入るか、バックステージに戻るかを判断します。ただし、Unity ではプログラムの最初から SDK を初期化する保証はないため、バックグラウンドに戻ったときに最初の起動イベントを判断できる可能性があります。現在、私たちは最初にバックグラウンドに戻ったときに ta_app_start を補充します(報告は少し遅れていますが、イベント時間#event_time は正しいので、後続の分析には影響しません)
# クラッシュイベントには何が含まれますか?クラッシュイベントの収集方法
クライアント SDK は、部分的なクラッシュログの取得をサポートします。SDK を初期化した後、APPCrash の自動取得を有効にする必要があります。クラッシュイベントに対応するイベント名: ta_app_crash
クラッシュイベントの収集をトリガーする状況:
- Android プラットフォーム:仮想マシンでキャプチャされていない例外
- iOS プラットフォーム:
- Unix シグナル例外には、SIGABRT, SIGILL, SIGSEGV, SIGFPE, SIGBUS
- NSException 例外
# Android 自動収集イベントのトラブルシューティング?
自動収集イベントのほとんどは、enableAutoTrack インターフェイスを呼び出すだけです。コントロールのクリックイベントやフラグメントブラウジングイベントを収集する必要がある場合は、TA が提供する自動収集プラグインを適用する必要があります。Android SDK 自動収集ガイドAndroid SDK 自動収集ガイド章を参照してください。
自動収集プラグインを使用し、コンパイルエラーが発生した場合、一部のパッケージとの競合が原因である可能性があります。ほとんどの場合、ログのヒントのエラーのパッケージ名を見つけ、gradle 構成に次の内容を追加するだけで解決でき com.alipay ます。
thinkingAnalytics {
exclude 'com.alipay'
}
プロジェクトが MultiDex を使用している場合、ClassNotFoundException のエラーが発生する可能性があります。この場合、エラーが報告されたクラスをプライマリ dex にパッケージ化し、SDK のコードをプライマリ dex にパッケージ化して、multiDexKeepProguard に次の構成を追加する必要があります
-keep class cn.thinkingdata.android.** { *; }