Bagikan melalui


Analitik App Center (Windows)

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.

Ikuti bagian Memulai WPF/WinForms atau Memulai UWP/WinUI (berdasarkan platform Anda) jika Anda belum menyiapkan SDK di aplikasi Anda.

Instruksi di halaman ini berfungsi untuk UWP (termasuk Xamarin.Forms dan WinUI), WPF, dan WinForms.

Informasi sesi dan perangkat

Setelah Anda menambahkan App Center Analytics ke aplikasi anda dan memulai SDK, itu akan secara otomatis melacak sesi dan properti perangkat seperti Versi OS, model, dll.

Catatan

Pada aplikasi WinUI, jumlah sesi mungkin lebih rendah daripada pada aplikasi UWP karena spesifik siklus hidupnya.

Kode Negara

Kode negara tidak dilaporkan secara otomatis oleh SDK. Jika Anda ingin melaporkannya secara manual, Anda dapat mengikuti instruksi untuk platform Anda di bawah ini.

UWP

  1. Pastikan Anda mengaktifkan Kemampuan Lokasi untuk aplikasi Anda.
  2. Dapatkan Kunci Autentikasi Bing Maps.
  3. Gunakan kode berikut di mana saja sebelum Anda memanggil AppCenter.Start(... typeof(Analytics) ...);. Sebagai BingMapsToken, gunakan kunci yang diperoleh di langkah 2.
private static async Task SetCountryCode()
{
    // The following country code is used only as a fallback for the main implementation.
    // This fallback country code doesn't reflect the physical device location, but rather the
    // country that corresponds to the culture it uses.
    var countryCode = new GeographicRegion().CodeTwoLetter;
    var accessStatus = await Geolocator.RequestAccessAsync();
    switch (accessStatus)
    {
        case GeolocationAccessStatus.Allowed:
            var geoLocator = new Geolocator
            {
                DesiredAccuracyInMeters = 100
            };
            var position = await geoLocator.GetGeopositionAsync();
            var myLocation = new BasicGeoposition
            {
                Longitude = position.Coordinate.Point.Position.Longitude,
                Latitude = position.Coordinate.Point.Position.Latitude
            };
            var pointToReverseGeocode = new Geopoint(myLocation);
            MapService.ServiceToken = Constants.BingMapsAuthKey;
            var result = await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);
            if (result.Status != MapLocationFinderStatus.Success || result.Locations == null || result.Locations.Count == 0)
            {
                break;
            }

            // The returned country code is in 3-letter format (ISO 3166-1 alpha-3).
            // Below we convert it to ISO 3166-1 alpha-2 (two letter).
            var country = result.Locations[0].Address.CountryCode;
            countryCode = new GeographicRegion(country).CodeTwoLetter;
            break;
        case GeolocationAccessStatus.Denied:
            AppCenterLog.Info(LogTag, "Geolocation access denied. To set country code in App Center, enable location service in Windows 10.");
            break;
        case GeolocationAccessStatus.Unspecified:
            break;
    }
    AppCenter.SetCountryCode(countryCode);
}

Catatan

Agar kode negara ditampilkan pada sesi Analytics, AppCenter.SetCountryCode harus dipanggil sebelum memanggil AppCenter.Start.

WPF/WinForms

Karena platform WPF/WinForms tidak memiliki API Geolokasi, Anda dapat menggunakan kode negara sistem.

using System.Globalization;

private static void SetCountryCode()
{
    // This fallback country code doesn't reflect the physical device location, but rather the
    // country that corresponds to the culture it uses.
    var countryCode = RegionInfo.CurrentRegion.TwoLetterISORegionName;
    AppCenter.SetCountryCode(countryCode);
}

Catatan

Agar kode negara ditampilkan pada sesi Analytics, AppCenter.SetCountryCode harus dipanggil sebelum memanggil AppCenter.Start.

Peristiwa kustom

Anda dapat melacak peristiwa kustom Anda sendiri dengan hingga 20 properti untuk memahami interaksi antara pengguna dan aplikasi Anda.

Setelah Anda memulai SDK, gunakan TrackEvent() 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.

Analytics.TrackEvent("Video clicked", new Dictionary<string, string> {
    { "Category", "Music" },
    { "FileName", "favorite.avi"}
});

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

Analytics.TrackEvent("Video clicked");

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.

Analytics.SetEnabledAsync(false);

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

Analytics.SetEnabledAsync(true);

Anda tidak perlu menunggu panggilan ini untuk melakukan panggilan API lain (seperti IsEnabledAsync) konsisten.

Status ini bertahan di penyimpanan perangkat di seluruh peluncuran aplikasi.

Periksa apakah App Center Analytics diaktifkan

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

bool isEnabled = await Analytics.IsEnabledAsync();

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:
Analytics.EnableManualSessionTracker();
  • Kemudian Anda dapat menggunakan StartSession API setelah AppCenter.Start:
Analytics.StartSession();

Ukuran penyimpanan lokal

Secara default, SDK menyimpan semua log peristiwa 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 akan mulai membuang log lama untuk memberi ruang bagi log baru. Setelah perangkat mendapatkan akses internet kembali, SDK akan mengirim log dalam batch 50 atau setelah setiap 6 detik.

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. Mungkin ada maksimal tiga batch yang dikirim secara paralel.

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:

  • 3 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 ulang.

Logika back-off

  • Pengacakan 50%, coba lagi pertama 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.