App Center Analytics (Android)
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.
Se l'SDK non è ancora stato configurato nell'applicazione, seguire la sezione Introduzione all'SDK .
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, senza scrivere codice aggiuntivo.
L'SDK segnala automaticamente il codice paese di un utente se il dispositivo dispone di un modem dati mobile e di una scheda SIM installata. I dispositivi solo Wi-Fi non segnalano un codice paese per impostazione predefinita. Per impostare il codice paese di tali utenti, è necessario recuperare manualmente la posizione dell'utente e usare il setCountryCode:
metodo nell'SDK:
AppCenter.setCountryCode("en");
AppCenter.setCountryCode("en")
Nota
Affinché il codice paese venga visualizzato nelle sessioni di Analisi, AppCenter.setCountryCode
deve essere chiamato prima di chiamare AppCenter.start
.
È 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. Sono inoltre previsti limiti massimi per i caratteri:
- 256 caratteri per
event name
. - 125 caratteri per
event property name
&event property value
.
Map<String, String> properties = new HashMap<>();
properties.put("Category", "Music");
properties.put("FileName", "favorite.avi");
Analytics.trackEvent("Video clicked", properties);
val properties = hashMapOf("Category" to "Music", "FileName" to "favorite.avi")
Analytics.trackEvent("Video clicked", properties)
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");
Analytics.trackEvent("Video clicked")
È possibile tenere traccia degli eventi business critical con un'importanza maggiore rispetto ad altri eventi.
- Gli sviluppatori possono impostare la priorità degli eventi come Normale (
Flags.NORMAL
nell'API) o Critico (Flags.CRITICAL
nell'API). - Gli eventi con priorità impostata come Critico verranno recuperati dall'archiviazione prima e inviati prima degli eventi Normal .
- Quando l'archiviazione locale è piena e devono essere archiviati nuovi eventi, gli eventi meno recenti con priorità più bassa vengono eliminati per primi.
- Se lo spazio di archiviazione è pieno di log con priorità Critica , il rilevamento di un evento con priorità Normale avrà esito negativo perché l'SDK non può fare spazio in questo caso.
- Se si usa anche il servizio Arresti anomali , i log di arresto anomalo vengono impostati su Critico e condividono la stessa risorsa di archiviazione degli eventi.
- L'intervallo di trasmissione viene applicato solo agli eventi Normali , gli eventi critici verranno inviati dopo 3 secondi.
È possibile usare l'API seguente per tenere traccia di un evento come critico:
Map<String, String> properties = new HashMap<>();
properties.put("Category", "Music");
properties.put("FileName", "favorite.avi");
Analytics.trackEvent("eventName", properties, Flags.CRITICAL);
// If you're using name only, you can pass null as properties.
val properties = hashMapOf("Category" to "Music", "FileName" to "favorite.avi")
Analytics.trackEvent("Video clicked", properties, Flags.CRITICAL)
// If you're using name only, you can pass null as properties.
La sospensione della trasmissione degli eventi può essere utile negli scenari in cui l'app deve controllare la larghezza di banda di rete per esigenze aziendali più critiche. È possibile sospendere l'invio dei log al back-end di App Center. Quando vengono sospesi, gli eventi possono comunque essere rilevati e salvati, ma non vengono inviati immediatamente. Tutti gli eventi tracciati dall'app durante la sospensione verranno inviati solo dopo la chiamata resume
a .
Analytics.pause();
Analytics.resume();
Analytics.pause()
Analytics.resume()
È 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.setEnabled(false);
Analytics.setEnabled(false)
Per abilitare di nuovo App Center Analytics, usare la stessa API ma passare true
come parametro.
Analytics.setEnabled(true);
Analytics.setEnabled(true)
Lo stato viene salvato in modo permanente nella risorsa di archiviazione del dispositivo tra i lanci dell'applicazione.
Questa API è asincrona. Per altre informazioni, vedere la guida alle API asincrone di App Center .
Nota
Questo metodo deve essere utilizzato solo dopo Analytics
l'avvio.
È anche possibile verificare se App Center Analytics è abilitato o meno.
Analytics.isEnabled();
Analytics.isEnabled()
Questa API è asincrona. Per altre informazioni, vedere la guida alle API asincrone di App Center .
Nota
Questo metodo deve essere utilizzato solo dopo Analytics
l'avvio, ma restituirà false
sempre prima dell'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();
Analytics.enableManualSessionTracker()
- È quindi possibile usare l'API
startSession
dopo :AppCenter.start
Analytics.startSession();
Analytics.startSession()
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.
Quando non è presente connettività di rete, l'SDK salva fino a 10 MB di log nell'archiviazione locale. Una volta che lo spazio di archiviazione è pieno, l'SDK inizia a rimuovere i log precedenti per liberare spazio per i nuovi log. Una volta restituita la connettività di rete, l'SDK invia i log nel batch di 50 o dopo ogni 6 secondi (per impostazione predefinita).
Nota
I log precedenti a 25 giorni non verranno accettati dal back-end.
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 (per impostazione predefinita). È possibile inviare un massimo di tre batch in parallelo. L'intervallo di trasmissione può essere modificato:
// Change transmission interval to 10 seconds.
Analytics.setTransmissionInterval(10000);
// Change transmission interval to 10 seconds.
Analytics.setTransmissionInterval(10000)
Il valore dell'intervallo di trasmissione deve essere compreso tra 6 secondi e 86400 secondi (un giorno) e questo metodo deve essere chiamato prima dell'avvio del servizio.
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% di casualizzazione, primo tentativo tra 5 e 10 secondi, tentativo successivo 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.