Partager via


App Center Analytics (macOS)

Important

Visual Studio App Center a été mis hors service le 31 mars 2025, à l’exception des fonctionnalités d’analyse et de diagnostic, qui continueront d’être prises en charge jusqu’au 30 juin 2026. En savoir plus.

App Center Analytics vous aide à comprendre le comportement des utilisateurs et l’engagement client pour améliorer votre application. Le SDK capture automatiquement le nombre de sessions et les propriétés d’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 concernent. Toutes les informations capturées sont disponibles dans le portail App Center pour vous permettre d’analyser les données.

Remarque

Le pays d’opérateur et le nom de l’opérateur ne sont pas disponibles sur App Center Analytics pour macOS, mais vous pouvez définir le pays d’opérateur avec l’emplacement de votre appareil.

Remarque

Des modifications importantes ont été introduites dans la version 4.0.0 d'App Center. Suivez la section Migrate to App Center SDK 4.0.0 et versions ultérieures pour migrer App Center à partir des versions précédentes.

Suivez la section Prise en main si vous n’avez pas encore configuré le Kit de développement logiciel (SDK) dans votre application.

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 d’appareil, notamment la version du système d’exploitation, le modèle, et ainsi de suite, sans code supplémentaire.

Remarque

Sur les applications Mac Catalyst, la quantité de sessions peut être inférieure à celle des applications iOS. Les événements de cycle de vie utilisés pour suivre les sessions sur Mac Catalyst se comportent différemment de ceux sur iOS.

Le Kit de développement logiciel (SDK) signale automatiquement le code de pays d’un utilisateur si l’appareil dispose d’un modem de données mobiles et d’une carte SIM installée. Les appareils Wi-Fi uniquement ne signalent pas par défaut un code de pays. Pour définir le code de pays de ces utilisateurs, vous devez récupérer l’emplacement de votre utilisateur vous-même et utiliser la setCountryCode: méthode dans le Kit de développement logiciel (SDK). Nos conseils sont d’être attentifs au suivi des emplacements des utilisateurs et à utiliser une résolution de localisation faible. L’exemple ci-dessous utilise kCLLocationAccuracyKilometer.

  • Veillez à activer les services d’emplacement sur l’appareil.
  • Obtenez l’emplacement actuel de l’appareil à l’aide de CLLocationManager.
  • Convertissez la localisation en code de pays ISO à l’aide de CLGeocoder.
  • Remplacez le code du pays de l’opérateur en utilisant la méthode du SDK setCountryCode.

Utilisez le code suivant pour obtenir l’emplacement de l’appareil et remplacer le code du pays d’opérateur dans l’application :

Ajoutez le protocole CLLocationManagerDelegate à AppDelegate et ajoutez la propriété locationManager :

@interface AppDelegate () <CLLocationManagerDelegate>
@property(nonatomic) CLLocationManager *locationManager;
@end
class AppDelegate: CLLocationManagerDelegate {
  private var locationManager: CLLocationManager = CLLocationManager()
}

Dans la méthode didFinishLaunchingWithOptions : configurez le gestionnaire d’emplacements :

  self.locationManager = [[CLLocationManager alloc] init];
  self.locationManager.delegate = self;
  self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
  [self.locationManager requestWhenInUseAuthorization];
  self.locationManager.delegate = self
  self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer
  self.locationManager.requestWhenInUseAuthorization()

Remarque

La requestWhenInUseAuthorization méthode n’est pas disponible pour macOS. Supprimez les appels à cette méthode lors du développement pour macOS.

Ajoutez les méthodes de délégué :

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
  if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
    [manager requestLocation];
  }
}

- (void)locationManger:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {
  CLLocation *location = [locations lastObject];
  CLGeocoder *geocoder = [[CLGeocoder alloc] init];
  [geocoder reverseGeocodeLocation:location
                 completionHandler:^(NSArray *placemarks, NSError *error) {
                   if (placemarks.count == 0 || error)
                     return;
                   CLPlacemark *pm = [placemarks firstObject];
                   [MSACAppCenter setCountryCode:pm.ISOcountryCode];
                 }]
}

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
  NSLog(@"Failed to find user's location: \(error.localizedDescription)");
}
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
  if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
    manager.requestLocation()
  }
}

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
  let userLocation:CLLocation = locations[0] as CLLocation
  CLGeocoder().reverseGeocodeLocation(userLocation) { (placemarks, error) in
    if error == nil {
      AppCenter.countryCode = placemarks?.first?.isoCountryCode
    }
  }
}
  
func locationManager(_ Manager: CLLocationManager, didFailWithError error: Error) {
  print("Failed to find user's location: \(error.localizedDescription)")
}

Événements personnalisés

Vous pouvez suivre vos propres événements personnalisés avec jusqu’à 20 propriétés pour savoir ce qui se passe dans votre application, comprendre les actions des utilisateurs et voir les agrégats dans le portail App Center.

Une fois que vous avez démarré le Kit de développement logiciel (SDK), utilisez la trackEvent:withProperties 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.

NSDictionary *properties = @{@"Category" : @"Music", @"FileName" : @"favorite.avi"};
[MSACAnalytics trackEvent:@"Video clicked" withProperties: properties];
Analytics.trackEvent("Video clicked", withProperties: ["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 cet exemple à la place :

[MSACAnalytics trackEvent:@"Video clicked"];
Analytics.trackEvent("Video clicked")

Priorité et persistance des événements

Vous pouvez suivre les événements critiques métier qui ont une importance plus élevée que d’autres événements.

  • Les développeurs peuvent définir la priorité des événements comme Normal (FlagsNormal dans l’API) ou Critique (FlagsCritical dans l’API).
  • Les événements dont la priorité est définie comme Critique sont récupérés d’abord à partir du stockage et envoyés avant les événements normaux .
  • Lorsque le stockage local est plein et que de nouveaux événements doivent être stockés. Les événements les plus anciens dont la priorité est la plus basse sont supprimés en premier pour créer de la place pour les nouveaux.
  • Si le stockage est plein de journaux d’activité avec priorité critique , le suivi d’un événement avec priorité normale échoue, car le Kit de développement logiciel (SDK) ne peut pas faire de place dans ce cas.
  • Si vous utilisez également le service Plantages, les journaux de plantage sont marqués comme Critiques et partagent le même stockage que les événements.
  • L’intervalle de transmission est appliqué uniquement aux événements normaux , les événements critiques sont envoyés après 3 secondes.

Vous pouvez utiliser l’API suivante pour suivre un événement comme critique :

NSDictionary *properties = @{@"Category" : @"Music", @"FileName" : @"favorite.avi"};
[MSACAnalytics trackEvent:@"Video clicked" withProperties:properties flags:MSACFlagsCritical];

// If you're using name only, you can pass nil as properties.
let properties = ["Category" : "Music", "FileName" : "favorite.avi"];
Analytics.trackEvent("Video clicked", withProperties: properties, flags: .critical)

// If you're using name only, you can pass nil as properties.

Suspendre et reprendre l'envoi de fichiers journaux

La suspension de la transmission d’événements peut être utile dans les scénarios où l’application doit contrôler la bande passante réseau pour des besoins plus critiques pour l’entreprise. Vous pouvez suspendre l’envoi de journaux au back-end du centre d'applications. Lorsqu’ils sont suspendus, les événements peuvent toujours être suivis et enregistrés, mais ils ne sont pas envoyés immédiatement. Tous les événements suivis par votre application pendant la pause ne seront envoyés qu’une fois que vous appelez resume.

[MSACAnalytics pause];
[MSACAnalytics resume];
Analytics.pause()
Analytics.resume()

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.

[MSACAnalytics setEnabled:NO];
Analytics.enabled = false

Pour réactiver App Center Analytics, utilisez la même API, mais passez YES/true en tant que paramètre.

[MSACAnalytics setEnabled:YES];
Analytics.enabled = true

L’état est conservé dans le stockage de l’appareil dans les lancements d’application.

Remarque

Cette méthode ne doit être utilisée qu’après le démarrage de Analytics.

Vérifier si App Center Analytics est activé

Vous pouvez également vérifier si App Center Analytics est activé ou non.

[MSACAnalytics isEnabled];
Analytics.enabled

Remarque

Cette méthode ne doit être utilisée qu'après que Analytics ait été démarré ; elle renverra toujours NO ou false avant le démarrage.

Gérer la session de démarrage

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 :

Remarque

Soyez attentif à ce que chaque appel de l’API Analytics.StartSession() génère une nouvelle session. Si, en mode de suivi de session manuel, cette API ne sera pas appelée, tous les journaux d’activité d’envoi auront une valeur de session Null.

Remarque

Attention, après le lancement d’une nouvelle application, l’ID de session sera régénéré.

  • Appelez la méthode suivante avant le démarrage du Kit de développement logiciel (SDK) :
[MSACAnalytics enableManualSessionTracker];
Analytics.enableManualSessionTracker()
  • Vous pouvez ensuite utiliser l’API startSession après :AppCenter.start
[MSACAnalytics startSession];
Analytics.startSession()

Taille du stockage local

Par défaut, le Kit de développement logiciel (SDK) stocke tous les journaux 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 plein.

Aucun accès à Internet

Lorsqu'il n'y a aucune connectivité réseau, le SDK enregistre jusqu'à 10 Mo de fichiers journaux dans le stockage local. Une fois le stockage plein, le SDK commence à supprimer les anciens journaux pour faire de la place aux nouveaux journaux. Lorsque la connectivité réseau est rétablie, le SDK envoie les journaux par lots de 50 ou toutes les 6 secondes (par défaut).

Remarque

Les fichiers journaux datant de plus de 25 jours seront supprimés.

Journaux des événements de traitement par lots

Le SDK App Center charge les journaux par lots de 50 et, si le SDK n’a pas 50 journaux à envoyer, il les envoie quand même après 6 secondes (par défaut). Il peut y avoir un maximum de trois lots envoyés en parallèle. L’intervalle de transmission peut être modifié :

// Change transmission interval to 10 seconds.
[MSACAnalytics setTransmissionInterval:10000];
// Change transmission interval to 10 seconds.
Analytics.transmissionInterval = 10000

La valeur de l’intervalle de transmission doit être comprise entre 6 secondes et 86400 secondes (un jour) et cette méthode doit être appelée avant le démarrage du service.

Nouvelle tentative et logique d’interruption

Le Kit de développement logiciel (SDK) App Center prend en charge les nouvelles tentatives sur les erreurs réseau récupérables. Voici la logique de nouvelle tentative :

  • Trois tentatives maximales par requête.
  • Chaque requête a son propre automate d'état de réessai.
  • Tous les canaux de transmission sont désactivés (jusqu’au prochain processus d’application) après qu’une demande épuise toutes ses nouvelles tentatives.

Logique de repli

  • 50% randomisation, premier essai entre 5 et 10 secondes, deuxième essai entre 2,5 et 5 minutes, dernier essai entre 10 et 20 minutes.
  • Si le réseau bascule de coupé à actif (ou de wi-fi à mobile), les états de réinitialisation sont activés et les demandes sont retentées immédiatement.