Bagikan melalui


Analitik App Center (macOS)

Penting

Visual Studio App Center dijadwalkan untuk dihentikan pada 31 Maret 2025. Meskipun Anda dapat terus menggunakan Visual Studio App Center hingga sepenuhnya dihentikan, ada beberapa alternatif yang direkomendasikan yang dapat Anda pertimbangkan untuk bermigrasi.

Pelajari selengkapnya tentang garis waktu dukungan dan alternatif.

App Center Analytics membantu Anda memahami perilaku pengguna dan keterlibatan pelanggan untuk meningkatkan aplikasi Anda. SDK secara otomatis menangkap jumlah sesi dan properti perangkat seperti model, versi OS, dll. Anda dapat menentukan peristiwa kustom Anda sendiri untuk mengukur hal-hal yang penting bagi Anda. Semua informasi yang diambil tersedia di portal App Center bagi Anda untuk menganalisis data.

Catatan

Negara operator dan nama operator tidak tersedia di App Center Analytics untuk macOS, tetapi Anda dapat mengatur negara operator dengan lokasi perangkat Anda.

Catatan

4.0.0 Dalam versi perubahan pemecahan App Center diperkenalkan. Ikuti bagian Migrasi ke App Center SDK 4.0.0 dan yang lebih tinggi untuk memigrasikan App Center dari versi sebelumnya.

Ikuti bagian Memulai jika Anda belum menyiapkan SDK di aplikasi Anda.

Informasi sesi dan perangkat

Setelah Anda menambahkan App Center Analytics ke aplikasi dan memulai SDK, app Center Analytics akan secara otomatis melacak sesi dan properti perangkat termasuk Versi OS, model, dan sebagainya, tanpa kode tambahan apa pun.

Catatan

Di app Mac Catalyst, jumlah sesi mungkin lebih rendah daripada di app iOS. Peristiwa siklus hidup yang digunakan untuk melacak sesi di Mac Catalyst ber perilaku berbeda dari yang ada di iOS.

SDK secara otomatis melaporkan kode negara pengguna jika perangkat memiliki modem data seluler dan kartu SIM yang diinstal. Perangkat khusus WiFi tidak akan melaporkan kode negara secara default. Untuk mengatur kode negara pengguna tersebut, Anda harus mengambil lokasi pengguna Anda sendiri dan menggunakan setCountryCode: metode di SDK. Saran kami adalah berhati-hatilah dalam melacak lokasi pengguna, dan menggunakan resolusi lokasi yang rendah. Contoh berikut menggunakan kCLLocationAccuracyKilometer.

  • Pastikan Anda mengaktifkan Layanan Lokasi pada perangkat.
  • Dapatkan lokasi perangkat saat ini menggunakan CLLocationManager.
  • Konversikan lokasi menjadi kode negara ISO menggunakan CLGeocoder.
  • Ambil alih kode negara operator menggunakan metode SDK setCountryCode .

Gunakan kode berikut untuk mendapatkan lokasi perangkat dan mengambil alih kode negara operator di aplikasi:

Tambahkan protokol CLLocationManagerDelegate ke AppDelegate dan tambahkan properti locationManager:

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

Di didFinishLaunchingWithOptions: metode siapkan manajer lokasi:

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

Catatan

Metode requestWhenInUseAuthorization ini tidak tersedia untuk macOS. Hapus panggilan ke metode tersebut saat mengembangkan untuk macOS.

Tambahkan metode delegasi:

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

Peristiwa kustom

Anda dapat melacak peristiwa kustom Anda sendiri dengan hingga 20 properti untuk mengetahui apa yang terjadi di aplikasi Anda, memahami tindakan pengguna, dan melihat agregat di portal App Center.

Setelah Anda memulai SDK, gunakan trackEvent:withProperties metode untuk melacak peristiwa Anda dengan properti. Anda dapat mengirim hingga 200 nama peristiwa yang berbeda. Selain itu, ada batas maksimum 256 karakter per nama peristiwa dan 125 karakter per nama properti peristiwa dan nilai properti peristiwa.

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

Properti untuk peristiwa sepenuhnya opsional - jika Anda hanya ingin melacak peristiwa, gunakan sampel ini sebagai gantinya:

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

Prioritas dan persistensi peristiwa

Anda dapat melacak peristiwa penting bisnis yang memiliki kepentingan lebih tinggi daripada peristiwa lain.

  • Pengembang dapat menetapkan prioritas peristiwa sebagai Normal (FlagsNormal di API) atau Kritis (FlagsCritical di API).
  • Peristiwa dengan prioritas ditetapkan sebagai Kritis akan diambil dari penyimpanan terlebih dahulu dan dikirim sebelum peristiwa Normal .
  • Ketika penyimpanan lokal penuh dan peristiwa baru perlu disimpan. Peristiwa tertua dengan prioritas terendah dihapus terlebih dahulu untuk memberi ruang bagi yang baru.
  • Jika penyimpanan penuh dengan log dengan prioritas Kritis , maka melacak peristiwa dengan prioritas Normal akan gagal karena SDK tidak dapat memberi ruang dalam hal ini.
  • Jika Anda juga menggunakan layanan Crash , log crash diatur sebagai Kritis dan berbagi penyimpanan yang sama dengan peristiwa.
  • Interval transmisi hanya diterapkan ke peristiwa Normal , Peristiwa penting akan dikirim setelah 3 detik.

Anda dapat menggunakan API berikut untuk melacak peristiwa sebagai Kritis:

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.

Menjeda dan melanjutkan pengiriman log

Menjeda transmisi peristiwa dapat berguna dalam skenario ketika aplikasi perlu mengontrol bandwidth jaringan untuk kebutuhan yang lebih penting bagi bisnis. Anda dapat menjeda pengiriman log ke backend App Center. Saat dijeda, peristiwa masih dapat dilacak dan disimpan, tetapi tidak segera dikirim. Setiap peristiwa yang dilacak aplikasi Anda saat dijeda hanya akan dikirim setelah Anda memanggil resume.

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

Mengaktifkan atau menonaktifkan Analitik App Center saat runtime

Anda dapat mengaktifkan dan menonaktifkan Analitik App Center saat runtime. Jika Anda menonaktifkannya, SDK tidak akan mengumpulkan informasi analitik lagi untuk aplikasi.

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

Untuk mengaktifkan Analitik App Center lagi, gunakan API yang sama tetapi teruskan YES/true sebagai parameter.

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

Status ini bertahan di penyimpanan perangkat di seluruh peluncuran aplikasi.

Catatan

Metode ini hanya boleh digunakan setelah Analytics dimulai.

Periksa apakah App Center Analytics diaktifkan

Anda juga dapat memeriksa apakah App Center Analytics diaktifkan atau tidak.

[MSACAnalytics isEnabled];
Analytics.enabled

Catatan

Metode ini hanya boleh digunakan setelah Analytics dimulai, metode ini akan selalu kembali NO atau false sebelum dimulai.

Mengelola sesi mulai

Secara default, ID sesi tergantung pada siklus hidup aplikasi. Jika Anda ingin mengontrol awal sesi baru secara manual, ikuti langkah-langkah berikutnya:

Catatan

Perhatikan bahwa setiap panggilan Analytics.StartSession() API akan menghasilkan sesi baru. Jika dalam mode pelacak sesi manual, API ini tidak akan dipanggil maka semua log pengiriman akan memiliki nilai sesi null.

Catatan

Perhatikan bahwa setelah aplikasi baru meluncurkan id sesi akan diregenerasi.

  • Panggil metode berikut sebelum SDK dimulai:
[MSACAnalytics enableManualSessionTracker];
Analytics.enableManualSessionTracker()
  • Kemudian Anda dapat menggunakan startSession API setelah AppCenter.start:
[MSACAnalytics startSession];
Analytics.startSession()

Ukuran penyimpanan lokal

Secara default, SDK menyimpan semua log hingga 10 MB. Pengembang dapat menggunakan API untuk meningkatkan ukuran penyimpanan dan SDK akan terus menyimpan log hingga penyimpanan penuh.

Tidak ada akses internet

Ketika tidak ada konektivitas jaringan, SDK menghemat hingga 10 MB log di penyimpanan lokal. Setelah penyimpanan penuh, SDK mulai membuang log lama untuk memberi ruang bagi log baru. Setelah konektivitas jaringan kembali, SDK mengirim log dalam batch 50 atau setelah setiap 6 detik (secara default).

Catatan

Log yang lebih lama dari 25 hari akan dibuang.

Batching log peristiwa

App Center SDK mengunggah log dalam batch 50 dan jika SDK tidak memiliki 50 log untuk dikirim, SDK masih akan mengirim log setelah 6 detik (secara default). Mungkin ada maksimal tiga batch yang dikirim secara paralel. Interval transmisi dapat diubah:

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

Nilai interval transmisi harus antara 6 detik dan 86400 detik (satu hari) dan metode ini harus dipanggil sebelum layanan dimulai.

Logika coba lagi dan back-off

App Center SDK mendukung percobaan ulang back-off pada kesalahan jaringan yang dapat dipulihkan. Di bawah ini adalah logika coba lagi:

  • Tiga mencoba maksimum per permintaan.
  • Setiap permintaan memiliki mesin status coba lagi sendiri.
  • Semua saluran transmisi dinonaktifkan (hingga proses aplikasi berikutnya) setelah satu permintaan habis semua percobaan ulangnya.

Logika back-off

  • Pengacakan 50%, pertama coba lagi antara 5 dan 10 detik, coba lagi kedua antara 2,5 dan 5 menit, terakhir coba antara 10 dan 20 menit.
  • Jika jaringan beralih dari nonaktif ke aktif (atau dari wi-fi ke seluler), status coba lagi diatur ulang dan permintaan segera dicoba ulang.