App Center Analytics (Android)

重要

Visual Studio App Center は、2025 年 3 月 31 日に廃止される予定です。 完全に廃止されるまで Visual Studio App Center を引き続き使用できますが、移行を検討できる推奨される代替手段がいくつかあります。

サポートタイムラインと代替手段の詳細については、こちらを参照してください。

App Center Analytics は、ユーザーの行動と顧客エンゲージメントを理解し、アプリを改善するのに役立ちます。 SDK では、セッション数とデバイスのプロパティ (モデル、OS バージョンなど) が自動的にキャプチャされます。独自のカスタム イベントを定義して、自分にとって重要なものを測定できます。 キャプチャされたすべての情報は、データを分析するために App Center ポータルで使用できます。

アプリケーションで SDK をまだ設定していない場合は、「 SDK の概要 」セクションに従います。

セッションとデバイスの情報

App Center Analytics をアプリに追加して SDK を起動すると、追加のコードを記述することなく、OS のバージョン、モデルなどのセッションとデバイス プロパティが自動的に追跡されます。

国番号

デバイスにモバイル データ モデムと SIM カードがインストールされている場合、SDK によってユーザーの国番号が自動的に報告されます。 WiFi 専用デバイスでは、既定では国番号は報告されません。 これらのユーザーの国コードを設定するには、ユーザーの場所を自分で取得し、SDK で メソッドを setCountryCode: 使用する必要があります。

AppCenter.setCountryCode("en");
AppCenter.setCountryCode("en")

注意

Analytics セッションに国コードを表示するには、 AppCenter.setCountryCode を呼び出す前に を呼び出 AppCenter.startす必要があります。

カスタム イベント

最大 20 個のプロパティを使用して独自のカスタム イベントを追跡して、ユーザーとアプリの間の相互作用を理解できます。

SDK を開始したら、 メソッドを trackEvent() 使用して、プロパティを使用してイベントを追跡します。 最大 200 個の個別のイベント名を送信できます。 また、最大文字数の制限があります。

  • 1 つあたり event name256 文字。
  • & event property valueあたり event property name 125 文字。
Map<String, String> properties = new HashMap<>();
properties.put("Category", "Music");
properties.put("FileName", "favorite.avi");

Analytics.trackEvent("Video clicked", properties);
val properties = hashMapOf("Category" to "Music", "FileName" to "favorite.avi")
Analytics.trackEvent("Video clicked", properties)

イベントのプロパティは完全に省略可能です。イベントを追跡するだけの場合は、代わりに次のサンプルを使用します。

Analytics.trackEvent("Video clicked");
Analytics.trackEvent("Video clicked")

イベントの優先度と永続化

他のイベントよりも重要度の高いビジネス クリティカルなイベントを追跡できます。

  • 開発者は、イベントの優先度を Normal (Flags.NORMAL API の場合) または Critical (Flags.CRITICAL API の場合) として設定できます。
  • 優先度が Critical に設定されているイベントは、ストレージから最初に取得され、 通常 のイベントの前に送信されます。
  • ローカル ストレージがいっぱいで、新しいイベントを格納する必要がある場合は、優先順位が最も低い最も古いイベントが最初に削除されます。
  • ストレージに 重大な 優先度のログがいっぱいの場合、SDK ではその場合に空き容量を空けることができないので、 通常 の優先度のイベントの追跡は失敗します。
  • Crashs サービスも使用する場合、クラッシュ ログは重大として設定され、イベントと同じストレージを共有します。
  • 送信間隔は 通常 のイベントにのみ適用され、 クリティカル イベントは 3 秒後に送信されます。

次の API を使用して、 イベントを Critical として追跡できます。

Map<String, String> properties = new HashMap<>();
properties.put("Category", "Music");
properties.put("FileName", "favorite.avi");

Analytics.trackEvent("eventName", properties, Flags.CRITICAL);

// If you're using name only, you can pass null as properties.
val properties = hashMapOf("Category" to "Music", "FileName" to "favorite.avi")
Analytics.trackEvent("Video clicked", properties, Flags.CRITICAL)

// If you're using name only, you can pass null as properties.

ログの送信を一時停止して再開する

イベント転送の一時停止は、アプリがビジネス クリティカルなニーズに合わせてネットワーク帯域幅を制御する必要があるシナリオで役立ちます。 App Center バックエンドへのログの送信を一時停止できます。 一時停止しても、イベントは追跡および保存できますが、すぐには送信されません。 一時停止中にアプリが追跡するすべてのイベントは、 を呼び出 resumeした後にのみ送信されます。

Analytics.pause();
Analytics.resume();
Analytics.pause()
Analytics.resume()

実行時に App Center Analytics を有効または無効にする

実行時に App Center Analytics を有効または無効にすることができます。 これを無効にした場合、SDK はアプリの分析情報をこれ以上収集しません。

Analytics.setEnabled(false);
Analytics.setEnabled(false)

App Center Analytics を再度有効にするには、同じ API を使用しますが、パラメーターとして を渡します true

Analytics.setEnabled(true);
Analytics.setEnabled(true)

状態は、アプリケーションの起動間でデバイスのストレージに保持されます。

この API は非同期です。詳細については、 App Center の非同期 API ガイドを参照してください。

注意

このメソッドは、開始後 Analytics にのみ使用する必要があります。

App Center Analytics が有効になっているかどうかを確認する

App Center Analytics が有効になっているかどうかをチェックすることもできます。

Analytics.isEnabled();
Analytics.isEnabled()

この API は非同期です。詳細については、 App Center の非同期 API ガイドを参照してください。

注意

このメソッドは、開始後 Analytics にのみ使用する必要があります。常に開始前にが返 false されます。

セッションの開始を管理する

既定では、セッション ID はアプリケーションのライフサイクルによって異なります。 新しいセッションの開始を手動で制御する場合は、次の手順に従います。

注意

Analytics.StartSession() API の呼び出しごとに新しいセッションが生成されることに注意してください。 手動セッション トラッカー モードでは、この API が呼び出されない場合、すべての送信ログに null セッション値が設定されます。

注意

新しいアプリケーションの起動後にセッション ID が再生成されることに注意してください。

  • SDK が開始する前に、次のメソッドを呼び出します。
Analytics.enableManualSessionTracker();
Analytics.enableManualSessionTracker()
  • 次に、 の後に startSession API を AppCenter.start使用できます。
Analytics.startSession();
Analytics.startSession()

ローカル ストレージ サイズ

既定では、SDK は最大 10 MB までのすべてのイベント ログを格納します。 開発者は API を使用してストレージ サイズを増やすことができます。SDK は 、ストレージ がいっぱいになるまでログを格納し続けます。

インターネット にアクセスできない

ネットワーク接続がない場合、SDK は最大 10 MB のログをローカル ストレージに保存します。 ストレージがいっぱいになると、SDK は古いログの破棄を開始して、新しいログのスペースを作ります。 ネットワーク接続が戻ると、SDK は 50 のバッチで、または 6 秒ごとに (既定で) ログを送信します。

注意

25 日より前のログは、バックエンドでは受け入れられません。

イベント ログのバッチ処理

App Center SDK は 50 のバッチでログをアップロードします。SDK に送信するログが 50 個ない場合でも、6 秒後 (既定) にログが送信されます。 並列で送信されるバッチは最大 3 つまでです。 送信間隔は次のように変更できます。

// Change transmission interval to 10 seconds.
Analytics.setTransmissionInterval(10000);
// Change transmission interval to 10 seconds.
Analytics.setTransmissionInterval(10000)

伝送間隔の値は 6 秒から 86400 秒 (1 日) の間である必要があり、このメソッドはサービスが開始される前に呼び出す必要があります。

再試行とバックオフのロジック

App Center SDK では、回復可能なネットワーク エラーに対するバックオフ再試行がサポートされています。 再試行ロジックを次に示します。

  • 要求ごとに最大 3 回試行します。
  • 各要求には、独自の再試行状態マシンがあります。
  • 1 つの要求ですべての再試行が終了すると、すべての送信チャネルが無効になります (次のアプリ プロセスまで)。

バックオフ ロジック

  • 50% ランダム化、最初に 5 秒から 10 秒の間で再試行し、次に 2.5 ~ 5 分、最後に 10 分から 20 分の間で試します。
  • ネットワークがオフからオン (または Wi-Fi からモバイル) に切り替わる場合、再試行状態はリセットされ、要求はすぐに再試行されます。