App Center Analytics (Windows)
Important
La mise hors service de Visual Studio App Center est prévue pour le 31 mars 2025. Bien que vous puissiez continuer à utiliser Visual Studio App Center jusqu’à sa mise hors service complète, il existe plusieurs alternatives recommandées vers lesquelles vous pouvez envisager la migration.
En savoir plus sur les chronologies et les alternatives de support.
App Center Analytics vous aide à comprendre le comportement des utilisateurs et l’engagement des clients pour améliorer votre application. Le Kit de développement logiciel (SDK) capture automatiquement le nombre de sessions et les propriétés de l’appareil, comme le modèle, la version du système d’exploitation, etc. Vous pouvez définir vos propres événements personnalisés pour mesurer les éléments qui vous importent. Toutes les informations capturées sont disponibles dans le portail App Center pour vous permettre d’analyser les données.
Suivez la section Prise en main WPF/WinForms ou UWP/WinUI Prise en main (en fonction de votre plateforme) si vous n’avez pas encore configuré le SDK dans votre application.
Les instructions de cette page fonctionnent pour UWP (y compris Xamarin.Forms et WinUI), WPF et WinForms.
Informations sur la session et l’appareil
Une fois que vous avez ajouté App Center Analytics à votre application et démarré le SDK, il effectue automatiquement le suivi des sessions et des propriétés de l’appareil, telles que la version du système d’exploitation, le modèle, etc.
Notes
Sur les applications WinUI, le nombre de sessions peut être inférieur à celui des applications UWP en raison des spécificités de son cycle de vie.
Indicatif de pays
Le code du pays n’est pas automatiquement signalé par le SDK. Si vous souhaitez le signaler manuellement, vous pouvez suivre les instructions de votre plateforme ci-dessous.
UWP
- Veillez à activer la fonctionnalité d’emplacement pour votre application.
- Obtenez une clé d’authentification Bing Cartes.
- Utilisez le code suivant à n’importe quel endroit avant d’appeler
AppCenter.Start(... typeof(Analytics) ...);
. En tant queBingMapsToken
, utilisez la clé obtenue à l’étape 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);
}
Notes
Pour que le code de pays s’affiche sur les sessions Analytics, AppCenter.SetCountryCode
doit être appelé avant d’appeler AppCenter.Start
.
WPF/WinForms
Étant donné que les plateformes WPF/WinForms n’ont pas d’API de géolocalisation, vous pouvez utiliser un code de pays système.
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);
}
Notes
Pour que le code de pays s’affiche sur les sessions Analytics, AppCenter.SetCountryCode
doit être appelé avant d’appeler AppCenter.Start
.
Événements personnalisés
Vous pouvez suivre vos propres événements personnalisés avec jusqu’à 20 propriétés pour comprendre l’interaction entre vos utilisateurs et l’application.
Une fois que vous avez démarré le Kit de développement logiciel (SDK), utilisez la TrackEvent()
méthode pour suivre vos événements avec des propriétés. Vous pouvez envoyer jusqu’à 200 noms d’événements distincts. En outre, il existe une limite maximale de 256 caractères par nom d’événement et de 125 caractères par nom de propriété d’événement et valeur de propriété d’événement.
Analytics.TrackEvent("Video clicked", new Dictionary<string, string> {
{ "Category", "Music" },
{ "FileName", "favorite.avi"}
});
Les propriétés des événements sont entièrement facultatives . Si vous souhaitez simplement suivre un événement, utilisez plutôt cet exemple :
Analytics.TrackEvent("Video clicked");
Activer ou désactiver App Center Analytics au moment de l’exécution
Vous pouvez activer et désactiver App Center Analytics au moment de l’exécution. Si vous le désactivez, le Kit de développement logiciel (SDK) ne collecte plus d’informations d’analyse pour l’application.
Analytics.SetEnabledAsync(false);
Pour réactiver App Center Analytics, utilisez la même API, mais passez true
en tant que paramètre.
Analytics.SetEnabledAsync(true);
Vous n’avez pas besoin d’attendre cet appel pour rendre les autres appels d’API (par IsEnabledAsync
exemple) cohérents.
L’état est conservé dans le stockage de l’appareil au cours des lancements d’application.
Vérifier si App Center Analytics est activé
Vous pouvez également case activée si App Center Analytics est activé ou non.
bool isEnabled = await Analytics.IsEnabledAsync();
Gérer démarrer la session
Par défaut, l’ID de session dépend du cycle de vie de l’application. Si vous souhaitez contrôler manuellement le début d’une nouvelle session, suivez les étapes suivantes :
Notes
Faites attention à ce que chaque appel de l’API Analytics.StartSession() génère une nouvelle session. Si en mode suivi de session manuel, cette API ne sera pas appelée, alors tous les journaux d’envoi auront une valeur de session Null.
Notes
Faites attention au fait qu’après le lancement d’une nouvelle application, l’ID de session est régénéré.
- Appelez la méthode suivante avant le démarrage du Kit de développement logiciel (SDK) :
Analytics.EnableManualSessionTracker();
- Vous pouvez ensuite utiliser l’API
StartSession
après :AppCenter.Start
Analytics.StartSession();
Taille du stockage local
Par défaut, le SDK stocke tous les journaux des événements jusqu’à 10 Mo. Les développeurs peuvent utiliser une API pour augmenter la taille de stockage et le SDK continuera à stocker les journaux jusqu’à ce que le stockage soit saturé.
Aucun accès à Internet
Lorsqu’il n’existe aucune connectivité réseau, le SDK enregistre jusqu’à 10 Mo de journaux dans le stockage local. Une fois le stockage saturé, le SDK commence à ignorer les anciens journaux pour libérer de l’espace pour les nouveaux journaux. Une fois que l’appareil a rétabli l’accès à Internet, le SDK envoie les journaux dans le lot de 50 ou après toutes les 6 secondes.
Traitement par lot des journaux des événements
Le Kit de développement logiciel (SDK) App Center charge les journaux dans un lot de 50 et si le SDK n’a pas 50 journaux à envoyer, il envoie toujours les journaux après 6 secondes. Il peut y avoir un maximum de trois lots envoyés en parallèle.
Logique de nouvelle tentative et d’interruption
Le Kit de développement logiciel (SDK) App Center prend en charge les nouvelles tentatives de sauvegarde sur les erreurs réseau récupérables. Voici la logique de nouvelle tentative :
- 3 tentatives maximum par demande.
- Chaque requête a sa propre machine d’état de nouvelle tentative.
- Tous les canaux de transmission sont désactivés (jusqu’au processus d’application suivant) après qu’une requête a épuisé toutes ses nouvelles tentatives.
Logique d’authentification
- Randomisation à 50 %, première nouvelle tentative entre 5 et 10s, deuxième tentative entre 2,5 et 5 minutes, dernière tentative entre 10 et 20 minutes.
- Si le réseau bascule de off à on (ou du wi-fi au mobile), les états de nouvelle tentative sont réinitialisés et les demandes sont retentées immédiatement.