App Center Analytics (tvOS)

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis es vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie möglicherweise eine Migration in Erwägung ziehen.

Erfahren Sie mehr über Supportzeitpläne und Alternativen.

App Center Analytics hilft Ihnen dabei, das Benutzerverhalten und die Kundenbindung zu verstehen, um Ihre App zu verbessern. Das SDK erfasst automatisch die Sitzungsanzahl und Geräteeigenschaften wie Modell, Betriebssystemversion usw. Sie können Ihre eigenen benutzerdefinierten Ereignisse definieren, um Dinge zu messen, die für Sie wichtig sind. Alle erfassten Informationen sind im App Center-Portal verfügbar, damit Sie die Daten analysieren können.

Hinweis

Das Land des Netzbetreibers und der Name des Netzbetreibers sind in App Center Analytics für tvOS nicht verfügbar, Aber Sie können das Mobilfunkland mit Ihrem Gerätestandort festlegen.

Hinweis

In der 4.0.0 Version von App Center wurden breaking changes eingeführt. Folgen Sie dem Abschnitt Migrieren zu App Center SDK 4.0.0 und höher , um App Center von früheren Versionen zu migrieren.

Folgen Sie dem Abschnitt Erste Schritte , wenn Sie das SDK noch nicht in Ihrer Anwendung eingerichtet haben.

Sitzungs- und Geräteinformationen

Nachdem Sie Ihrer App App Center Analytics hinzugefügt und das SDK gestartet haben, werden Sitzungen und Geräteeigenschaften, einschließlich Betriebssystemversion, Modell usw. automatisch ohne zusätzlichen Code nachverfolgt.

Hinweis

Bei Mac Catalyst-Apps ist die Anzahl der Sitzungen möglicherweise geringer als bei iOS-Apps. Lebenszyklusereignisse, die zum Nachverfolgen von Sitzungen auf Mac Catalyst verwendet werden, verhalten sich anders als unter iOS.

Das SDK meldet automatisch den Ländercode eines Benutzers, wenn auf dem Gerät ein mobiles Datenmodem und eine SIM-Karte installiert ist. Nur-WLAN-Geräte melden standardmäßig keinen Ländercode. Um den Ländercode dieser Benutzer festzulegen, müssen Sie den Standort Ihres Benutzers selbst abrufen und die setCountryCode: -Methode im SDK verwenden. Unser Rat ist, bei der Nachverfolgung von Benutzerstandorten zu achten und eine niedrige Standortauflösung zu verwenden. Im folgenden Beispiel wird kCLLocationAccuracyKilometer verwendet.

  • Stellen Sie sicher, dass Sie Standortdienste auf dem Gerät aktivieren.
  • Rufen Sie den aktuellen Standort des Geräts mit ab CLLocationManager.
  • Konvertieren Sie den Standort mithilfe von CLGeocoderin einen ISO-Ländercode.
  • Überschreiben Sie den Ländercode des Anbieters mithilfe der Methode des setCountryCode SDK.

Verwenden Sie den folgenden Code, um den Standort des Geräts abzurufen und den Ländercode des Anbieters in der App außer Kraft zu setzen:

Fügen Sie das CLLocationManagerDelegate-Protokoll zum AppDelegate hinzu, und fügen Sie die locationManager-Eigenschaft hinzu:

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

In der methode didFinishLaunchingWithOptions: richten Sie den Standort-Manager ein:

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

Hinweis

Die requestWhenInUseAuthorization -Methode ist für macOS nicht verfügbar. Entfernen Sie Aufrufe dieser Methode bei der Entwicklung für macOS.

Fügen Sie die Delegatmethoden hinzu:

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

Benutzerdefinierte Ereignisse

Sie können Ihre eigenen benutzerdefinierten Ereignisse mit bis zu 20 Eigenschaften nachverfolgen, um zu erfahren, was in Ihrer App geschieht, um Benutzeraktionen zu verstehen und die Aggregate im App Center-Portal anzuzeigen.

Nachdem Sie das SDK gestartet haben, verwenden Sie die trackEvent:withProperties -Methode, um Ihre Ereignisse mit Eigenschaften nachzuverfolgen. Sie können bis zu 200 verschiedene Ereignisnamen senden. Außerdem gibt es eine maximale Grenze von 256 Zeichen pro Ereignisnamen und 125 Zeichen pro Ereigniseigenschaftsname und Ereigniseigenschaftenwert.

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

Eigenschaften für Ereignisse sind völlig optional. Wenn Sie nur ein Ereignis nachverfolgen möchten, verwenden Sie stattdessen dieses Beispiel:

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

Ereignispriorität und Persistenz

Sie können geschäftskritische Ereignisse nachverfolgen, die eine höhere Bedeutung haben als andere Ereignisse.

  • Entwickler können die Priorität von Ereignissen als Normal (FlagsNormal in der API) oder Kritisch (FlagsCritical in der API) festlegen.
  • Ereignisse, deren Priorität als Kritisch festgelegt ist, werden zuerst aus dem Speicher abgerufen und vor normalen Ereignissen gesendet.
  • Wenn der lokale Speicher voll ist und neue Ereignisse gespeichert werden müssen. Die ältesten Ereignisse mit der niedrigsten Priorität werden zuerst gelöscht, um Platz für die neuen Ereignisse zu schaffen.
  • Wenn der Speicher voll mit Protokollen mit kritischer Priorität ist, schlägt die Nachverfolgung eines Ereignisses mit der Priorität Normal fehl, da das SDK in diesem Fall keinen Platz schaffen kann.
  • Wenn Sie auch den Absturzdienst verwenden, werden Absturzprotokolle auf Kritisch festgelegt und nutzen denselben Speicher wie Ereignisse.
  • Das Übertragungsintervall wird nur auf normale Ereignisse angewendet, kritische Ereignisse werden nach 3 Sekunden gesendet.

Sie können die folgende API verwenden, um ein Ereignis als kritisch nachzuverfolgen:

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.

Anhalten und Fortsetzen des Sendens von Protokollen

Das Anhalten der Ereignisübertragung kann in Szenarien nützlich sein, in denen die App die Netzwerkbandbreite für geschäftskritischere Anforderungen steuern muss. Sie können das Senden von Protokollen an das App Center-Back-End anhalten. Wenn sie angehalten werden, können Ereignisse weiterhin nachverfolgt und gespeichert werden, aber sie werden nicht sofort gesendet. Alle Ereignisse, die Ihre App während des Anhaltens nachverfolgt, werden nur gesendet, wenn Sie aufrufen resume.

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

Aktivieren oder Deaktivieren von App Center Analytics zur Laufzeit

Sie können App Center Analytics zur Laufzeit aktivieren und deaktivieren. Wenn Sie sie deaktivieren, sammelt das SDK keine weiteren Analyseinformationen für die App.

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

Um App Center Analytics erneut zu aktivieren, verwenden Sie dieselbe API, übergeben YES/true sie aber als Parameter.

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

Der Zustand wird im Speicher des Geräts bei allen Anwendungsstarts beibehalten.

Hinweis

Diese Methode darf erst nach dem Analytics Start verwendet werden.

Überprüfen, ob App Center Analytics aktiviert ist

Sie können auch überprüfen, ob App Center Analytics aktiviert ist oder nicht.

[MSACAnalytics isEnabled];
Analytics.enabled

Hinweis

Diese Methode darf nur verwendet werden, nachdem Analytics sie gestartet wurde, sie wird immer zurückgegeben NO oder false vor dem Start.

Verwalten der Startsitzung

Standardmäßig hängt die Sitzungs-ID vom Lebenszyklus der Anwendung ab. Wenn Sie den Start einer neuen Sitzung manuell steuern möchten, führen Sie die nächsten Schritte aus:

Hinweis

Achten Sie darauf, dass jeder Aufruf der Analytics.StartSession() -API eine neue Sitzung generiert. Wenn diese API im manuellen Sitzungsnachverfolgungsmodus nicht aufgerufen wird, haben alle sendenden Protokolle einen NULL-Sitzungswert.

Hinweis

Achten Sie darauf, dass nach dem Starten einer neuen Anwendung die Sitzungs-ID neu generiert wird.

  • Rufen Sie die folgende Methode auf, bevor Sie das SDK starten:
[MSACAnalytics enableManualSessionTracker];
Analytics.enableManualSessionTracker()
  • Anschließend können Sie die startSession API nach verwenden AppCenter.start:
[MSACAnalytics startSession];
Analytics.startSession()

Größe des lokalen Speichers

Standardmäßig speichert das SDK alle Protokolle bis zu 10 MB. Entwickler können eine API verwenden, um die Speichergröße zu erhöhen, und das SDK speichert Protokolle so lange, bis der Speicher voll ist.

Kein Internetzugriff

Wenn keine Netzwerkkonnektivität vorhanden ist, speichert das SDK bis zu 10 MB An Protokollen im lokalen Speicher. Sobald der Speicher voll ist, beginnt das SDK, alte Protokolle zu verwerfen, um Platz für die neuen Protokolle zu schaffen. Sobald die Netzwerkkonnektivität zurückgegeben wird, sendet das SDK Protokolle im Batch von 50 oder nach 6 Sekunden (standardmäßig).

Hinweis

Protokolle, die älter als 25 Tage sind, werden verworfen.

Batchverarbeitung von Ereignisprotokollen

Das App Center SDK lädt Protokolle in einem Batch von 50 hoch, und wenn das SDK nicht über 50 Zu sendende Protokolle verfügt, sendet es weiterhin Protokolle nach 6 Sekunden (standardmäßig). Es können maximal drei Batches parallel gesendet werden. Das Übertragungsintervall kann geändert werden:

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

Der Übertragungsintervallwert muss zwischen 6 Sekunden und 86400 Sekunden (einen Tag) betragen, und diese Methode muss aufgerufen werden, bevor der Dienst gestartet wird.

Wiederholungs- und Back-off-Logik

Das App Center SDK unterstützt Back-Off-Wiederholungen bei wiederherstellbaren Netzwerkfehlern. Im Folgenden finden Sie die Wiederholungslogik:

  • Maximal drei Versuche pro Anforderung.
  • Jede Anforderung verfügt über einen eigenen Wiederholungszustandscomputer.
  • Alle Übertragungskanäle sind deaktiviert (bis zum nächsten App-Prozess), nachdem eine Anforderung alle Wiederholungen erschöpft hat.

Back-off-Logik

  • 50% Randomisierung, erster Wiederholungsversuch zwischen 5 und 10 Sekunden, zweiter Wiederholungsversuch zwischen 2,5 und 5 Minuten, letzter Versuch zwischen 10 und 20 Minuten.
  • Wenn das Netzwerk von Aus zu Ein wechselt (oder von WLAN auf Mobil), werden wiederholungszustände zurückgesetzt, und Anforderungen werden sofort wiederholt.