重要
Visual Studio App Center は、2026 年 6 月 30 日まで引き続きサポートされる分析機能と診断機能を除き、2025 年 3 月 31 日に廃止されました。 詳細を参照してください。
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 個の個別のイベント名を送信できます。 また、文字の上限もあります。
-
event name
あたり 256 文字。 -
event property name
およびevent property value
あたり 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")
イベントの優先度と永続化
他のイベントよりも重要度が高いビジネス クリティカルなイベントを追跡できます。
- 開発者は、イベントの優先順位を 標準 (API で
Flags.NORMAL
) または Critical (API のFlags.CRITICAL
) として設定できます。 - 優先度が Critical に設定されているイベントは、ストレージから最初に取得され、 通常 のイベントの前に送信されます。
- ローカル ストレージがいっぱいで、新しいイベントを格納する必要がある場合は、優先順位が最も低い最も古いイベントが最初に削除されます。
- ストレージが 重大な 優先度のログでいっぱいの場合、SDK ではその場合に空き容量が得られないので、 通常 の優先度でイベントを追跡することは失敗します。
- クラッシュ サービスも使用する場合、クラッシュ ログは重大として設定され、イベントと同じストレージを共有します。
- 送信間隔は 標準 イベントにのみ適用され、 重大 イベントは 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
の後にAppCenter.start
API を使用できます。
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 からモバイル) に切り替わると、再試行状態がリセットされ、要求が直ちに再試行されます。