App Center Analytics (Windows)

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile prendere in considerazione la migrazione.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

App Center Analytics consente di comprendere il comportamento degli utenti e il coinvolgimento dei clienti per migliorare l'app. L'SDK acquisisce automaticamente il numero di sessioni e le proprietà del dispositivo, ad esempio modello, versione del sistema operativo e così via. È possibile definire eventi personalizzati per misurare le cose importanti. Tutte le informazioni acquisite sono disponibili nel portale di App Center per analizzare i dati.

Seguire la sezione Introduzione WPF/WinForms o UWP/WinUI Introduzione (in base alla piattaforma) se non è ancora stato configurato l'SDK nell'applicazione.

Le istruzioni in questa pagina funzionano per la piattaforma UWP (inclusi Xamarin.Forms e WinUI), WPF e WinForms.

Informazioni sulla sessione e sul dispositivo

Dopo aver aggiunto App Center Analytics all'app e aver avviato l'SDK, tiene automaticamente traccia delle sessioni e delle proprietà del dispositivo, ad esempio Versione del sistema operativo, modello e così via.

Nota

Nelle app WinUI la quantità di sessioni può essere inferiore rispetto alle app UWP a causa di specifiche del ciclo di vita.

Prefisso internazionale

Il codice paese non viene segnalato automaticamente dall'SDK. Se si vuole segnalarlo manualmente, è possibile seguire le istruzioni per la piattaforma seguente.

UWP

  1. Assicurarsi di abilitare La funzionalità posizione per l'app.
  2. Ottenere una chiave di autenticazione Bing Mappe.
  3. Usare il codice seguente in qualsiasi posizione prima di chiamare AppCenter.Start(... typeof(Analytics) ...);. Come BingMapsToken, usare la chiave ottenuta nel passaggio 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);
}

Nota

Affinché il codice paese venga visualizzato nelle sessioni di Analisi, AppCenter.SetCountryCode deve essere chiamato prima di chiamare AppCenter.Start.

WPF/WinForms

Poiché le piattaforme WPF/WinForms non dispongono di un'API di georilevazione, è possibile usare un codice paese di sistema.

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

Nota

Affinché il codice paese venga visualizzato nelle sessioni di Analisi, AppCenter.SetCountryCode deve essere chiamato prima di chiamare AppCenter.Start.

Eventi personalizzati

È possibile tenere traccia degli eventi personalizzati con un massimo di 20 proprietà per comprendere l'interazione tra gli utenti e l'app.

Dopo aver avviato l'SDK, usare il TrackEvent() metodo per tenere traccia degli eventi con le proprietà. È possibile inviare fino a 200 nomi di eventi distinti. È inoltre previsto un limite massimo di 256 caratteri per nome evento e 125 caratteri per nome della proprietà evento e valore della proprietà evento.

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

Le proprietà per gli eventi sono completamente facoltative: se si vuole solo tenere traccia di un evento, usare invece questo esempio:

Analytics.TrackEvent("Video clicked");

Abilitare o disabilitare Analisi di App Center in fase di esecuzione

È possibile abilitare e disabilitare Analisi di App Center in fase di esecuzione. Se la si disabilita, l'SDK non raccoglierà altre informazioni di analisi per l'app.

Analytics.SetEnabledAsync(false);

Per abilitare di nuovo App Center Analytics, usare la stessa API ma passare true come parametro.

Analytics.SetEnabledAsync(true);

Non è necessario attendere questa chiamata per rendere coerenti altre chiamate API ( ad esempio IsEnabledAsync).

Lo stato viene salvato in modo permanente nella risorsa di archiviazione del dispositivo tra i lanci dell'applicazione.

Controllare se App Center Analytics è abilitato

È anche possibile verificare se App Center Analytics è abilitato o meno.

bool isEnabled = await Analytics.IsEnabledAsync();

Gestire la sessione di avvio

Per impostazione predefinita, l'ID sessione dipende dal ciclo di vita dell'applicazione. Se si vuole controllare manualmente l'inizio di una nuova sessione, seguire questa procedura:

Nota

Prestare attenzione che ogni chiamata dell'API Analytics.StartSession() genererà una nuova sessione. Se in modalità di rilevamento sessione manuale questa API non verrà chiamata, tutti i log di invio avranno un valore di sessione Null.

Nota

Prestare attenzione che dopo che una nuova applicazione avvia l'ID sessione verrà rigenerato.

  • Chiamare il metodo seguente prima dell'avvio dell'SDK:
Analytics.EnableManualSessionTracker();
  • È quindi possibile usare l'API StartSession dopo :AppCenter.Start
Analytics.StartSession();

Dimensioni di archiviazione locale

Per impostazione predefinita, l'SDK archivia tutti i registri eventi fino a 10 MB. Gli sviluppatori possono usare un'API per aumentare le dimensioni di archiviazione e l'SDK manterrà l'archiviazione dei log fino a quando lo spazio di archiviazione non è pieno.

Nessun accesso a Internet

Quando non è presente alcuna connettività di rete, l'SDK salva fino a 10 MB di log nella risorsa di archiviazione locale. Al termine dell'archiviazione, l'SDK inizierà a eliminare i log precedenti per liberare spazio per i nuovi log. Quando il dispositivo ottiene nuovamente l'accesso a Internet, l'SDK invierà i log nel batch di 50 o dopo ogni 6 secondi.

Invio in batch dei log eventi

App Center SDK carica i log in un batch di 50 e se l'SDK non dispone di 50 log da inviare, i log verranno comunque inviati dopo 6 secondi. È possibile inviare un massimo di tre batch in parallelo.

Logica di ripetizione e back-off

App Center SDK supporta i tentativi di back-off in caso di errori di rete ripristinabili. Di seguito è riportata la logica di ripetizione dei tentativi:

  • 3 tenta il massimo per richiesta.
  • Ogni richiesta ha una propria macchina a stati di ripetizione dei tentativi.
  • Tutti i canali di trasmissione vengono disabilitati (fino al processo successivo dell'app) dopo che una richiesta esaurisce tutti i tentativi.

Logica di back-off

  • 50% casualizzazione, primo tentativo tra 5 e 10, secondo tentativo tra 2,5 e 5 minuti, ultimo tentativo tra 10 e 20 minuti.
  • Se la rete passa da off a on (o da Wi-Fi a mobile), gli stati di ripetizione dei tentativi vengono reimpostati e le richieste vengono ritentate immediatamente.