Share via


App Center Analytics (macOS)

Important

Visual Studio App Center doit être mis hors service le 31 mars 2025. Bien que vous puissiez continuer à utiliser Visual Studio App Center jusqu’à ce qu’il soit entièrement mis hors service, il existe plusieurs alternatives recommandées vers lesquelles vous pouvez envisager de migrer.

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.

Notes

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

Notes

Dans la 4.0.0 version d’App Center, des changements cassants ont été introduits. Suivez la section Migrer vers 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 Kit de développement logiciel (SDK), il effectue automatiquement le suivi des sessions et des propriétés de l’appareil, y compris la version du système d’exploitation, le modèle, etc., sans code supplémentaire.

Notes

Sur les applications Mac Catalyst, le nombre de sessions peut être inférieur à celui 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. Les appareils Wi-Fi uniquement ne signalent pas de code de pays par défaut. 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 SDK. Notre conseil est d’être attentif au suivi des emplacements des utilisateurs et d’utiliser une faible résolution d’emplacement. L’exemple ci-dessous utilise kCLLocationAccuracyKilometer.

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

Utilisez le code suivant pour obtenir l’emplacement de l’appareil et remplacer le code de pays de l’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’emplacement :

  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()

Notes

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 déléguées :

- (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 plutôt cet exemple :

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

Priorité et persistance de l’événement

Vous pouvez suivre les événements critiques pour l’entreprise 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 d’abord récupérés à 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 avec la priorité la plus faible sont supprimés en premier pour faire de la place pour les nouveaux.
  • Si le stockage est rempli de journaux avec priorité critique , le suivi d’un événement avec la 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 Crash, les journaux d’incident sont définis 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 seront 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 des journaux

La suspension de la transmission des événements peut être utile dans les scénarios où l’application doit contrôler la bande passante réseau pour répondre à des besoins plus critiques pour l’entreprise. Vous pouvez suspendre l’envoi des journaux au back-end App Center. 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 en 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 entre les lancements d’application.

Notes

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

Vérifier si App Center Analytics est activé

Vous pouvez également case activée si App Center Analytics est activé ou non.

[MSACAnalytics isEnabled];
Analytics.enabled

Notes

Cette méthode ne doit être utilisée qu’après Analytics le démarrage. Elle retourne NO toujours ou false avant le début.

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 :

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’activité 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 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 du stockage et le KIT de développement logiciel (SDK) continue de stocker les journaux jusqu’à ce que le stockage soit plein.

Pas d’accès à Internet

Lorsqu’il n’y a pas de connectivité réseau, le Kit de développement logiciel (SDK) enregistre jusqu’à 10 Mo de journaux dans le stockage local. Une fois le stockage plein, le KIT de développement logiciel (SDK) commence à ignorer les anciens journaux pour faire de la place pour les nouveaux journaux. Une fois la connectivité réseau retournée, le KIT de développement logiciel (SDK) envoie les journaux dans le lot de 50 ou après toutes les 6 secondes (par défaut).

Notes

Les journaux antérieurs à 25 jours seront ignorés.

Journaux d’événements de traitement par lots

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 (par défaut). Un maximum de trois lots peuvent être 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.

Logique de nouvelle tentative et de sauvegarde

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 :

  • Trois tentatives maximum par requête.
  • 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 de back-off

  • Randomisation à 50 %, première nouvelle tentative entre 5 et 10 secondes, deuxième nouvelle tentative entre 2,5 et 5 minutes, dernière tentative entre 10 et 20 minutes.
  • Si le réseau bascule de désactivé à activé (ou du wi-fi au mobile), les états de nouvelles tentatives sont réinitialisés et les demandes sont retentées immédiatement.