Panduan untuk aplikasi geofencing

Catatan

Layanan MapControl dan peta memerlukan kunci autentikasi peta yang disebut MapServiceToken. Untuk informasi selengkapnya tentang mendapatkan dan mengatur kunci autentikasi peta, lihat Meminta kunci autentikasi peta.

API penting

Ikuti praktik terbaik ini untuk geofencing di aplikasi Anda.

Rekomendasi

  • Jika aplikasi Anda akan memerlukan akses internet saat peristiwa Geofence terjadi, periksa akses internet sebelum membuat geofence.

    • Jika aplikasi saat ini tidak memiliki akses internet, Anda dapat meminta pengguna untuk terhubung ke internet sebelum menyiapkan geofence.
    • Jika akses internet tidak memungkinkan, hindari mengonsumsi daya yang diperlukan untuk pemeriksaan lokasi geofencing.
  • Pastikan relevansi pemberitahuan geofencing dengan memeriksa stempel waktu dan lokasi saat ini ketika peristiwa geofence menunjukkan perubahan pada status Masuk atau Keluar . Lihat Memeriksa stempel waktu dan lokasi saat ini di bawah ini untuk informasi selengkapnya. (#timestamp) di bawah ini untuk informasi lebih lanjut.

  • Buat pengecualian untuk mengelola kasus saat perangkat tidak dapat mengakses info lokasi, dan memberi tahu pengguna jika perlu. Info lokasi mungkin tidak tersedia karena izin dimatikan, perangkat tidak berisi radio GPS, sinyal GPS diblokir, atau sinyal Wi-Fi tidak cukup kuat.

  • Secara umum, tidak perlu mendengarkan peristiwa geofence di latar depan dan latar belakang secara bersamaan. Namun, jika aplikasi Anda perlu mendengarkan peristiwa geofence di latar depan dan latar belakang:

    • Panggil metode ReadReports untuk mengetahui apakah suatu peristiwa telah terjadi.
    • Batalkan pendaftaran pendengar peristiwa latar depan Anda saat aplikasi Anda tidak terlihat oleh pengguna dan daftar ulang saat terlihat lagi.

    Lihat Pendengar latar belakang dan latar depan untuk contoh kode dan informasi selengkapnya.

  • Jangan gunakan lebih dari 1000 geofence per aplikasi. Sistem ini sebenarnya mendukung ribuan geofence per aplikasi, Anda dapat mempertahankan performa aplikasi yang baik untuk membantu mengurangi penggunaan memori aplikasi dengan menggunakan tidak lebih dari 1000.

  • Jangan membuat geofence dengan radius yang lebih kecil dari 50 meter. Jika aplikasi Anda perlu menggunakan geofence dengan radius kecil, sarankan pengguna untuk menggunakan aplikasi Anda di perangkat dengan radio GPS untuk memastikan performa terbaik.

Panduan penggunaan tambahan

Memeriksa stempel waktu dan lokasi saat ini

Saat peristiwa menunjukkan perubahan pada status Masuk atau Keluar , periksa stempel waktu peristiwa dan lokasi Anda saat ini. Berbagai faktor, seperti sistem tidak memiliki sumber daya yang cukup untuk meluncurkan tugas latar belakang, pengguna tidak melihat pemberitahuan, atau perangkat yang siaga (di Windows), dapat memengaruhi kapan peristiwa benar-benar diproses oleh pengguna. Misalnya, urutan berikut dapat terjadi:

  • Aplikasi Anda membuat geofence dan memantau geofence untuk peristiwa masuk dan keluar.
  • Pengguna memindahkan perangkat di dalam geofence, menyebabkan peristiwa enter dipicu.
  • Aplikasi Anda mengirimkan pemberitahuan kepada pengguna bahwa mereka sekarang berada di dalam geofence.
  • Pengguna sibuk dan tidak melihat pemberitahuan hingga 10 menit kemudian.
  • Selama penundaan 10 menit itu, pengguna telah pindah kembali ke luar geofence.

Dari tanda waktu, Anda dapat mengetahui bahwa tindakan terjadi di masa lalu. Dari lokasi saat ini, Anda dapat melihat bahwa pengguna sekarang kembali ke luar geofence. Bergantung pada fungsionalitas aplikasi, Anda mungkin ingin memfilter peristiwa ini.

Pendengar latar belakang dan latar depan

Secara umum, aplikasi Anda tidak perlu mendengarkan peristiwa Geofence baik di latar depan maupun di tugas latar belakang secara bersamaan. Metode terbersih untuk menangani kasus di mana Anda mungkin membutuhkan keduanya adalah membiarkan tugas latar belakang menangani pemberitahuan. Jika Anda menyiapkan pendengar geofence latar depan dan latar belakang, tidak ada jaminan yang akan dipicu terlebih dahulu sehingga Anda harus selalu memanggil metode ReadReports untuk mengetahui apakah suatu peristiwa telah terjadi.

Jika Anda telah menyiapkan pendengar geofence latar depan dan latar belakang, Anda harus membatalkan pendaftaran pendengar peristiwa latar depan setiap kali aplikasi Anda tidak terlihat oleh pengguna dan mendaftarkan ulang aplikasi Anda saat aplikasi terlihat lagi. Berikut adalah beberapa contoh kode yang mendaftar untuk peristiwa visibilitas.

    Windows.UI.Core.CoreWindow coreWindow;    

    // This needs to be set before InitializeComponent sets up event registration for app visibility
    coreWindow = CoreWindow.GetForCurrentThread();
    coreWindow.VisibilityChanged += OnVisibilityChanged;
 document.addEventListener("visibilitychange", onVisibilityChanged, false);

Saat visibilitas berubah, Anda kemudian dapat mengaktifkan atau menonaktifkan penanganan aktivitas latar depan seperti yang ditunjukkan di sini.

private void OnVisibilityChanged(CoreWindow sender, VisibilityChangedEventArgs args)
{
    // NOTE: After the app is no longer visible on the screen and before the app is suspended
    // you might want your app to use toast notification for any geofence activity.
    // By registering for VisibiltyChanged the app is notified when the app is no longer visible in the foreground.

    if (args.Visible)
    {
        // register for foreground events
        GeofenceMonitor.Current.GeofenceStateChanged += OnGeofenceStateChanged;
        GeofenceMonitor.Current.StatusChanged += OnGeofenceStatusChanged;
    }
    else
    {
        // unregister foreground events (let background capture events)
        GeofenceMonitor.Current.GeofenceStateChanged -= OnGeofenceStateChanged;
        GeofenceMonitor.Current.StatusChanged -= OnGeofenceStatusChanged;
    }
}
function onVisibilityChanged() {
    // NOTE: After the app is no longer visible on the screen and before the app is suspended
    // you might want your app to use toast notification for any geofence activity.
    // By registering for VisibiltyChanged the app is notified when the app is no longer visible in the foreground.

    if (document.msVisibilityState === "visible") {
        // register for foreground events
        Windows.Devices.Geolocation.Geofencing.GeofenceMonitor.current.addEventListener("geofencestatechanged", onGeofenceStateChanged);
        Windows.Devices.Geolocation.Geofencing.GeofenceMonitor.current.addEventListener("statuschanged", onGeofenceStatusChanged);
    } else {
        // unregister foreground events (let background capture events)
        Windows.Devices.Geolocation.Geofencing.GeofenceMonitor.current.removeEventListener("geofencestatechanged", onGeofenceStateChanged);
        Windows.Devices.Geolocation.Geofencing.GeofenceMonitor.current.removeEventListener("statuschanged", onGeofenceStatusChanged);
    }
}

Mengukur geofence Anda

Meskipun GPS dapat memberikan info lokasi yang paling akurat, geofencing juga dapat menggunakan Wi-Fi atau sensor lokasi lainnya untuk menentukan posisi pengguna saat ini. Tetapi menggunakan metode lain ini dapat memengaruhi ukuran geofence yang dapat Anda buat. Jika tingkat akurasi rendah, membuat geofence kecil tidak akan berguna. Secara umum, disarankan agar Anda tidak membuat geofence dengan radius yang lebih kecil dari 50 meter. Selain itu, tugas latar belakang geofence hanya berjalan secara berkala di Windows; jika Anda menggunakan geofence kecil, ada kemungkinan Anda dapat melewatkan peristiwa Enter atau Exit sepenuhnya.

Jika aplikasi Anda perlu menggunakan geofence dengan radius kecil, sarankan pengguna untuk menggunakan aplikasi Anda di perangkat dengan radio GPS untuk memastikan performa terbaik.