App Center Analytics (Windows)

Önemli

Visual Studio App Center 31 Mart 2025'te kullanımdan kaldırılıyor. Tamamen kullanımdan kaldırılana kadar Visual Studio App Center'ı kullanmaya devam edebilirsiniz ancak geçiş yapmayı düşünebileceğiniz birkaç önerilen alternatif vardır.

Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.

App Center Analytics, uygulamanızı geliştirmek için kullanıcı davranışını ve müşteri katılımını anlamanıza yardımcı olur. SDK, oturum sayısını ve model, işletim sistemi sürümü gibi cihaz özelliklerini otomatik olarak yakalar. Sizin için önemli olan şeyleri ölçmek için kendi özel olaylarınızı tanımlayabilirsiniz. Yakalanan tüm bilgileri App Center portalında kullanarak verileri analiz edebilirsiniz.

Uygulamanızda SDK'yı henüz ayarlamadıysanız WPF/WinForms Kullanmaya Başlama veya UWP/WinUI Kullanmaya Başlama bölümünü (platformunuza göre) izleyin.

Bu sayfadaki yönergeler UWP (Xamarin.Forms ve WinUI dahil), WPF ve WinForms için çalışır.

Oturum ve cihaz bilgileri

Uygulamanıza App Center Analytics'i ekleyip SDK'yı başlattıktan sonra, oturumları ve işletim sistemi sürümü, model vb. cihaz özelliklerini otomatik olarak izler.

Not

WinUI uygulamalarında, yaşam döngüsünün özellikleri nedeniyle oturum miktarı UWP uygulamalarından daha düşük olabilir.

Ülke Kodu

Ülke kodu SDK tarafından otomatik olarak bildirilir. El ile bildirmek isterseniz aşağıdaki platformunuzun yönergelerini izleyebilirsiniz.

UWP

  1. Uygulamanız için Konum Özelliğini etkinleştirdiğinizden emin olun.
  2. Bing Haritalar Kimlik Doğrulama Anahtarı alın.
  3. çağrısı AppCenter.Start(... typeof(Analytics) ...);yapmadan önce aşağıdaki kodu herhangi bir yerde kullanın. olarak BingMapsToken, 2. adımda elde edilen anahtarı kullanın.
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);
}

Not

Ülke kodunun Analytics oturumlarında görüntülenmesi için çağrıdan AppCenter.SetCountryCodeAppCenter.Startönce çağrılması gerekir.

WPF/WinForms

WPF/WinForms platformlarında Coğrafi Konum API'si olmadığından sistem ülke kodu kullanabilirsiniz.

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);
}

Not

Ülke kodunun Analytics oturumlarında görüntülenmesi için çağrıdan AppCenter.SetCountryCodeAppCenter.Startönce çağrılması gerekir.

Özel olaylar

Kullanıcılarınızla uygulama arasındaki etkileşimi anlamak için en fazla 20 özelliğe sahip kendi özel olaylarınızı izleyebilirsiniz.

SDK'yı başlattıktan sonra, olaylarınızı özelliklerle izlemek için yöntemini kullanın TrackEvent() . En fazla 200 farklı olay adı gönderebilirsiniz. Ayrıca, olay adı başına en fazla 256 karakter, olay özellik adı ve olay özelliği değeri başına 125 karakter sınırı vardır.

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

Olayların özellikleri tamamen isteğe bağlıdır; yalnızca bir olayı izlemek istiyorsanız, bunun yerine şu örneği kullanın:

Analytics.TrackEvent("Video clicked");

Çalışma zamanında App Center Analytics'i etkinleştirme veya devre dışı bırakma

App Center Analytics'i çalışma zamanında etkinleştirebilir ve devre dışı bırakabilirsiniz. Devre dışı bırakırsanız SDK, uygulama için daha fazla analiz bilgisi toplamaz.

Analytics.SetEnabledAsync(false);

App Center Analytics'i yeniden etkinleştirmek için aynı API'yi kullanın ancak parametre olarak geçirin true .

Analytics.SetEnabledAsync(true);

Diğer API çağrılarını (örneğin IsEnabledAsync) tutarlı hale getirmek için bu çağrıyı beklemeniz gerekmez.

Durum, uygulama başlatmaları arasında cihazın depolama alanında kalıcı hale geldi.

App Center Analytics'in etkinleştirilip etkinleştirilmediğini denetleyin

App Center Analytics'in etkinleştirilip etkinleştirilmediğini de de kontrol edebilirsiniz.

bool isEnabled = await Analytics.IsEnabledAsync();

Başlangıç oturumlarını yönetme

Varsayılan olarak, oturum kimliği uygulamanın yaşam döngüsüne bağlıdır. Yeni oturumun başlangıcını el ile denetlemek istiyorsanız, sonraki adımları izleyin:

Not

Analytics.StartSession() API'sinin her çağrısının yeni bir oturum oluşturacağını dikkate alın. El ile oturum izleyici modunda bu API çağrılmazsa, tüm gönderen günlükler null oturum değerine sahip olur.

Not

Yeni bir uygulama başlatıldıktan sonra oturum kimliğinin yeniden oluşturulacağını dikkate alın.

  • SDK başlatılmadan önce aşağıdaki yöntemi çağırın:
Analytics.EnableManualSessionTracker();
  • Ardından API'yi StartSession aşağıdakinden AppCenter.Startsonra kullanabilirsiniz:
Analytics.StartSession();

Yerel depolama boyutu

Varsayılan olarak, SDK tüm olay günlüklerini 10 MB'a kadar depolar. Geliştiriciler depolama boyutunu artırmak için bir API kullanabilir ve SDK, depolama alanı dolana kadar günlükleri depolamaya devam eder.

İnternet erişimi yok

Ağ bağlantısı olmadığında SDK, yerel depolama alanına en fazla 10 MB günlük kaydeder. Depolama alanı dolduktan sonra SDK, yeni günlüklere yer açmak için eski günlükleri atmaya başlar. Cihaz İnternet erişimini geri aldıktan sonra SDK günlükleri 50 veya her 6 saniyede bir toplu iş olarak gönderir.

Olay günlüklerini toplu olarak oluşturma

App Center SDK'sı günlükleri 50 toplu iş olarak karşıya yükler ve SDK'da gönderilecek 50 günlük yoksa, 6 saniye sonra günlükleri göndermeye devam eder. Paralel olarak gönderilen en fazla üç toplu iş olabilir.

Yeniden deneme ve geri kapatma mantığı

App Center SDK kurtarılabilir ağ hatalarında geri alma yeniden denemelerini destekler. Yeniden deneme mantığı aşağıda verilmiştir:

  • İstek başına en fazla 3 deneme.
  • Her isteğin kendi yeniden deneme durum makinesi vardır.
  • Bir istek tüm yeniden denemelerini tükettiğinde tüm iletim kanalları devre dışı bırakılır (bir sonraki uygulama işlemine kadar).

Geri kapatma mantığı

  • %50 rastgelelik, ilk olarak 5 ile 10 arasında yeniden deneme, ikinci yeniden deneme 2,5 ile 5 dakika arasında, son deneme 10 ile 20 dakika arasında.
  • Ağ kapalıyken açıksa (veya wi-fi'den mobil ağa), yeniden deneme durumları sıfırlanır ve istekler hemen yeniden denenır.