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
- Assicurarsi di abilitare La funzionalità posizione per l'app.
- Ottenere una chiave di autenticazione Bing Mappe.
- Usare il codice seguente in qualsiasi posizione prima di chiamare
AppCenter.Start(... typeof(Analytics) ...);
. ComeBingMapsToken
, 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.