Megosztás a következőn keresztül:


App Center Analytics (macOS)

Fontos

A Visual Studio App Center 2025. március 31-én megszűnt, kivéve az Elemzési és diagnosztikai funkciókat, amelyek 2026. június 30-ig továbbra is támogatottak lesznek. Tudj meg többet.

Az App Center Analytics segít megérteni a felhasználói viselkedést és az ügyfelek bevonását az alkalmazás fejlesztéséhez. Az SDK automatikusan rögzíti a munkamenetek számát és az eszköz tulajdonságait, például a modellt, az operációs rendszer verzióját stb. Saját egyéni eseményeket is meghatározhat, hogy felmérje az Ön számára fontos dolgokat. Minden rögzített információ elérhető az App Center portálon az adatok elemzéséhez.

Megjegyzés:

A szolgáltató országa és a szolgáltató neve nem érhető el a macOS-hez készült App Center Analyticsben, de beállíthatja a szolgáltató országát az eszköz helyével.

Megjegyzés:

Az App Center 4.0.0 verziójában kompatibilitástörő változások jelentek meg. Kövesse az Áttelepítés az App Center SDK 4.0.0-s és újabb verziójára című szakaszt az App Center korábbi verziókból való áttelepítéséhez.

Ha még nem állította be az SDK-t az alkalmazásban, kövesse az Első lépések szakaszt.

Munkamenet- és eszközinformációk

Miután hozzáadta az App Center Analyticset az alkalmazáshoz, és elindítja az SDK-t, automatikusan nyomon követi a munkameneteket és az eszköztulajdonságokat, beleértve az operációs rendszer verzióját, modelljét és így tovább, további kód nélkül.

Megjegyzés:

Mac Catalyst-alkalmazásokban a munkamenetek mennyisége alacsonyabb lehet, mint az iOS-alkalmazásokban. A Mac Catalyst munkameneteinek nyomon követésére használt életciklus-események másképp viselkednek, mint az iOS-en.

Az SDK automatikusan jelenti a felhasználó országkódját, ha az eszközre mobiladat-modem és SIM-kártya van telepítve. A csak wi-fi rendszerű eszközök alapértelmezés szerint nem jelentenek országkódot. A felhasználók országkódjának beállításához saját maga kell lekérnie a felhasználó helyét, és használnia kell a módszert az setCountryCode: SDK-ban. Azt javasoljuk, hogy ügyeljen a felhasználói helyek nyomon követésére, és használjon alacsony helyfelbontást. Az alábbi minta a következőt használja kCLLocationAccuracyKilometer: .

  • Győződjön meg arról, hogy engedélyezi a Location Services szolgáltatást az eszközön.
  • Az eszköz aktuális helyének lekérése a következővel CLLocationManager: .
  • A hely konvertálása ISO-országkóddá a használatával CLGeocoder.
  • Felülbírálja a szállító országkódját az SDK metódusával setCountryCode .

Az alábbi kóddal lekérheti az eszköz helyét, és felülbírálhatja a szolgáltató országkódját az alkalmazásban:

Adja hozzá a CLLocationManagerDelegate protokollt az AppDelegate-hez, és adja hozzá a locationManager tulajdonságot:

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

Az didFinishLaunchingWithOptions: metódusban konfigurálja a helykezelőt.

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

Megjegyzés:

A requestWhenInUseAuthorization metódus macOS esetén nem érhető el. Távolítsa el a metódus hívásait a macOS-alapú fejlesztés során.

Adja hozzá a delegálási metódusokat:

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

Egyéni események

A saját egyéni eseményeit akár 20 tulajdonsággal is nyomon követheti, hogy tudja, mi történik az alkalmazásban, megismerheti a felhasználói műveleteket, és megtekintheti az összesítéseket az App Center portálon.

Miután elindította az SDK-t, a trackEvent:withProperties metódussal tulajdonságokkal követheti nyomon az eseményeket. Legfeljebb 200 különböző eseménynevet küldhet el. Emellett legfeljebb 256 karakter lehet eseménynévként, eseménytulajdonság neveként és értékeként pedig 125 karakter.

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

Az események tulajdonságai teljesen opcionálisak – ha csak nyomon szeretne követni egy eseményt, használja inkább ezt a mintát:

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

Esemény prioritása és megőrzése

Nyomon követheti az üzletileg kritikus eseményeket, amelyek nagyobb jelentőséggel bírnak, mint más események.

  • A fejlesztők az események prioritását normálként (FlagsNormal az API-ban) vagy kritikusként (FlagsCritical az API-ban) állíthatják be.
  • A kritikusként beállított prioritású eseményeket a rendszer először lekéri a tárolóból, és a normál események előtt küldi el.
  • Ha a helyi tároló megtelt, és új eseményeket kell tárolni. A legalacsonyabb prioritású legrégebbi eseményeket először törli a rendszer, hogy helyet biztosítsunk az újaknak.
  • Ha a tároló tele van kritikus prioritású naplókkal, akkor a Normál prioritású események nyomon követése meghiúsul, mivel az SDK ebben az esetben nem tud helyet biztosítani.
  • Ha az Összeomlások szolgáltatást is használja, az összeomlási naplók kritikusként vannak beállítva, és ugyanazt a tárterületet használják, mint az események.
  • Az átviteli időköz csak normál eseményekre vonatkozik, a kritikus események 3 másodperc után lesznek elküldve.

Az alábbi API-val kritikusként követheti nyomon az eseményeket:

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.

Naplók küldésének szüneteltetése és folytatása

Az eseményátvitel szüneteltetése olyan helyzetekben lehet hasznos, amikor az alkalmazásnak a hálózati sávszélességet kell szabályoznia az üzleti szempontból kritikusabb igények kielégítéséhez. Szüneteltetheti a naplók App Center-háttérrendszerbe való küldését. A szüneteltetéskor az események továbbra is nyomon követhetők és menthetők, de nem küldhetők el azonnal. Az alkalmazás által követett eseményeket, amelyek szünetelnek, csak akkor küldi el, miután a resume hívás megtörtént.

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

Az App Center Analytics engedélyezése vagy letiltása futásidőben

Az App Center Analytics futásidőben engedélyezhető és letiltható. Ha letiltja, az SDK nem gyűjt további elemzési adatokat az alkalmazáshoz.

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

Az App Center Analytics ismételt engedélyezéséhez használja ugyanazt az API-t, de adja át YES/true paraméterként.

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

Az állapot megmarad az eszköz tárolójában az alkalmazásindítások során.

Megjegyzés:

Ezt a módszert csak akkor szabad használni, ha a Analytics már elindult.

Ellenőrizze, hogy engedélyezve van-e az App Center Analytics

Azt is ellenőrizheti, hogy az App Center Analytics engedélyezve van-e.

[MSACAnalytics isEnabled];
Analytics.enabled

Megjegyzés:

Ezt a metódust csak az indítás után, Analytics, lehet használni; mindig vissza fog térni NO vagy false az indítás előtt.

Indítási munkamenet kezelése

Alapértelmezés szerint a munkamenet-azonosító az alkalmazás életciklusától függ. Ha manuálisan szeretné szabályozni az új munkamenet kezdetét, kövesse a következő lépéseket:

Megjegyzés:

Figyelje meg, hogy az Analytics.StartSession() API minden egyes hívása új munkamenetet hoz létre. Ha manuális munkamenet-követő módban ez az API nem lesz meghívva, akkor az összes küldő napló null munkamenet-értékkel fog rendelkezni.

Megjegyzés:

Ügyeljen arra, hogy egy új alkalmazás elindítása után a munkamenet-azonosító újra létre lesz hozva.

  • Az SDK indítása előtt hívja meg a következő metódust:
[MSACAnalytics enableManualSessionTracker];
Analytics.enableManualSessionTracker()
  • Ezután használhatja a startSession API-t a AppCenter.start után.
[MSACAnalytics startSession];
Analytics.startSession()

Helyi tárterület mérete

Alapértelmezés szerint az SDK az összes naplót legfeljebb 10 MB-ig tárolja. A fejlesztők api-val növelhetik a tárterület méretét , és az SDK a tárterület megteltéig tárolja a naplókat.

Nincs internet-hozzáférés

Ha nincs hálózati kapcsolat, az SDK legfeljebb 10 MB naplót ment a helyi tárolóba. Miután megtelt a tárterület, az SDK elkezdi elvetni a régi naplókat, hogy helyet biztosítsunk az új naplóknak. A hálózati kapcsolat visszatérése után az SDK 50 vagy 6 másodpercenként küld naplókat (alapértelmezés szerint).

Megjegyzés:

A rendszer elveti a 25 napnál régebbi naplókat.

Eseménynaplók kötegelése

Az App Center SDK egy 50-ből álló kötegben tölti fel a naplókat, és ha az SDK-nak nincs 50 elküldendő naplója, akkor is 6 másodperc után (alapértelmezés szerint) elküldi a naplókat. Egyszerre legfeljebb három köteg küldhető el. Az átviteli időköz módosítható:

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

Az átviteli időköz értékének 6 másodperc és 86400 másodperc (egy nap) között kell lennie, és ezt a metódust a szolgáltatás elindítása előtt kell meghívni.

Újrapróbálkozási és visszalépési logika

Az App Center SDK támogatja a helyreállítható hálózati hibák visszalépési újrapróbálkozását. Az alábbiakban az újrapróbálkozás logikája látható:

  • Kérésenként maximum három próbálkozás.
  • Minden kérelemnek megvan a saját újrapróbálkozási állapotgépe.
  • Az összes átviteli csatorna le van tiltva (a következő alkalmazásfolyamatig), miután egy kérés kimeríti az összes újrapróbálkozást.

Visszalépési mechanizmus

  • 50% véletlenszerűség, első próbálkozás 5 és 10 másodperc között, második újrapróbálkozás 2,5 és 5 perc között, utolsó próbálkozás 10 és 20 perc között.
  • Ha a hálózat kikapcsolt állapotból bekapcsolt állapotba vált (vagy wi-fi-ról mobilra), az újrapróbálkozási állapotok alaphelyzetbe állítódnak, és a kérések azonnal újra megkísérelnek.