Perubahan pada perilaku API untuk akses dan lokasi Wi-Fi

Catatan

Beberapa informasi berkaitan dengan produk yang telah dirilis sebelumnya, yang mungkin dimodifikasi secara substansial sebelum dirilis secara komersial. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.

Penting

Fitur yang dijelaskan dalam topik ini tersedia dalam versi pra-rilis Pratinjau Windows Insider.

Ringkasan perubahan

Untuk mengelola aplikasi mana yang memiliki akses ke lokasi dengan lebih baik, Windows berencana untuk menambahkan kontrol privasi baru.

Saat ini, aplikasi dapat melihat jaringan Wi-Fi untuk ditemukan di sekitar perangkat yang menjalankan aplikasi, dan menggunakan jaringan tersebut untuk menentukan lokasi perangkat yang tepat. Tetapi ke depannya, akses ke API yang menyediakan Pengidentifikasi Set Layanan Dasar (BSSID) yang diperlukan hanya akan dibatasi untuk aplikasi yang telah dikonfigurasi pengguna sebagai diizinkan untuk mengakses lokasi tepat pengguna. Persetujuan untuk menggunakan layanan Lokasi dikonfigurasi di Windows Pengaturan> Privacy & lokasi keamanan.> Ini dapat diatur di tingkat perangkat, tingkat pengguna, atau tingkat aplikasi individual. Setelah perubahan ini diterapkan, jika pengguna belum memberikan persetujuan yang diperlukan, maka sistem akan memicu permintaan satu kali saat pertama kali aplikasi diblokir.

Berikut adalah contoh permintaan sistem:

Contoh perintah sistem

Jika Anda memiliki aplikasi yang memanggil API Wi-Fi baik di wlanapi.h atau namespace Windows.Devices.WiFi , atau NetworkInformation, atau Geolocator, maka topik ini adalah untuk Anda. Ini merinci bagaimana Anda dapat mengoptimalkan perilaku aplikasi Anda untuk meningkatkan pengalaman pengguna.

Kapan perubahan akan terjadi?

Perubahan akan terjadi pada awalnya dalam rilis Windows Insider Preview , dan kemudian dalam rilis fitur Windows (rilis komersial).

  • Dalam rilis Pratinjau Windows Insider, perubahan pertama kali akan berlaku pada Oktober 2023.
  • Anda kemudian akan memiliki hingga rilis fitur Windows berikut pada musim gugur 2024 untuk menguji skenario aplikasi Anda, dan untuk membuat perubahan yang diperlukan. Setelah tanggal tersebut, perangkat Windows akan mulai mendapatkan pembaruan yang berisi perubahan perilaku yang dijelaskan di atas.

Seperti disebutkan, bahkan detail dalam dokumen ini mungkin berubah sebelum fitur dirilis secara komersial.

Bagaimana Anda dapat mempersiapkan perubahan?

Ada beberapa permukaan API yang terpengaruh oleh perubahan ini. Dan, seperti yang akan kami jelaskan dalam sesaat, beberapa API akan mulai mengembalikan kode "akses ditolak" dalam kondisi tertentu. Jadi kami sarankan Anda menguji aplikasi untuk memastikan bahwa semuanya bersifat seperti yang diharapkan setelah aplikasi Anda mulai menerima nilai pengembalian "akses ditolak" tersebut di komputer pengguna Anda.

Singkatnya, kami mendorong Anda sebagai pengembang aplikasi untuk membuat perubahan berikut pada kode aplikasi Anda. Perubahan ini akan membantu pengguna Anda (jika perlu) untuk memberikan akses aplikasi Anda ke lokasi tepat pengguna; dan untuk meningkatkan pengalaman pengguna:

  1. Jangan melakukan panggilan pemindaian Wi-Fi dalam aplikasi Anda kecuali diperlukan secara ketat.
  2. Jika Anda menggunakan pemindaian Wi-Fi untuk tujuan lokasi, ganti pemindaian tersebut dengan panggilan API Lokasi.
  3. Kendalikan kapan perintah sistem muncul sehingga perintah ditampilkan bersama skenario dalam aplikasi Anda.
  4. Buat permintaan aplikasi Anda yang memberi tahu pengguna bahwa mereka perlu menyesuaikan Pengaturan Windows untuk memberikan akses.

API mana yang akan terpengaruh?

Aplikasi Anda akan terpengaruh jika memanggil salah satu API ini:

API Wi-Fi di wlanapi.h Win32 atau di Windows.Devices.WiFi WinRT

  • Jika pengguna belum memberikan persetujuan aplikasi Anda untuk akses lokasi yang tepat, maka pertama kali aplikasi Anda memanggil API yang terpengaruh, perintah sistem satu kali per aplikasi akan ditampilkan jika proses berjalan dalam konteks pengguna dan di luar C:\Windows\System32 folder. Bergantung pada cara aplikasi Anda memanggil API tersebut, perintah dapat bermanifestasi dengan cara yang berbeda di antarmuka pengguna aplikasi Anda.
  • Jika pengguna belum memberikan persetujuan untuk akses lokasi yang tepat, maka API Win32 berikut di header wlanapi.h akan mengembalikan ERROR_ACCESS_DENIED:
  • Jika pengguna belum memberikan persetujuan untuk akses lokasi yang tepat, maka WINDOWS.Devices.WiFi.WiFiAdapter.RequestAccessAsync API akan mengembalikan DeniedBySystem. Dan API lain di namespace Windows.Devices.WiFi namespace Windows.Devices.WiFi akan melempar pengecualian "Akses ditolak".
  • Panggilan ke API ini akan muncul di baki sistem yang digunakan dan aktivitas lokasi terbaru.

WlanRegisterNotification juga terpengaruh, tergantung pada argumen yang Anda berikan padanya. Jika bendera WLAN_NOTIFICATION_SOURCE_MSM diatur di dwNotifSource, maka kemampuan perangkat wiFiControl diperlukan (lihat Deklarasi kemampuan aplikasi). Jika kemampuan tersebut tidak diberikan, maka fungsi mengembalikan ERROR_ACCESS_DENIED. Meminta kemampuan perangkat wiFiControl akan memerlukan persetujuan dari pengguna mengenai akses ke lokasi.

Tindakan yang diperlukan untuk API Wi-Fi

Untuk menciptakan pengalaman yang lebih baik bagi pengguna aplikasi Anda, dan untuk memastikan operasi yang lancar, Anda harus membuat perubahan berikut pada perilaku aplikasi Anda untuk mengontrol kapan permintaan sistem ditampilkan:

  • Jika aplikasi Anda perlu mengetahui lokasi perangkat host, aplikasi harus memanggil API Geolokasi, daripada menggunakan pemindaian Wi-Fi.
  • Untuk menyebabkan permintaan sistem satu kali per aplikasi ditampilkan pada titik yang sesuai dalam pengalaman pengguna, aplikasi Anda harus memanggil WiFiAdapter.RequestAccessAsync. Proses harus berjalan dalam konteks pengguna dan di luar C:\Windows\System32 folder. Panggilan harus selaras dengan tindakan pengguna yang memerlukan Wi-Fi atau lokasi (menghasilkan tarif persetujuan yang lebih tinggi daripada meminta pengguna segera setelah penginstalan).
  • Aplikasi Anda dapat mengkueri status akses lokasinya dengan menggunakan API AppCapability.CheckAccess dengan kemampuan perangkat wiFiControl . Jika akses berikut akan memicu dialog, MAKA API akan mengembalikan AppCapabilityAccessStatus.UserPromptRequired.
  • Untuk diberi tahu dan merespons setiap kali pengguna mengubah persetujuan lokasi, aplikasi Anda harus berlangganan peristiwa AppCapability.AccessChanged .
  • Anda harus menambahkan pengalaman dalam aplikasi untuk skenario yang ditolak aksesnya. Dalam skenario tersebut, aplikasi Anda harus mengalihkan pengguna ke Windows Pengaturan sehingga pengguna dapat mengizinkan aplikasi Anda mengakses lokasi yang tepat. Anda dapat melakukannya dengan meneruskan string "ms-settings:privacy-location" ke metode Launcher.LaunchUriAsync .
  • Aplikasi Anda harus membatasi permintaan ke tingkat yang wajar, sehingga ikon lokasi yang digunakan tidak sering muncul di baki sistem.

Metode WinRT NetworkInformation.GetLanIdentifiers

Tindakan yang diperlukan untuk NetworkInformation

Dengan cara yang sama seperti yang dijelaskan di atas untuk API Wi-Fi, aplikasi Anda harus meminta/meminta akses kueri, memantau perubahan, dan mengarahkan pengguna ke Pengaturan.

Metode WinRT Geolocator.RequestAccessAsync

Tindakan yang diperlukan untuk Geolokasi

Untuk menciptakan pengalaman yang lebih baik bagi pengguna aplikasi Anda, dan untuk memastikan operasi yang lancar, Anda harus membuat perubahan berikut pada perilaku aplikasi Anda untuk mengontrol kapan permintaan sistem ditampilkan:

  • Untuk menyebabkan permintaan sistem satu kali per aplikasi ditampilkan pada titik yang sesuai dalam pengalaman pengguna, aplikasi Anda harus memanggil Geolocator.RequestAccessAsync. Proses harus berjalan dalam konteks pengguna dan di luar C:\Windows\System32 folder. Panggilan biasanya harus selaras dengan tindakan pengguna yang memerlukan lokasi yang tepat (menghasilkan tarif persetujuan yang lebih tinggi daripada meminta pengguna segera setelah penginstalan).
  • Untuk diberi tahu dan merespons setiap kali pengguna mengubah persetujuan lokasi, aplikasi Anda harus berlangganan peristiwa Geolocator.StatusChangedevent , dan mengambil status izin lokasi dari properti StatusChangedEventArgs.Status .
  • Anda harus menambahkan pengalaman dalam aplikasi untuk skenario yang ditolak aksesnya. Dalam skenario tersebut, aplikasi Anda harus mengalihkan pengguna ke Windows Pengaturan sehingga pengguna dapat mengizinkan aplikasi Anda mengakses lokasi yang tepat. Anda dapat melakukannya dengan meneruskan string "ms-settings:privacy-location" ke metode Launcher.LaunchUriAsync .

Cara menguji aplikasi Anda

  1. Gunakan PC Windows yang terdaftar di Program Windows Insider. Ini harus berada di saluran Canary, membangun 25976 atau lebih tinggi.
  2. Nonaktifkan Layanan lokasi di Windows Pengaturan> Privasi & Lokasi keamanan.>
  3. Jalankan aplikasi Anda yang menggunakan informasi lokasi atau Wi-Fi.
  4. Hasil yang diharapkan adalah Anda melihat permintaan sistem yang meminta persetujuan lokasi.

Cara memberikan umpan balik

Kami menghargai dukungan dan umpan balik Anda yang berkelanjutan. Harap kirimkan laporan bug apa pun melalui aplikasi Hub Umpan Balik, dan tunjukkan aplikasi Anda atau detail lainnya dalam deskripsi. Kategorinya adalah Layanan Lokasi Perangkat dan Driver>.

Kategori hub umpan balik