Dela via


App Center Analytics (iOS)

Viktigt!

Visual Studio App Center drogs tillbaka den 31 mars 2025, förutom analys- och diagnostikfunktionerna, som fortsätter att stödjas fram till den 30 juni 2026. Läs mer.

App Center Analytics hjälper dig att förstå användarbeteende och kundengagemang för att förbättra din app. SDK samlar automatiskt in sessionsantal och enhetsegenskaper som modell, operativsystemversion osv. Du kan definiera dina egna anpassade händelser för att mäta saker som är viktiga för dig. All information som samlas in är tillgänglig i App Center-portalen så att du kan analysera data.

Anmärkning

iOS-enheter utan SIM-kort skickar inte rapporten med landskod för operatör till App Center-portalen. Om du vill ange ett landsvärde använder du setCountryCode metoden för att åsidosätta landskoden från enhetens plats.

Anmärkning

I versionen 4.0.0 av App Center introducerades störande ändringar. Följ avsnittet Migrera till App Center SDK 4.0.0 och senare för att migrera App Center från tidigare versioner.

Följ avsnittet Kom igång om du inte har konfigurerat SDK:t i ditt program ännu.

Information om sessioner och enheter

När du lägger till App Center Analytics i din app och startar SDK:n spårar den automatiskt sessioner och enhetsegenskaper, inklusive os-version, modell och så vidare, utan ytterligare kod.

Anmärkning

I Mac Catalyst-appar kan mängden sessioner vara lägre än för iOS-appar. Livscykelhändelser som används för att spåra sessioner på Mac Catalyst beter sig annorlunda än de i iOS.

SDK rapporterar automatiskt en användares landskod om enheten har ett mobilt datamodem och ett SIM-kort installerat. WiFi-enheter rapporterar inte någon landskod som standard. Om du vill ange landskoden för dessa användare måste du hämta användarens plats själv och använda setCountryCode: metoden i SDK. Vårt råd är att vara medveten om vikten av att spåra användarplatser och använda låga upplösningar. Exemplet nedan använder kCLLocationAccuracyKilometer.

  • Se till att du aktiverar Location Services på enheten.
  • Hämta enhetens aktuella plats med hjälp av CLLocationManager.
  • Konvertera platsen till en ISO-landskod med hjälp av CLGeocoder.
  • Åsidosätt landskoden för transportföretaget med hjälp av SDK:ts setCountryCode metod.

Använd följande kod för att hämta enhetens plats och åsidosätta transportföretagets landskod i appen:

Lägg till CLLocationManagerDelegate-protokollet i AppDelegate och lägg till egenskapen locationManager:

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

I metoden didFinishLaunchingWithOptions: ställ in platshanteraren:

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

Anmärkning

Metoden requestWhenInUseAuthorization är inte tillgänglig för macOS. Ta bort anrop till den metoden när du utvecklar för macOS.

Lägg till delegeringsmetoderna

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

Anpassade händelser

Du kan spåra dina egna anpassade händelser med upp till 20 egenskaper för att veta vad som händer i din app, förstå användaråtgärder och se aggregeringarna i App Center-portalen.

När du har startat SDK använder du trackEvent:withProperties metoden för att spåra händelser med egenskaper. Du kan skicka upp till 200 distinkta händelsenamn. Det finns också en maxgräns på 256 tecken per händelsenamn och 125 tecken per händelseegenskapsnamn och händelseegenskapsvärde.

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

Egenskaper för händelser är helt valfria – om du bara vill spåra en händelse använder du det här exemplet i stället:

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

Händelseprioritet och beständighet

Du kan spåra affärskritiska händelser som har högre prioritet än andra händelser.

  • Utvecklare kan ange prioriteten för händelser som Normal (FlagsNormal i API:et) eller Kritisk (FlagsCritical i API:et).
  • Händelser med prioritet som Kritisk hämtas först från lagringen och skickas före normala händelser.
  • När den lokala lagringen är full och nya händelser måste lagras. De äldsta händelserna med lägst prioritet tas bort först för att göra plats för de nya.
  • Om lagringen är full av loggar med kritisk prioritet misslyckas spårningen av en händelse med normal prioritet eftersom SDK:t inte kan göra plats i det fallet.
  • Om du också använder tjänsten Crashs anges kraschloggar som Kritiska och delar samma lagring som händelser.
  • Överföringsintervallet tillämpas endast på normala händelser. Kritiska händelser skickas efter 3 sekunder.

Du kan använda följande API för att spåra en händelse som kritisk:

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.

Pausa och återuppta sändning av loggar

Att pausa händelseöverföringen kan vara användbart i scenarier när appen behöver styra nätverksbandbredden för mer affärskritiska behov. Du kan pausa sändningsloggarna till App Center-serverdelen. När du har pausat kan händelser fortfarande spåras och sparas, men de skickas inte direkt. Händelser som appen spårar när den är pausad skickas bara när du anropar resume.

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

Aktivera eller inaktivera App Center Analytics vid körning

Du kan aktivera och inaktivera App Center Analytics under körning. Om du inaktiverar det samlar SDK inte in mer analysinformation för appen.

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

Om du vill aktivera App Center Analytics igen använder du samma API men skickar YES/true som en parameter.

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

Tillståndet sparas i enhetens lagring mellan programstarter.

Anmärkning

Den här metoden får endast användas efter att Analytics har startats.

Kontrollera om App Center Analytics är aktiverat

Du kan också kontrollera om App Center Analytics är aktiverat eller inte.

[MSACAnalytics isEnabled];
Analytics.enabled

Anmärkning

Den här metoden får endast användas efter att Analytics har blivit startad; den kommer alltid returnera NO eller false före start.

Hantera startsessionen

Som standard beror sessions-ID:t på programmets livscykel. Om du vill styra starten av en ny session manuellt följer du nästa steg:

Anmärkning

Var uppmärksam på att varje anrop av Analytics.StartSession() API genererar en ny session. Om det här API:et inte anropas i läget för manuell sessionsspårare har alla sändande loggar ett null-sessionsvärde.

Anmärkning

Var uppmärksam på att sessions-ID:t kommer att återskapas när ett nytt program startas.

  • Anropa följande metod innan SDK:et startar:
[MSACAnalytics enableManualSessionTracker];
Analytics.enableManualSessionTracker()
  • Sedan kan du använda startSession API:et efter AppCenter.start.
[MSACAnalytics startSession];
Analytics.startSession()

Lokal lagringsstorlek

Som standard lagrar SDK:et alla loggar upp till 10 MB. Utvecklare kan använda ett API för att öka lagringsstorleken och SDK:n fortsätter att lagra loggar tills lagringen är full.

Ingen internetåtkomst

När det inte finns någon nätverksanslutning sparar SDK upp till 10 MB loggar i den lokala lagringen. När lagringen är full börjar SDK:n ta bort gamla loggar för att göra plats för de nya loggarna. När nätverksanslutningen är återställd skickar SDK:n loggar i batchar om 50 eller var sjätte sekund (som standard).

Anmärkning

Loggar som är äldre än 25 dagar tas bort.

Batchbearbetning av händelseloggar

App Center SDK laddar upp loggar i en batch på 50 och om SDK:t inte har 50 loggar att skicka skickas loggarna fortfarande efter 6 sekunder (som standard). Det kan finnas högst tre batchar som skickas parallellt. Överföringsintervallet kan ändras:

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

Överföringsintervallvärdet måste vara mellan 6 sekunder och 8 6400 sekunder (en dag) och den här metoden måste anropas innan tjänsten startas.

Logik för återförsök och avstigning

App Center SDK stöder back-off-återförsök vid återställningsbara nätverksfel. Nedan visas logiken för återförsök:

  • Maximalt tre försök per begäran.
  • Varje begäran har en egen återförsökstillståndsmaskin.
  • Alla överföringskanaler är inaktiverade tills nästa gång appen körs, efter att alla omförsök för en begäran har förbrukats.

Återgångslogik

  • 50% randomisering, försök först igen mellan 5 och 10 sekunder, andra omförsöket mellan 2,5 och 5 minuter, senaste försöket mellan 10 och 20 minuter.
  • Om nätverket växlar från av till på (eller från wi-fi till mobil) återställs återförsökstillstånden och begäranden görs om omedelbart.