App Center Analytics (iOS)
Důležité
31. března 2025 je naplánované vyřazení z provozu. I když můžete dál používat Visual Studio App Center, dokud ho úplně vyřadíte, existuje několik doporučených alternativ, na které můžete zvážit migraci.
Přečtěte si další informace o časových osách a alternativách podpory.
App Center Analytics vám pomůže porozumět chování uživatelů a zapojení zákazníků, aby se vaše aplikace zlepšila. Sada SDK automaticky zaznamenává počet relací a vlastnosti zařízení, jako je model, verze operačního systému atd. Můžete definovat vlastní události a měřit věci, na kterých vám záleží. Všechny zachycené informace jsou k dispozici na portálu App Center, kde můžete analyzovat data.
Poznámka
Zařízení s iOSem bez SIM karty neodesílají sestavu s kódem země operátora na portál App Center. Pokud chcete zadat hodnotu země, použijte metodu setCountryCode
k přepsání kódu země z umístění zařízení.
Poznámka
4.0.0
Ve verzi App Center byly zavedeny zásadní změny. Pokud chcete migrovat App Center z předchozích verzí, postupujte podle části Migrace na sadu App Center SDK 4.0.0 a vyšší .
Pokud jste ještě sadu SDK ve své aplikaci nenastavili, postupujte podle části Začínáme .
Jakmile do aplikace přidáte App Center Analytics a spustíte sadu SDK, bude automaticky sledovat relace a vlastnosti zařízení, včetně verze operačního systému, modelu atd. bez dalšího kódu.
Poznámka
V aplikacích Mac Catalyst může být počet relací nižší než u aplikací pro iOS. Události životního cyklu používané ke sledování relací na Mac Catalyst se chovají jinak než události v iOSu.
Sada SDK automaticky hlásí kód země uživatele, pokud má zařízení nainstalovaný mobilní datový modem a SIM kartu. Zařízení, která mají jenom Wi-Fi, ve výchozím nastavení neoznamují kód země. Pokud chcete nastavit kód země těchto uživatelů, musíte načíst polohu uživatele sami a použít metodu setCountryCode:
v sadě SDK. Doporučujeme, abyste dbaly na sledování polohy uživatelů a používaly nízké rozlišení polohy. Následující ukázka používá kCLLocationAccuracyKilometer
.
- Ujistěte se, že jste na zařízení povolili zjišťování polohy .
- Získejte aktuální polohu zařízení pomocí
CLLocationManager
. - Převeďte umístění na kód země ISO pomocí
CLGeocoder
. - Přepište kód země dopravce pomocí metody sady SDK
setCountryCode
.
Pomocí následujícího kódu získáte polohu zařízení a přepíšete kód země dopravce v aplikaci:
Přidejte do AppDelegate protokol CLLocationManagerDelegate a přidejte vlastnost locationManager:
@interface AppDelegate () <CLLocationManagerDelegate>
@property(nonatomic) CLLocationManager *locationManager;
@end
class AppDelegate: CLLocationManagerDelegate {
private var locationManager: CLLocationManager = CLLocationManager()
}
V didFinishLaunchingWithOptions: nastavení metody správce umístění:
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()
Poznámka
Metoda requestWhenInUseAuthorization
není k dispozici pro macOS. Při vývoji pro macOS odeberte volání této metody.
Přidejte metody delegáta:
- (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)")
}
Můžete sledovat své vlastní události s až 20 vlastnostmi , abyste věděli, co se děje ve vaší aplikaci, porozuměli akcím uživatelů a viděli agregace na portálu App Center.
Po spuštění sady SDK použijte metodu trackEvent:withProperties
ke sledování událostí pomocí vlastností. Můžete odeslat až 200 jedinečných názvů událostí. Platí také maximální limit 256 znaků na název události a 125 znaků na název vlastnosti události a hodnotu vlastnosti události.
NSDictionary *properties = @{@"Category" : @"Music", @"FileName" : @"favorite.avi"};
[MSACAnalytics trackEvent:@"Video clicked" withProperties: properties];
Analytics.trackEvent("Video clicked", withProperties: ["Category" : "Music", "FileName" : "favorite.avi"])
Vlastnosti událostí jsou zcela volitelné – pokud chcete jenom sledovat událost, použijte místo toho tuto ukázku:
[MSACAnalytics trackEvent:@"Video clicked"];
Analytics.trackEvent("Video clicked")
Můžete sledovat důležité obchodní události, které mají vyšší důležitost než jiné události.
- Vývojáři můžou nastavit prioritu událostí jako Normální (
FlagsNormal
v rozhraní API) nebo Kritické (FlagsCritical
v rozhraní API). - Události s prioritou nastavenou jako Kritická se nejprve načtou z úložiště a odešlou se před normálními událostmi.
- Když je místní úložiště plné a je potřeba uložit nové události. Nejstarší události s nejnižší prioritou se nejprve odstraní, aby se uvolnilo místo pro nové události.
- Pokud je úložiště plné protokolů s kritickou prioritou, sledování události s normální prioritou selže, protože sada SDK v takovém případě nemůže uvolnit místo.
- Pokud používáte také službu Crashes, protokoly chyb jsou nastavené jako Kritické a sdílejí stejné úložiště jako události.
- Přenosový interval se použije pouze u normálních událostí, kritické události se odešlou po 3 sekundách.
Ke sledování události jako kritické můžete použít následující rozhraní API:
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.
Pozastavení přenosu událostí může být užitečné ve scénářích, kdy aplikace potřebuje řídit šířku pásma sítě pro důležitější obchodní potřeby. Odesílání protokolů do back-endu App Center můžete pozastavit. Když jsou události pozastavené, můžou se dál sledovat a ukládat, ale neodesílají se hned. Všechny události, které aplikace sleduje, když je pozastavená, se odešlou jenom po zavolání resume
.
[MSACAnalytics pause];
[MSACAnalytics resume];
Analytics.pause()
Analytics.resume()
App Center Analytics můžete povolit a zakázat za běhu. Pokud ho zakážete, sada SDK nebude pro aplikaci shromažďovat žádné další analytické informace.
[MSACAnalytics setEnabled:NO];
Analytics.enabled = false
Pokud chcete znovu povolit App Center Analytics, použijte stejné rozhraní API, ale předejte YES
/true
ho jako parametr.
[MSACAnalytics setEnabled:YES];
Analytics.enabled = true
Stav se v úložišti zařízení během spouštění aplikací udržuje.
Poznámka
Tuto metodu je možné použít pouze po Analytics
spuštění.
Můžete také zkontrolovat, jestli je služba App Center Analytics povolená nebo ne.
[MSACAnalytics isEnabled];
Analytics.enabled
Poznámka
Tuto metodu je možné použít pouze po Analytics
spuštění, vždy se vrátí NO
nebo false
před spuštěním.
ID relace ve výchozím nastavení závisí na životním cyklu aplikace. Pokud chcete řídit zahájení nové relace ručně, postupujte podle následujících kroků:
Poznámka
Věnujte pozornost tomu, že každé volání rozhraní API Analytics.StartSession() vygeneruje novou relaci. Pokud se v režimu ručního sledování relací nebude toto rozhraní API volat, budou mít všechny odesílající protokoly hodnotu relace null.
Poznámka
Věnujte pozornost tomu, že po spuštění nové aplikace se ID relace znovu vygeneruje.
- Před spuštěním sady SDK zavolejte následující metodu:
[MSACAnalytics enableManualSessionTracker];
Analytics.enableManualSessionTracker()
- Pak můžete rozhraní API použít
startSession
po :AppCenter.start
[MSACAnalytics startSession];
Analytics.startSession()
Ve výchozím nastavení sada SDK ukládá všechny protokoly až do 10 MB. Vývojáři můžou pomocí rozhraní API zvětšit velikost úložiště a sada SDK bude dál ukládat protokoly, dokud nebude úložiště plné.
Pokud není k dispozici žádné připojení k síti, sada SDK uloží do místního úložiště až 10 MB protokolů. Po zaplnění úložiště začne sada SDK zahazovat staré protokoly, aby uvolnila místo pro nové protokoly. Jakmile se připojení k síti vrátí, sada SDK odesílá protokoly v dávce 50 nebo po každých 6 sekundách (ve výchozím nastavení).
Poznámka
Protokoly starší než 25 dnů se zahodí.
Sada App Center SDK nahrává protokoly v dávce 50, a pokud sada SDK nemá 50 protokolů k odeslání, bude protokoly odesílat i po 6 sekundách (ve výchozím nastavení). Paralelně se můžou odesílat maximálně tři dávky. Interval přenosu lze změnit:
// Change transmission interval to 10 seconds.
[MSACAnalytics setTransmissionInterval:10000];
// Change transmission interval to 10 seconds.
Analytics.transmissionInterval = 10000
Hodnota intervalu přenosu musí být mezi 6 sekund a 86400 sekund (jeden den) a tato metoda musí být volána před spuštěním služby.
Sada App Center SDK podporuje opakované pokusy se zpětným ukončením při obnovitelných chybách sítě. Níže je logika opakování:
- Maximálně 3 pokusy na žádost
- Každý požadavek má svůj vlastní počítač se stavem opakování.
- Všechny přenosové kanály jsou zakázané (až do dalšího procesu aplikace) poté, co jeden požadavek vyčerpá všechny pokusy.
Logika zásady
- 50% randomizace, první opakování mezi 5 a 10 sekund, druhé opakování mezi 2,5 a 5 minut, poslední pokus mezi 10 a 20 minut.
- Pokud se síť přepne z vypnutého na zapnuto (nebo z wi-fi na mobilní zařízení), stavy opakování se resetují a žádosti se okamžitě opakují.