Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Değişikliklerin özeti
Hangi uygulamaların konuma erişimi olduğunu daha iyi yönetmek için Windows yeni gizlilik denetimleri eklemeyi planlıyor.
Şu anda bir uygulama, uygulamayı çalıştıran cihazın yakınında bulunabilecek Wi-Fi ağlarını görüntüleyebilir ve cihazın kesin konumunu belirlemek için bu ağları kullanabilir. Ancak bundan sonra, gerekli Temel Hizmet Kümesi Tanımlayıcılarını (BSSID) sağlayan API'lere erişim yalnızca kullanıcının tam konumuna erişmesine izin verilecek şekilde yapılandırdığı uygulamalarla sınırlandırılacaktır. Konum hizmetini kullanmaya ilişkin onay, Windows Ayarları>Gizlilik & güvenlik>Konumiçinde yapılandırılır. Cihaz düzeyinde, kullanıcı düzeyinde veya tek tek uygulama düzeyinde ayarlanabilir. Bu değişiklik uygulandıktan sonra, kullanıcı gerekli onayı vermemişse, bir uygulama ilk kez engellendiğinde sistem tek seferlik bir istem tetikler.
Sistem isteminin bir örneği aşağıda verilmişti:
örneği
wlanapi.h Wi-Fi veya Windows.Devices.WiFi ad alanında veya NetworkInformationveya Geolocatorapi'lerini çağıran bir uygulamanız varsa, bu konu size yöneliktir. Kullanıcı deneyimini geliştirmek için uygulamanızın davranışını nasıl iyileştirebileceğinizi açıklar.
Değişiklikler ne zaman gerçekleşecek?
Değişiklikler başlangıçta bir Windows Insider Preview sürümünde ve daha sonra bir Windows özellik sürümünde (ticari sürüm) gerçekleşir.
- Windows Insider Preview sürümünde, değişiklikler ilk olarak Ekim 2023'te yürürlüğe girecektir.
- Ardından, uygulamanızın senaryolarını test etmek ve gerekli değişiklikleri yapmak için 2024 sonbaharında aşağıdaki Windows özellik sürümüne kadar sahip olacaksınız. Bu tarihten sonra, Windows cihazları yukarıda açıklanan davranış değişikliğini içeren güncelleştirmeyi almaya başlar.
Belirtildiği gibi, özellik ticari olarak yayınlanmadan önce bu belgedeki ayrıntılar bile değişebilir.
Değişikliklere nasıl hazırlanabilirsiniz?
Bu değişiklik tarafından etkilenen birkaç API yüzeyi vardır. Birazdan açıklayacağımız gibi bazı API'ler belirli koşullar altında "erişim reddedildi" kodlarını döndürmeye başlayacaktır. Bu nedenle, uygulamanız kullanıcılarınızın makinelerinde bu "erişim reddedildi" dönüş değerlerini almaya başladıktan sonra her şeyin beklendiği gibi çalıştığından emin olmak için uygulamanızı test etmenizi öneririz.
Kısacası, uygulama geliştiricisi olarak uygulamanızın kodunda aşağıdaki değişiklikleri yapmanızı öneririz. Bu değişiklikler, kullanıcılarınızın (gerektiğinde) uygulamanızın kullanıcının tam konumuna erişmesine yardımcı olur; ve kullanıcı deneyimini geliştirmek için:
- Kesinlikle gerekli olmadıkça uygulamanızda Wi-Fi tarama çağrısı yapmayın.
- Konum amacıyla bir Wi-Fi taraması kullanıyorsanız, bu taramayı bir Konum API'si çağrısıyla değiştirin.
- Sistem isteminin ne zaman görüntüleneceğini kontrol edin, böylece istem uygulama içi senaryolarınızla birlikte görüntülenir.
- Kullanıcının erişim vermek için Windows Ayarları ayarlaması gerektiğini bilmesini sağlayan uygulama istemlerinizi oluşturun.
Hangi API'ler etkilenecek?
Uygulamanız şu API'lerden herhangi birini çağırırsa etkilenir:
- BSSID içeren wlanapi.h üst bilgi Win32 API'leri.
- Windows.Devices.WiFi ad alanında Windows Çalışma Zamanı (WinRT) API'leri.
- WinRT yöntemi Windows.Networking.Connectivity.NetworkInformation.GetLanIdentifiers.
- Windows.Devices.Geolocation.Geolocator.RequestAccessAsync WinRT yöntemi.
- Ayrıca, wiFiControl cihaz özelliğini istemek, konuma erişimle ilgili olarak kullanıcıdan onay gerektirir. bkz. Uygulama özelliği bildirimleri.
Win32'nin wlanapi.h veya WinRT'nin Windows.Devices.WiFi dosyasındaki Wi-Fi API'leri
- Kullanıcı uygulamanıza kesin konum erişimi için onay vermemişse, uygulamanız etkilenen bir API'yi ilk kez aradığında, işlem kullanıcının bağlamında ve
C:\Windows\System32
klasörünün dışında çalışıyorsa uygulama başına bir kez sistem istemi görüntülenir. Uygulamanızın bu API'leri nasıl çağırabileceğine bağlı olarak, istem uygulamanızın kullanıcı arabiriminde farklı şekillerde bildirebilir. - Kullanıcı kesin konum erişimine izin vermemişse, wlanapi.h üst bilgi aşağıdaki Win32 API'leri ERROR_ACCESS_DENIEDdöndürür:
- WlanGetAvailableNetworkList
- WlanGetNetworkBssList
- WlanQueryInterface (OpCode bağımsız değişkeni wlan_intf_opcode_current_connection)
- WlanScan
- Kullanıcı kesin konum erişimine izin vermemişse, Windows.Devices.WiFi.WiFiAdapter.RequestAccessAsync API'sinin DeniedBySystem döndürür. Ayrıca Windows.Devices.WiFi ad alanı Windows.Devices.WiFi ad alanında bulunan diğer API'ler bir "Erişim reddedildi" özel durumu oluşturur.
- Bu API'lere yapılan çağrılar, kullanımdaki sistem tepsisinde ve konum son etkinliğinde görünür.
WlanRegisterNotification, geçirdiğiniz bağımsız değişkenlere bağlı olarak da etkilenir. WLAN_NOTIFICATION_SOURCE_MSM bayrağı dwNotifSourceiçinde ayarlanırsa wiFiControl cihaz özelliği gereklidir (bkz. Uygulama özelliği bildirimleri). Bu özellik verilmezse işlev ERROR_ACCESS_DENIEDdöndürür. wiFiControl cihaz özelliğini istemek, konuma erişimle ilgili olarak kullanıcıdan onay gerektirir.
Wi-Fi API'leri için eylem gerekiyor
Uygulamanızın kullanıcıları için daha iyi bir deneyim oluşturmak ve sorunsuz bir işlem sağlamak için, sistem istemlerinin ne zaman gösterileceğini denetlemek için uygulamanızın davranışında aşağıdaki değişiklikleri yapmanız gerekir:
- Uygulamanızın ana cihazın konumunu bilmesi gerekiyorsa, Wi-Fi taraması kullanmak yerine Coğrafi Konum API'lerini çağırması gerekir.
- Uygulamanızın Wi-Fi SSID'yi bilmesi gerekiyorsa WlanConnectionProfileDetails.GetConnectedSsid API'sini kullanabilir.
- Uygulama başına tek seferlik sistem isteminin kullanıcı deneyiminin uygun bir noktasında görüntülenmesine neden olmak için uygulamanızın wifiadapter.RequestAccessAsync çağrısı yapması gerekir. İşlemin kullanıcının bağlamı içinde ve
C:\Windows\System32
klasörünün dışında çalışıyor olması gerekir. Çağrı, Wi-Fi veya konum gerektiren bir kullanıcı eylemiyle uyumlu olmalıdır (yüklemeden hemen sonra kullanıcıya sorulduğundan daha yüksek onay oranlarıyla sonuçlanır). - Uygulamanız, AppCapability.CheckAccess API'sini wiFiControl cihaz özelliğiyle kullanarak konum erişim durumunu sorgulayabilir. Aşağıdaki erişim bir iletişim kutusunu tetikleyecekse, API appCapabilityAccessStatus.UserPromptRequired döndürür.
- Kullanıcı konum onayını her değiştirdiği zaman bildirim almak ve buna göre yanıt vermek için uygulamanızın appCapability.AccessChanged olayına abone olması gerekir.
- Erişim reddedildi senaryosu için bir uygulama içi uygulama deneyimi eklemelisiniz. Bu senaryoda uygulamanız, uygulamanızın tam konumlarına erişmesine izin verebilmesi için kullanıcıları Windows Ayarları yönlendirmelidir. Bunu yapmak için "ms-settings:privacy-location" dizesini Launcher.LaunchUriAsync yöntemine geçirebilirsiniz.
- Uygulamanızın istekleri makul düzeylere kısıtlaması gerekir, böylece kullanımdaki konum simgesi sistem tepsisinde sık sık görünmez.
WinRT NetworkInformation.GetLanIdentifiers yöntemi
- Kullanıcı kesin konum erişimine izin vermemişse, Windows.Networking.Connectivity.NetworkInformation.GetLanIdentifiers API WLAN ile ilgili bilgileri döndürmez.
- Bu API'ye yapılan çağrılar, kullanımdaki sistem tepsisinde ve konum son etkinliğinde görünür.
NetworkInformation için eylem gerekiyor
Yukarıda Wi-Fi API'leri için açıklandığı gibi uygulamanız erişim istemeli/sorgulamalı, değişiklikleri izlemeli ve kullanıcıları Ayarlar'ne yönlendirmelidir.
WinRT Geolocator.RequestAccessAsync yöntemi
- Kullanıcı kesin konum erişimine izin vermemişse, Windows.Devices.Geolocation.Geolocator.RequestAccessAsync ilk kez uygulama başına bir sistem istemi görüntülenir.
Coğrafi Konum için gereken eylem
Uygulamanızın kullanıcıları için daha iyi bir deneyim oluşturmak ve sorunsuz bir işlem sağlamak için, sistem istemlerinin ne zaman gösterileceğini denetlemek için uygulamanızın davranışında aşağıdaki değişiklikleri yapmanız gerekir:
- Uygulama başına tek seferlik sistem isteminin kullanıcı deneyiminin uygun bir noktasında görüntülenmesine neden olmak için uygulamanızın geolocator.RequestAccessAsync çağrısı yapması gerekir. İşlemin kullanıcının bağlamı içinde ve
C:\Windows\System32
klasörünün dışında çalışıyor olması gerekir. Çağrı genellikle hassas konum gerektiren bir kullanıcı eylemiyle uyumlu olmalıdır (yüklemeden hemen sonra kullanıcıya sorulduğundan daha yüksek onay oranlarıyla sonuçlanır). - Kullanıcı konum onayını her değiştirdiği zaman bildirim almak ve buna göre yanıt vermek için uygulamanızın Geolocator.StatusChangedevent olayına abone olması ve StatusChangedEventArgs.Status özelliğinden konum izin durumunu alması gerekir.
- Erişim reddedildi senaryosu için bir uygulama içi uygulama deneyimi eklemelisiniz. Bu senaryoda uygulamanız, uygulamanızın tam konumlarına erişmesine izin verebilmesi için kullanıcıları Windows Ayarları yönlendirmelidir. Bunu yapmak için "ms-settings:privacy-location" dizesini Launcher.LaunchUriAsync yöntemine geçirebilirsiniz.
Uygulamanızı test etme
- Windows Insider Programıkayıtlı bir Windows bilgisayar kullanın. Kanarya kanalı, derleme 25976 veya üzeri olmalıdır.
- Windows Ayarları>Gizlilik & güvenlik>Konum'nde Konum hizmetlerini kapatın.
- Konum veya Wi-Fi bilgileri kullanan uygulamanızı çalıştırın.
- Beklenen sonuç, sizden konum onayı isteyen bir sistem istemi görmenizdir.
Geri bildirim sağlama
Destek ve geri bildirimlerinizin devamı için teşekkür ederiz. Lütfen Geri Bildirim Merkezi uygulamasıaracılığıyla tüm hata raporlarını gönderin ve uygulamanızı veya diğer ayrıntıları açıklamada belirtin. Kategori Cihazlar ve Sürücüler>Konum Hizmetleri'dir.
geri bildirim merkezi kategorisiFeedback hub category