App Center Analytics (Windows)

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Usługa App Center Analytics pomaga zrozumieć zachowanie użytkowników i zaangażowanie klientów w celu ulepszenia aplikacji. Zestaw SDK automatycznie przechwytuje liczbę sesji i właściwości urządzenia, takie jak model, wersja systemu operacyjnego itp. Możesz zdefiniować własne zdarzenia niestandardowe, aby zmierzyć rzeczy, które mają znaczenie dla Ciebie. Wszystkie przechwycone informacje są dostępne w portalu Centrum aplikacji, aby analizować dane.

Postępuj zgodnie z sekcją WPF/WinForms Wprowadzenie lub UWP/WinUI Wprowadzenie (na podstawie platformy), jeśli zestaw SDK nie został jeszcze skonfigurowany w aplikacji.

Instrukcje na tej stronie działają dla platformy UWP (w tym narzędzi Xamarin.Forms i WinUI), WPF i WinForms.

Informacje o sesji i urządzeniu

Po dodaniu usługi App Center Analytics do aplikacji i uruchomieniu zestawu SDK automatycznie będzie śledzić sesje i właściwości urządzenia, takie jak wersja systemu operacyjnego, model itp.

Uwaga

W przypadku aplikacji WinUI ilość sesji może być niższa niż w aplikacjach platformy UWP ze względu na specyfikę jej cyklu życia.

Kod kraju

Kod kraju nie jest automatycznie zgłaszany przez zestaw SDK. Jeśli chcesz zgłosić je ręcznie, możesz postępować zgodnie z poniższymi instrukcjami dotyczącymi platformy.

Platforma UWP

  1. Upewnij się, że włączono funkcję lokalizacji dla aplikacji.
  2. Uzyskaj klucz uwierzytelniania Mapy Bing.
  3. Przed wywołaniem metody AppCenter.Start(... typeof(Analytics) ...);użyj następującego kodu w dowolnym miejscu. Jako BingMapsTokenużyj klucza uzyskanego w kroku 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);
}

Uwaga

Aby kod kraju był wyświetlany w sesjach analizy, AppCenter.SetCountryCode należy wywołać przed wywołaniem metody AppCenter.Start.

WPF/WinForms

Ponieważ platformy WPF/WinForms nie mają interfejsu API geolokalizacji, możesz użyć kodu kraju systemu.

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

Uwaga

Aby kod kraju był wyświetlany w sesjach analizy, AppCenter.SetCountryCode należy wywołać przed wywołaniem metody AppCenter.Start.

Zdarzenia niestandardowe

Możesz śledzić własne zdarzenia niestandardowe z maksymalnie 20 właściwościami , aby zrozumieć interakcję między użytkownikami a aplikacją.

Po uruchomieniu zestawu SDK użyj TrackEvent() metody , aby śledzić zdarzenia za pomocą właściwości. Można wysłać do 200 odrębnych nazw zdarzeń. Ponadto istnieje maksymalny limit 256 znaków na nazwę zdarzenia i 125 znaków na nazwę właściwości zdarzenia i wartość właściwości zdarzenia.

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

Właściwości zdarzeń są całkowicie opcjonalne — jeśli chcesz śledzić zdarzenie, użyj tego przykładu:

Analytics.TrackEvent("Video clicked");

Włączanie lub wyłączanie usługi App Center Analytics w czasie wykonywania

Możesz włączyć i wyłączyć usługę App Center Analytics w czasie wykonywania. Jeśli ją wyłączysz, zestaw SDK nie będzie zbierać żadnych dodatkowych informacji analitycznych dla aplikacji.

Analytics.SetEnabledAsync(false);

Aby ponownie włączyć usługę App Center Analytics, użyj tego samego interfejsu API, ale przekaż true go jako parametr.

Analytics.SetEnabledAsync(true);

Nie musisz czekać na to wywołanie, aby inne wywołania interfejsu API (takie jak IsEnabledAsync) były spójne.

Stan jest utrwalany w magazynie urządzenia w ramach uruchamiania aplikacji.

Sprawdzanie, czy usługa App Center Analytics jest włączona

Możesz również sprawdzić, czy usługa App Center Analytics jest włączona, czy nie.

bool isEnabled = await Analytics.IsEnabledAsync();

Zarządzanie sesją początkową

Domyślnie identyfikator sesji zależy od cyklu życia aplikacji. Jeśli chcesz ręcznie kontrolować początek nowej sesji, wykonaj następujące kroki:

Uwaga

Zwróć uwagę, że każde wywołanie interfejsu API Analytics.StartSession() spowoduje wygenerowanie nowej sesji. Jeśli w trybie ręcznego śledzenia sesji ten interfejs API nie zostanie wywołany, wszystkie dzienniki wysyłające będą miały wartość sesji null.

Uwaga

Zwróć uwagę, że po uruchomieniu nowej aplikacji identyfikator sesji zostanie wygenerowany ponownie.

  • Wywołaj następującą metodę przed uruchomieniem zestawu SDK:
Analytics.EnableManualSessionTracker();
  • Następnie możesz użyć interfejsu API po wykonaniu StartSession polecenia AppCenter.Start:
Analytics.StartSession();

Rozmiar magazynu lokalnego

Domyślnie zestaw SDK przechowuje wszystkie dzienniki zdarzeń do 10 MB. Deweloperzy mogą używać interfejsu API do zwiększenia rozmiaru magazynu , a zestaw SDK będzie przechowywać dzienniki do momentu zapełnienia magazynu.

Brak dostępu do Internetu

Jeśli nie ma żadnej łączności sieciowej, zestaw SDK zapisuje maksymalnie 10 MB dzienników w magazynie lokalnym. Po zapełnieniu magazynu zestaw SDK zacznie odrzucać stare dzienniki, aby zapewnić miejsce na nowe dzienniki. Gdy urządzenie uzyska dostęp do Internetu, zestaw SDK będzie wysyłać dzienniki w partii 50 lub po 6 sekundach.

Dzienniki zdarzeń przetwarzania wsadowego

Zestaw SDK centrum aplikacji przekazuje dzienniki w partii 50, a jeśli zestaw SDK nie ma 50 dzienników do wysłania, nadal będzie wysyłać dzienniki po 6 sekundach. Może istnieć maksymalnie trzy partie wysyłane równolegle.

Ponów próbę i wycofywanie logiki

Zestaw SDK usługi App Center obsługuje ponawianie prób w przypadku błędów sieci możliwych do odzyskania. Poniżej znajduje się logika ponawiania prób:

  • 3 próbuje maksymalnie na żądanie.
  • Każde żądanie ma własną maszynę stanu ponawiania.
  • Wszystkie kanały transmisji są wyłączone (do następnego procesu aplikacji) po wyczerpaniu wszystkich ponownych prób przez jedno żądanie.

Logika wycofywania

  • 50% losowości, najpierw spróbuj ponownie z zakresu od 5 do 10, ponawianie próby między 2,5 i 5 minut, ostatnia próba z zakresu od 10 do 20 minut.
  • Jeśli sieć wyłącza się do włączonej (lub z sieci wi-fi do urządzeń przenośnych), stany ponawiania prób są resetowane, a żądania są natychmiast ponawiane.