App Center Analytics (macOS)
Důležité
Visual Studio App Center je naplánované k vyřazení na 31. března 2025. I když můžete Visual Studio App Center dál používat, dokud ho úplně nevyřadíte, existuje několik doporučených alternativ, na které můžete migraci zvážit.
Přečtěte si další informace o časových osách a alternativách podpory.
App Center Analytics pomáhá porozumět chování uživatelů a zapojení zákazníků a zlepšit tak vaši aplikaci. 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
Země operátora a název operátora nejsou k dispozici v App Center Analytics pro macOS, ale můžete nastavit zemi operátora podle polohy vašeho 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 v aplikaci ještě nenastavili sadu SDK, postupujte podle části Začínáme .
Jakmile do aplikace přidáte analýzu App Center a spustíte sadu SDK, bude automaticky sledovat relace a vlastnosti zařízení, včetně verze operačního systému, modelu atd., a to 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í odlišně od událostí 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á jsou jenom Wi-Fi, ve výchozím nastavení nehlásí kód země. Pokud chcete nastavit kód země těchto uživatelů, musíte sami načíst polohu uživatele a použít metodu setCountryCode:
v sadě SDK. Doporučujeme, abyste měli na paměti sledování polohy uživatelů a používali 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 .
- Pomocí příkazu získejte aktuální polohu
CLLocationManager
zařízení. - Převeďte umístění na kód země ISO pomocí
CLGeocoder
. - Přepište kód země operátora pomocí metody sady SDK
setCountryCode
.
Pomocí následujícího kódu získejte polohu zařízení a přepište kód země dopravce v aplikaci:
Do AppDelegate přidejte protokol CLLocationManagerDelegate a přidejte vlastnost locationManager:
@interface AppDelegate () <CLLocationManagerDelegate>
@property(nonatomic) CLLocationManager *locationManager;
@end
class AppDelegate: CLLocationManagerDelegate {
private var locationManager: CLLocationManager = CLLocationManager()
}
V metodě didFinishLaunchingWithOptions: nastavte 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 vlastní události s až 20 vlastnostmi , abyste věděli, co se děje v aplikaci, porozuměli akcím uživatelů a zobrazili 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 různý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 událost jenom sledovat, 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 se nastaví jako Kritické a sdílejí stejné úložiště jako události.
- Interval přenosu 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ž se události pozastaví, dají se dál sledovat a ukládat, ale neodesílají se hned. Všechny události, které vaše 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 analýzu App Center znovu povolit, použijte stejné rozhraní API, ale předejte YES
/true
ho jako parametr.
[MSACAnalytics setEnabled:YES];
Analytics.enabled = true
Stav se během spouštění aplikací zachová v úložišti zařízení.
Poznámka
Tuto metodu je možné použít až 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
Tato metoda musí být použita pouze po Analytics
spuštění, bude vždy vrácena 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í toto rozhraní API nebude volat, budou mít všechny odesílající protokoly hodnotu relace s hodnotou 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 použít
startSession
rozhraní API 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 ukládat protokoly, dokud se úložiště zaplní.
Pokud není k dispozici žádné připojení k síti, sada SDK uloží do místního úložiště až 10 MB protokolů. Jakmile se úložiště zaplní, sada SDK začne 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 přenosového intervalu musí být v rozmezí od 6 sekund do 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 o obnovení v síti. Níže je logika opakování:
- Maximálně tři pokusy na požadavek.
- Každý požadavek má svůj vlastní počítač se stavem opakování.
- Všechny přenosové kanály jsou zakázány (až do dalšího procesu aplikace) poté, co jeden požadavek vyčerpá všechny své opakování.
Logika zálohování
- 50% náhodnost, 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é na zapnuto (nebo z wi-fi na mobilní), stavy opakování se resetují a žádosti se okamžitě opakují.