Panduan untuk aplikasi geofencing
Catatan
Layanan MapControl dan peta mengadkan kunci autentikasi peta yang disebut MapServiceToken. Untuk info 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 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 Anda mengatur geofence.
- Jika akses internet tidak memungkinkan, hindari mengkonsumsi daya yang diperlukan untuk pemeriksaan lokasi geofencing.
Pastikan relevansi pemberitahuan geofencing dengan memeriksa stempel waktu dan lokasi saat ini saat peristiwa geofence menunjukkan perubahan pada status Masuk atau Keluar . Lihat Memeriksa stempel waktu dan lokasi saat ini di bawah ini untuk informasi lebih lanjut. (#timestamp) di bawah ini untuk informasi lebih lanjut.
Buat pengecualian untuk mengelola kasus saat perangkat tidak dapat mengakses info lokasi, dan beri 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 pada saat yang bersamaan. Namun, jika aplikasi Anda perlu mendengarkan peristiwa geofence di latar depan dan latar belakang:
- Hubungi metode ReadReports untuk mengetahui apakah suatu peristiwa telah terjadi.
- Tidak terdaftar pendengar peristiwa latar depan Anda ketika aplikasi Anda tidak terlihat oleh pengguna dan mendaftar ulang ketika menjadi 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 kinerja aplikasi yang baik untuk membantu mengurangi penggunaan memori aplikasi dengan menggunakan tidak lebih dari 1000.
Jangan membuat geofence dengan radius 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 kinerja terbaik.
Panduan penggunaan tambahan
Memeriksa stempel waktu dan lokasi saat ini
Saat peristiwa menunjukkan perubahan ke status Masuk atau Keluar , periksa stempel waktu acara dan lokasi Anda saat ini. Berbagai faktor, seperti sistem tidak memiliki sumber daya yang cukup untuk meluncurkan tugas latar belakang, pengguna tidak memperhatikan pemberitahuan, atau perangkat yang siaga (pada Windows), dapat mempengaruhi ketika acara tersebut benar-benar diproses oleh pengguna. Misalnya, urutan berikut dapat terjadi:
- Aplikasi Anda membuat geofence dan memantau geofence untuk acara masuk dan keluar.
- Pengguna memindahkan perangkat ke 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 sampai 10 menit kemudian.
- Selama penundaan 10 menit itu, pengguna telah kembali ke luar geofence.
Dari stempel waktu, Anda dapat mengetahui bahwa tindakan itu terjadi di masa lalu. Dari lokasi saat ini, Anda dapat melihat bahwa pengguna sekarang kembali ke luar geofence. Bergantung pada fungsionalitas aplikasi Anda, Anda mungkin ingin memfilter acara ini.
Pendengar latar belakang dan latar depan
Secara umum, aplikasi Anda tidak perlu mendengarkan peristiwa Geofence baik di latar depan maupun dalam tugas latar belakang secara bersamaan. Metode terbersih untuk menangani kasus di mana Anda mungkin memerlukan keduanya adalah membiarkan tugas latar belakang menangani pemberitahuan. Jika Anda mengatur 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 Anda setiap kali aplikasi Anda tidak terlihat oleh pengguna dan mendaftarkan kembali aplikasi Anda ketika menjadi terlihat lagi. Berikut adalah beberapa contoh kode yang mendaftar untuk acara 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 penangan peristiwa 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 geofences Anda
Sementara 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 akurasinya rendah, membuat geofence kecil tidak akan berguna. Secara umum, disarankan agar Anda tidak membuat geofence dengan radius lebih kecil dari 50 meter. Selain itu, tugas latar belakang geofence hanya berjalan secara berkala pada Windows; jika Anda menggunakan geofence kecil, ada kemungkinan Anda dapat melewatkan acara Enter or Exit sepenuhnya.
Jika aplikasi Anda perlu menggunakan geofence dengan radius kecil, sarankan pengguna untuk menggunakan aplikasi Anda di perangkat dengan radio GPS untuk memastikan kinerja terbaik.
Topik terkait