Änderungen am API-Verhalten für WLAN-Zugriff und Standort

Hinweis

Einige Informationen beziehen sich auf Vorabversionen, die vor der kommerziellen Freigabe grundlegend geändert werden können. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.

Wichtig

Das in diesem Thema beschriebene Feature ist in Vorabversionen der Windows Insider Preview verfügbar.

Eine Zusammenfassung der Änderungen

Um besser zu verwalten, welche Apps Zugriff auf den Standort haben, plant Windows, neue Datenschutzsteuerelemente hinzuzufügen.

Derzeit kann eine App die WLAN-Netzwerke anzeigen, die sich in der Nähe des Geräts befinden, auf dem die App ausgeführt wird, und diese Netzwerke verwenden, um den genauen Standort des Geräts zu ermitteln. Der Zugriff auf APIs, welche die erforderlichen Basic Service Set Identifiers (BSSIDs) bereitstellen, ist jedoch nur auf die Apps beschränkt, die der Benutzer so konfiguriert hat, dass er auf den genauen Standort des Benutzers zugreifen darf. Diese Zustimmung zur Verwendung des Standortdienstes ist unter Windows Einstellungen>Datenschutz und Sicherheit>Standort konfiguriert. Sie kann auf Geräteebene, Benutzerebene oder einzelner App-Ebene festgelegt werden. Nachdem diese Änderung implementiert wurde, löst das System, wenn der Benutzer die erforderliche Zustimmung nicht erteilt hat, eine einmalige Eingabeaufforderung aus, wenn eine App zum ersten Mal blockiert wird.

Hier ist ein Beispiel für die Systemaufforderung:

Ein Beispiel für die Systemaufforderung

Wenn Sie über eine App verfügen, die WLAN-APIs entweder in wlanapi.h oder dem Windows.Devices.WiFi-Namespace oder NetworkInformation oder Geolocator aufruft, ist dieses Thema für Sie geeignet. Hier erfahren Sie, wie Sie das Verhalten Ihrer App optimieren können, um die Benutzererfahrung zu verbessern.

Wann werden die Änderungen vorgenommen?

Die Änderungen erfolgen zunächst in einer Windows Insider Preview-Version und später in einer Windows-Featureversion (einer kommerziellen Version).

  • In der Windows Insider Preview-Version werden die Änderungen erst im Oktober 2023 wirksam.
  • Sie müssen dann bis zur folgenden Windows-Featureversion im Herbst 2024 die Szenarien Ihrer App testen und alle erforderlichen Änderungen vornehmen. Nach diesem Datum beginnen Windows-Geräte mit dem Update, das die oben beschriebene Verhaltensänderung enthält.

Wie bereits erwähnt, können sich auch die Details in diesem Dokument ändern, bevor das Feature kommerziell veröffentlicht wird.

Wie können Sie sich auf die Änderungen vorbereiten?

Es gibt mehrere API-Oberflächen, die von dieser Änderung betroffen sind. Und wie wir gleich beschreiben werden, beginnen einige APIs unter bestimmten Bedingungen mit der Rückgabe von „Zugriffsverweigerungscodes“. Daher wird empfohlen, Ihre App zu testen, um sicherzustellen, dass alles erwartungsgemäß vorkommt, sobald ihre App mit dem Empfang dieser „Zugriff verweigert“-Rückgabewerte auf den Computern Ihrer Benutzer beginnt.

Kurz gesagt, wir empfehlen Ihnen als App-Entwickler, die folgenden Änderungen am Code Ihrer App vorzunehmen. Diese Änderungen helfen Ihren Benutzern (falls erforderlich), Ihrer App Zugriff auf den genauen Standort des Benutzers zu gewähren, und um die Benutzererfahrung zu verbessern:

  1. Führen Sie keinen WLAN-Scananruf innerhalb Ihrer App durch, es sei denn, es ist unbedingt erforderlich.
  2. Wenn Sie eine WLAN-Überprüfung für Standortzwecke verwenden, ersetzen Sie diese Überprüfung durch einen Standort-API-Aufruf.
  3. Übernehmen Sie die Kontrolle darüber, wann die Systemaufforderung angezeigt wird, damit die Eingabeaufforderung zusammen mit Ihren In-App-Szenarien angezeigt wird.
  4. Bauen Sie in Ihre App Eingabeaufforderungen ein, die dem Benutzer mitteilen, dass er Windows-Einstellungen anpassen muss, um Zugriff zu gewähren.

Welche APIs sind betroffen?

Ihre App wird betroffen sein, wenn sie eine der folgenden APIs aufruft:

Die WLAN-APIs in Win32's wlanapi.h oder im Windows.Devices.WiFi von WinRT

  • Wenn der Benutzer Ihrer App keine Zustimmung für den genauen Standortzugriff erteilt hat, wird beim ersten Aufruf einer betroffenen API der App eine Eingabeaufforderung angezeigt, wenn der Prozess im Kontext des Benutzers und außerhalb des C:\Windows\System32 Ordners läuft. Je nachdem, wie Ihre App diese APIs aufruft, kann sich die Eingabeaufforderung auf unterschiedliche Weise auf der Benutzeroberfläche Ihrer App manifestieren.
  • Wenn der Benutzer keine Zustimmung zum präzisem Standortzugriff erteilt hat, geben die folgenden Win32-APIs im wlanapi.h-HeaderERROR_ACCESS_DENIED zurück:
  • Wenn der Benutzer keine Zustimmung zu präzisem Standortzugriff erteilt hat, gibt die Windows.Devices.WiFi.WiFiAdapter.RequestAccessAsync-APIdeniedBySystem zurück. Und andere APIs im Windows.Devices.WiFi-Namespace Windows.Devices.WiFi lösen eine Ausnahme „Zugriff verweigert“ aus.
  • Aufrufe dieser APIs werden in der nicht verwendeten Taskleiste und der aktuellen Standortaktivität angezeigt.

WlanRegisterNotification ist auch abhängig von den Argumenten, die Sie an sie übergeben, betroffen. Wenn das WLAN_NOTIFICATION_SOURCE_MSM-Flag in dwNotifSource festgelegt ist, ist die wiFiControl-Gerätefunktion erforderlich (siehe App-Funktionsdeklarationen). Wenn diese Funktion nicht gewährt wird, gibt die Funktion ERROR_ACCESS_DENIED zurück. Das Anfordern der wiFiControl-Gerätefunktion erfordert die Zustimmung des Benutzers bezüglich des Zugriffs auf den Standort.

Aktion erforderlich für die WLAN-APIs

Um eine bessere Benutzererfahrung für die Benutzer Ihrer App zu erzielen und einen reibungslosen Betrieb sicherzustellen, sollten Sie die folgenden Änderungen am Verhalten Ihrer App vornehmen, um zu steuern, wann Systemaufforderungen angezeigt werden:

  • Wenn Ihre App den Standort des Hostgeräts kennen muss, sollte sie die Geolocation-APIs aufrufen, anstatt einen WLAN-Scan zu verwenden.
  • Damit die einmalige Systemaufforderung pro App an einem geeigneten Punkt der Benutzeroberfläche angezeigt wird, sollte Ihre App WiFiAdapter.RequestAccessAsync aufrufen. Der Prozess muss innerhalb des Kontexts des Benutzers und außerhalb des C:\Windows\System32 Ordners ausgeführt werden. Der Aufruf sollte an einer Benutzeraktion ausgerichtet werden, die WLAN oder Standort erfordert (was zu höheren Zustimmungsraten führt als die Aufforderung des Benutzers unmittelbar nach der Installation).
  • Ihre App kann ihren Standortzugriffsstatus mithilfe der AppCapability.CheckAccess-API mit der wiFiControl-Gerätefunktion abfragen. Wenn der folgende Zugriff ein Dialogfeld auslöst, gibt die API AppCapabilityAccessStatus.UserPromptRequired zurück.
  • Um benachrichtigt zu werden und entsprechend zu reagieren, wenn der Benutzer die Standortzustimmung ändert, sollte Ihre App das AppCapability.AccessChanged-Ereignis abonnieren.
  • Sie sollten eine In-App-App-Umgebung für das Szenario „Zugriff verweigert“ hinzufügen. In diesem Szenario sollte Ihre App Benutzer zu den Windows-Einstellungen umleiten, damit der Benutzer Ihrer App den Zugriff auf ihren genauen Standort ermöglichen kann. Dazu übergeben Sie die Zeichenfolge „ms-settings:privacy-location“ an die Launcher.LaunchUriAsync-Methode.
  • Ihre App sollte Anfragen auf ein angemessenes Level drosseln, sodass das Symbol für die Verwendung nicht häufig in der Taskleiste angezeigt wird.

Die WinRT NetworkInformation.GetLanIdentifiers-Methode

Aktion erforderlich für NetworkInformation

Auf die gleiche Weise wie oben für die WLAN-APIs beschrieben, sollte Ihre App Zugriff anfordern, Änderungen überwachen und Benutzer an die Einstellungen weiterleiten.

Die WinRT Geolocator.RequestAccessAsync-Methode

Für Geolocation erforderliche Aktion

Um eine bessere Benutzererfahrung für die Benutzer Ihrer App zu erzielen und einen reibungslosen Betrieb sicherzustellen, sollten Sie die folgenden Änderungen am Verhalten Ihrer App vornehmen, um zu steuern, wann Systemaufforderungen angezeigt werden:

  • Damit die einmalige Systemaufforderung pro App an einem geeigneten Punkt in der Benutzeroberfläche angezeigt wird, sollte Ihre App Geolocator.RequestAccessAsync aufrufen. Der Prozess muss innerhalb des Kontexts des Benutzers und außerhalb des C:\Windows\System32 Ordners ausgeführt werden. Der Aufruf sollte in der Regel an einer Benutzeraktion ausgerichtet werden, die einen genauen Standort erfordert (was zu höheren Zustimmungsraten führt, als den Benutzer unmittelbar nach der Installation aufzufordern).
  • Um benachrichtigt und entsprechend zu reagieren, wenn der Benutzer die Standortzustimmung ändert, sollte Ihre App das Geolocator.StatusChangedevent-Ereignis abonnieren und den Status der Standortberechtigung aus der StatusChangedEventArgs.Status-Eigenschaft abrufen.
  • Sie sollten eine In-App-App-Umgebung für das Szenario „Zugriff verweigert“ hinzufügen. In diesem Szenario sollte Ihre App Benutzer zu den Windows-Einstellungen umleiten, damit der Benutzer Ihrer App den Zugriff auf ihren genauen Standort ermöglichen kann. Dazu übergeben Sie die Zeichenfolge „ms-settings:privacy-location“ an die Launcher.LaunchUriAsync-Methode.

So testen Sie Ihre App

  1. Verwenden Sie einen Windows-PC, der für das Windows-Insider-Programm registriert ist. Es sollte sich auf dem Canary-Kanal befinden, Build 25976 oder höher.
  2. Deaktivieren Sie die Standortdienste unter Windows Einstellungen>Datenschutz und Sicherheit>Standort.
  3. Führen Sie Ihre App, die Standort- oder WLAN-Informationen verwendet, aus.
  4. Das erwartete Ergebnis ist, dass eine Systemaufforderung angezeigt wird, die Sie zur Zustimmung des Standorts auffordert.

So geben Sie Feedback

Wir freuen uns über Ihre fortlaufende Unterstützung und Ihr Feedback. Übermitteln Sie alle Fehlerberichte über die Feedback-Hub-App und geben Sie Ihre App oder andere Details in der Beschreibung an. Die Kategorie ist Geräte und Treiber>Standortdienste.

Feedback-Hubkategorie