App Center Analytics (Windows)

App Center 分析可協助您瞭解使用者行為和客戶參與度,以改善您的應用程式。 SDK 會自動捕獲會話計數和裝置屬性,例如模型、作業系統版本等等。您可以定義自己的自訂事件來測量對您而言重要的事項。 您可以在 App Center 入口網站中取得所有已取得的資訊,以分析資料。

如果您還沒有在應用程式中設定 SDK,請根據您的平臺) ,遵循 WPF/WinForms 開始使用UWP/WinUI 開始使用 區段 (。

本頁面中的指示適用于 UWP (,包括 Xamarin 和 WinUI) 、WPF 和 WinForms。

會話和裝置資訊

當您將 App Center 分析新增至應用程式並啟動 SDK 之後,它會自動追蹤會話和裝置屬性,例如作業系統版本、型號等。

注意

在 WinUI apps 上,由於其生命週期的詳細程度,會話數量可能會低於 UWP 應用程式。

國碼 (地區碼)

SDK 不會自動報告國家/地區代碼。 如果您想要以手動方式報告,您可以依照下列平臺的指示進行。

UWP

  1. 請確定您已為應用程式 啟用位置功能
  2. 取得 Bing 地圖服務的驗證金鑰
  3. 在呼叫之前,請在任何地方使用下列程式碼 AppCenter.Start(... typeof(Analytics) ...); 。 若為 BingMapsToken ,請使用在步驟2中取得的金鑰。
private static async Task SetCountryCode()
{
    // The following country code is used only as a fallback for the main implementation.
    // This fallback country code doesn't reflect the physical device location, but rather the
    // country that corresponds to the culture it uses.
    var countryCode = new GeographicRegion().CodeTwoLetter;
    var accessStatus = await Geolocator.RequestAccessAsync();
    switch (accessStatus)
    {
        case GeolocationAccessStatus.Allowed:
            var geoLocator = new Geolocator
            {
                DesiredAccuracyInMeters = 100
            };
            var position = await geoLocator.GetGeopositionAsync();
            var myLocation = new BasicGeoposition
            {
                Longitude = position.Coordinate.Point.Position.Longitude,
                Latitude = position.Coordinate.Point.Position.Latitude
            };
            var pointToReverseGeocode = new Geopoint(myLocation);
            MapService.ServiceToken = Constants.BingMapsAuthKey;
            var result = await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);
            if (result.Status != MapLocationFinderStatus.Success || result.Locations == null || result.Locations.Count == 0)
            {
                break;
            }

            // The returned country code is in 3-letter format (ISO 3166-1 alpha-3).
            // Below we convert it to ISO 3166-1 alpha-2 (two letter).
            var country = result.Locations[0].Address.CountryCode;
            countryCode = new GeographicRegion(country).CodeTwoLetter;
            break;
        case GeolocationAccessStatus.Denied:
            AppCenterLog.Info(LogTag, "Geolocation access denied. To set country code in App Center, enable location service in Windows 10.");
            break;
        case GeolocationAccessStatus.Unspecified:
            break;
    }
    AppCenter.SetCountryCode(countryCode);
}

注意

針對要顯示在分析會話中的國家/地區代碼, AppCenter.SetCountryCode 必須在呼叫之前呼叫 AppCenter.Start

WPF/WinForms

由於 WPF/WinForms 平臺沒有地理位置 API,因此您可以使用系統國家/地區代碼。

using System.Globalization;

private static void SetCountryCode()
{
    // This fallback country code doesn't reflect the physical device location, but rather the
    // country that corresponds to the culture it uses.
    var countryCode = RegionInfo.CurrentRegion.TwoLetterISORegionName;
    AppCenter.SetCountryCode(countryCode);
}

注意

針對要顯示在分析會話中的國家/地區代碼, AppCenter.SetCountryCode 必須在呼叫之前呼叫 AppCenter.Start

自訂事件

您可以追蹤您自己的自訂事件, 最多 可有20個屬性,以瞭解使用者與應用程式之間的互動。

啟動 SDK 之後,請使用 TrackEvent() 方法來追蹤具有屬性的事件。 您 最多可以傳送200個不同的事件名稱。 此外,每個事件名稱最多256個字元,且每個事件屬性名稱和事件屬性值都有125個字元的上限。

Analytics.TrackEvent("Video clicked", new Dictionary<string, string> {
    { "Category", "Music" },
    { "FileName", "favorite.avi"}
});

事件的屬性完全是選擇性的-如果您只想要追蹤事件,請改用此範例:

Analytics.TrackEvent("Video clicked");

在執行時間啟用或停用 App Center 分析

您可以在執行時間啟用和停用 App Center 分析。 如果您停用它,SDK 將不會收集應用程式的任何分析資訊。

Analytics.SetEnabledAsync(false);

若要再次啟用 App Center 分析,請使用相同的 API,但以 true 參數形式傳遞。

Analytics.SetEnabledAsync(true);

您不需要等候此呼叫來進行其他 API 呼叫, (例如 IsEnabledAsync) 一致。

狀態會保存在應用程式啟動之間的裝置儲存區中。

檢查 App Center 分析是否已啟用

您也可以檢查 App Center 分析是否已啟用。

bool isEnabled = await Analytics.IsEnabledAsync();

本機儲存體大小

根據預設,SDK 會儲存所有事件記錄檔,最多 10 MB。 開發人員可以使用 API 來增加 儲存體大小 ,且 SDK 會持續儲存記錄,直到儲存體已滿為止。

沒有網際網路存取

如果沒有任何網路連線,SDK 會在本機儲存體中最多儲存10MB 的記錄。 一旦儲存體已滿,SDK 就會開始捨棄舊的記錄檔,以騰出空間給新的記錄。 一旦裝置取得網際網路的存取權之後,SDK 將會在50批次或每3秒之後傳送記錄。

批次處理事件記錄檔

App Center SDK 會以50批次上傳記錄,如果 SDK 沒有要傳送的50記錄,它仍會在3秒後傳送記錄。 最多可以平行傳送3個批次。

重試和反向的邏輯

App Center SDK 支援在可復原的網路錯誤時重試。 以下是重試邏輯:

  • 每個要求最多3次嘗試。
  • 每個要求都有自己的重試狀態電腦。
  • 所有傳輸通道都會停用 (直到下一個應用程式處理常式) 1 個要求耗盡所有重試為止。

反向邏輯

  • 50% 隨機載入,第1次重試介於5到10s 之間,第二次在2.5 到5分鐘之間重試,最後一個嘗試介於10到20分鐘之間。
  • 如果網路在 (或從 wi-fi 切換至行動) ,重試狀態會重設,並立即重試要求。