Richtlinien für standortabhängige Apps (Windows Store-Apps mit C#/VB/C++ und XAML)

In diesem Thema werden bewährte Methoden für die Erstellung einer vom geografischen Standort abhängigen App beschrieben. Es werden auch Anforderungen erläutert, die Ihre App erfüllen muss, um besonders benutzerfreundlich zu sein.

Roadmap: Wie hängt dieses Thema mit anderen zusammen? Informationen finden Sie unter:

Leistungsrichtlinien

In diesem Abschnitt werden mehrere Möglichkeiten beschrieben, mit denen Sie überprüfen können, ob Ihre App die erforderlichen Standortdaten empfängt, ohne dass dabei unnötige Ressourcen verschwendet werden.

Einmalige Standortanforderungen, wenn keine Updates nötig sind

Einige Apps müssen nur ein Mal Standortdaten abrufen und benötigen keine Standortupdates. Eine App, die einem Foto oder einer E-Mail ein Tag zum geografischen Standort hinzufügt, muss beispielsweise keine Standortaktualisierungsereignisse empfangen. Diese Art App sollte Standortinformationen mit der GetGeopositionAsync-Methode anfordern, wie unter Feststellen des Benutzerstandorts beschrieben.

Abonnieren von Standortereignissen bei Bedarf

Verwenden Sie PositionChanged- und StatusChanged-Ereignisse, um Bewegungen zu erkennen, die über eine bestimmte Grenze hinausgehen, oder für fortlaufende Standortupdates.

Anpassen der Bewegungsgrenze

Bei einigen Apps sind Standortaktualisierungen nur erforderlich, wenn der Benutzer eine große Entfernung zurückgelegt hat. Eine App, die lokale Nachrichten oder aktuelle Wetterinformationen zur Verfügung stellt, benötigt beispielsweise keine Standortaktualisierungen, es sei denn, der derzeitige Standort des Benutzers liegt in einer anderen Stadt. In diesem Fall sollten Sie die für ein Standortaktualisierungsereignis mindestens erforderliche Entfernung anpassen, indem Sie die MovementThreshold-Eigenschaft festlegen. Dadurch werden PositionChanged-Ereignisse herausgefiltert. Diese Ereignisse werden dann nur ausgelöst, wenn die Änderung der Position die Bewegungsgrenze überschreitet. Wenn Sie die MovementThreshold-Eigenschaft festlegen, ändert sich dadurch nicht die Häufigkeit, mit der von der Quelle der Standortdaten (z. B. Windows-Positionssuche oder ein angeschlossenes GPS-Gerät) der Standort berechnet wird.

Festlegen des Berichtsintervalls

Verwenden Sie ein an Ihrer App-Erfahrung ausgerichtetes Berichtsintervall, um die Nutzung von Systemressourcen zu minimieren. Beispielsweise kann bei einer Wetter-App eine Aktualisierung der Daten alle 15 Minuten ausreichen.

Für die meisten Apps ist im Gegensatz zu Apps für die Echtzeitnavigation kein präziser, konstanter Datenstrom mit Standortaktualisierungen erforderlich. Wenn für Ihre App kein möglichst präziser Datenstrom oder nur seltene Aktualisierungen erforderlich sind, legen Sie die ReportInterval-Eigenschaft fest, um die Mindesthäufigkeit der für die App erforderlichen Standortaktualisierungen anzugeben. Die Standortquelle kann dann Energie sparen, indem der Standort nur bei Bedarf berechnet wird.

Bei Apps, die Echtzeitdaten benötigen, sollte ReportInterval auf 0 festgelegt werden. Damit geben Sie an, dass kein Mindestintervall festgelegt ist. Die App empfängt dann in der Häufigkeit Ereignisse, in der die präziseste Standortquelle Ereignisse sendet.

Geräte, die Standortdaten bereitstellen, können das von verschiedenen Apps angeforderte Berichtintervall nachverfolgen und Datenberichte im kürzesten angeforderten Intervall bereitstellen. Dann empfängt die App, die den höchsten Bedarf an Präzision hat, die benötigten Daten. Es ist deshalb möglich, dass die Positionssuche häufiger als von der App angefordert Updates generiert, falls eine andere App häufigere Updates angefordert hat.

Hinweis  Es ist nicht gewährleistet, dass die Standortquelle die Anforderung für das angegebene Berichtintervall berücksichtigt. Nicht alle Geräte für die Positionssuche berücksichtigen das Berichtintervall, sie sollten es jedoch dennoch angeben.

Festlegen der DesiredAccuracy-Eigenschaft

Um Energie zu sparen, sollte die DesiredAccuracy-Eigenschaft festgelegt werden. Damit wird angegeben, ob für die App präzise Daten erforderlich sind. Falls keine Apps präzise Daten benötigen, wird vom System Energie gespart, indem keine GPS-Anbieter aktiviert werden.

Legen Sie DesiredAccuracy auf HIGH fest, wenn das GPS Daten erfassen soll.

Bei Anwendungen, die Standortinformationen ausschließlich für gezielte Werbung verwenden, sollte DesiredAccuracy auf Default festgelegt werden. Außerdem wird empfohlen, ein Einzelaufrufmuster zu verwenden, um den Energieverbrauch möglichst gering zu halten.

Verwenden der Geocoordinate.Accuracy-Eigenschaft

Apps mit bestimmten Anforderungen hinsichtlich Genauigkeit, z. B. Navigations-Apps, sollten mit der Geocoordinate.Accuracy-Eigenschaft ermitteln, ob die verfügbaren Standortdaten die Anforderungen der App erfüllen.

Berücksichtigen der Startverzögerung

Beim ersten Anfordern von Standortdaten durch die App tritt während des Startens des Anbieters vielleicht eine kurze Verzögerung von ein bis zwei Sekunden auf. Sie sollten diese Verzögerung beim Design der App-Benutzeroberfläche berücksichtigen. Beispielsweise können Sie verhindern, dass andere Aufgaben bis zum Abschluss des Aufrufs von GetGeopositionAsync blockiert werden.

Berücksichtigen von Hintergrundverhalten

Falls eine Windows Store-App für Windows 8 inaktiv und im Hintergrund angehalten ist, empfängt sie keine Standortaktualisierungsereignisse. Beachten Sie dies, wenn die Anwendung Standortaktualisierungen durch Protokollierung nachverfolgt. Wenn die App wieder aktiv ist, empfängt sie nur neue Ereignisse. Es werden keine Aktualisierungen abgerufen, die während ihrer Inaktivität stattfanden.

Verbindungsstandby

Wenn sich der PC im Verbindungsstandby befindet, können Geolocator-Objekte immer instanziiert werden. Das Geolocator-Objekt findet jedoch keine zu aggregierenden Sensoren, sodass für Aufrufe von GetGeopositionAsync nach 7 Sekunden ein Timeout auftritt. PositionChanged-Ereignislistener werden niemals aufgerufen, und StatusChanged-Ereignislistener werden einmal mit dem NoData-Status aufgerufen.

Effiziente Verwendung von Roh- und Fusion-Sensoren

Windows 8 unterstützt zwei Sensortypen: Rohsensoren und Fusion-Sensoren. Zu den Rohsensoren zählen Beschleunigungsmesser, Gyrometer und Magnetometer. Fusion-Sensoren beinhalten den Ausrichtungssensor, Neigungsmesser und Kompass. Fusion-Sensoren empfangen ihre Daten anhand von Kombinationen der Rohsensoren. Mit Ausnahme des Magnetometers können die Windows-Runtime -APIs auf all diese Sensoren zugreifen. Fusion-Sensoren arbeiten zwar genauer und stabiler als Rohsensoren, sie verbrauchen jedoch auch mehr Strom. Sie sollten immer die richtigen Sensoren für den richtigen Zweck verwenden. Weitere Informationen finden Sie unter Auswählen des richtigen Sensors.

Richtlinien für die Benutzeroberfläche

Dieser Abschnitt enthält Richtlinien, mit denen Sie sicherstellen können, dass die Standortfunktionen in Ihrer App den Erwartungen der Benutzer entsprechen.

Ausschließliche Verwendung des Standortobjekts, wenn die App Standortdaten benötigt

Beim ersten Zugriff der App auf den Standort wird die Zustimmungsaufforderung ausgelöst. Das geschieht, wenn eine App zum ersten Mal GetGeopositionAsync aufruft oder einen Ereignishandler für das PositionChanged-Ereignis registriert. Falls der primäre Verwendungszweck einer App keinen Zugriff auf Standortdaten ermöglicht, verwirrt eine entsprechende Zustimmungsaufforderung den Benutzer nach Starten der App möglicherweise nur. Orientieren Sie sich an den folgenden Richtlinien, um ein hohes Maß an Benutzerfreundlichkeit zu gewährleisten:

RichtlinieBeispiel

Wenn die Verwendung des geografischen Standorts für Ihre App nicht zwingend erforderlich ist, greifen Sie erst dann auf das Gerät zu, wenn dies vom Benutzer ausdrücklich angefordert wird.

Eine App für ein soziales Netzwerk besitzt eine Schaltfläche, um sich mit dem eigenen Standort anzumelden. Diese App sollte erst dann auf die Standortinformationen zugreifen, wenn der Benutzer auf die entsprechende Schaltfläche klickt.

Wenn der Zugriff auf Standortinformationen für die Hauptfunktion einer App erforderlich ist, kann der Zugriff bereits beim Start der App erfolgen.

Bei einer App, mit der die Position des Benutzers auf einer Karte angegeben wird, stellen Standortinformationen die Hauptfunktion dar. In diesem Fall ist es in Ordnung, wenn die App den Standort gleich nach dem Start verwendet, um sofort die Position des Benutzers anzuzeigen.

 

Verwenden des UI-Hauptthreads für die erste Verwendung des Geolocator-Objekts

Die erste Verwendung des Geolocator-Objekts muss im Hauptthread der Benutzeroberfläche (User Interface, UI) erfolgen, sodass dem Benutzer eine Zustimmungsaufforderung angezeigt werden kann. Bei der ersten Verwendung des Geolocator-Objekts kann es sich um den ersten Aufruf von GetGeopositionAsync handeln oder um die erste Registrierung eines Handlers für das PositionChanged-Ereignis. Die Zustimmungsaufforderung wird unter Richtlinien für die Verwendung von sensiblen Geräten näher erläutert. Das bedeutet, dass in einer App mit JavaScript die erste Verwendung des Geolocator-Objekts nicht in einem Aktivierungshandler erfolgen sollte.

Informieren des Benutzers über die Verwendung von Standortdaten

Informieren Sie den Benutzer darüber, wie die erfassten Standortdaten von Ihrer App verwendet werden.

Breitstellen von UI für das manuelle Aktualisieren des Standorts

Ihre App sollte ein UI-Steuerelement anbieten, mit dem der Benutzer den momentanen Standort aktualisieren kann.

Anzeigen des Status beim Warten auf den Empfang von Standortdaten

Während die App auf den Empfang von Standortdaten wartet, sollte sie eine Statusleiste anzeigen. Weitere Informationen zur Verwendung eines Statussteuerelements finden Sie unter Schnellstart: Hinzufügen von Statussteuerelementen.

Erkennen von Änderungen der Standorteinstellungen

Der Benutzer kann die Standortbestimmung mit dem Charm "Einstellungen" oder über die Systemsteuerung deaktivieren. Weitere Informationen zur UI zum Ändern der Standorteinstellungen finden Sie unter Standorteinstellungen. Designanweisungen zum Behandeln von Benutzeränderungen in den Einstellungen finden Sie unter Richtlinien für die Verwendung sensibler Geräte.

  • Gehen Sie wie folgt vor, um das Aktivieren bzw. Deaktivieren der Standortbestimmung durch den Benutzer zu erkennen:
    • Behandeln Sie das StatusChanged-Ereignis. Die Status-Eigenschaft des Arguments für das StatusChanged-Ereignis weist den Wert Disabled auf, wenn der Benutzer die Standortdienste deaktiviert.
    • Überprüfen Sie die von GetGeopositionAsync zurückgegebenen Fehlercodes. Wenn die Positionsdienste vom Benutzer deaktiviert wurden, tritt bei Aufrufen von GetGeopositionAsync der Fehler ACCESS_DENIED auf, und die LocationStatus-Eigenschaft weist den Wert Disabled auf.
  • Wenn Standortdaten für Ihre App unbedingt notwendig sind, beispielsweise in einer Karten-App, sollten Sie Folgendes sicherstellen:

Beachten Sie, dass die Standort-API Daten zurückgibt, sobald diese verfügbar sind. Zunächst wird unter Umständen ein Standort mit einem größeren Fehlerradius zurückgegeben. Dieser wird dann nach und nach mit exakteren Informationen aktualisiert, wenn diese zur Verfügung stehen. Apps, die den Standort des Benutzers anzeigen, aktualisieren den Standort in der Regel, wenn exaktere Informationen verfügbar werden.

Anzeigen passender Fehlermeldungen oder Dialogfelder, wenn Positionsdienste deaktiviert oder nicht verfügbar sind

Zeigen Sie dem Benutzer entsprechende Fehlermeldungen an, wenn der Zugriff auf die Standortdaten vom Benutzer verweigert wird oder die Daten für die App nicht verfügbar sind. Wenn Sie den Benutzer benachrichtigen müssen, dass die Positionsdienste deaktiviert sind, sollten Sie die unter Richtlinien für die Verwendung von sensiblen Geräten aufgeführten sowie die folgenden Richtlinien beachten:

  • Es wird empfohlen, folgende Meldung anzuzeigen: "Ihre Positionsdienste sind derzeit deaktiviert. Mit dem Charm " Einstellungen" können Sie die Standortdienste wieder aktivieren."
  • Lassen Sie die Fehlermeldungen nicht den Fluss der App stören. Wenn Standortdaten für Ihre App nicht sind, zeigen Sie die Meldung als Inlinetext an. Apps für Social Networking oder Spiele-Apps gehören zu dieser Kategorie.
  • Wenn Standortdaten für die Funktionalität der App unentbehrlich sind, zeigen Sie die Meldung als Flyout oder Dialogfeld an. Karten- oder Navigations-Apps gehören zu dieser Kategorie.
  • Versuchen Sie nicht, den Charm " Einstellungen" programmgesteuert anzuzeigen.

Beispiele für Fehlermeldungen, die als Inlinetext, Dialogfeld oder Flyout angezeigt werden, finden Sie unter Richtlinien für die Verwendung sensibler Geräte und im Abschnitt Fehler unter Gestalten der Benutzeroberfläche.

Löschen zwischengespeicherter Standortinformationen und Freigeben des Geolocator-Objekts, wenn der Zugriff auf die Standortinformationen vom Benutzer deaktiviert wird

Geben Sie das Geolocator-Objekt frei, wenn der Zugriff auf die Standortinformationen vom Benutzer mit dem Charm " Einstellungen" oder in den Einstellungen des Computers deaktiviert wurde. Die App empfängt ACCESS_DENIED-Ergebnisse für alle standortbezogenen API-Aufrufe.

Wenn Ihre App Standortdaten (zwischen)speichert, löschen Sie zwischengespeicherte Daten, wenn der Benutzer den Zugriff auf seinen Standort zurücknimmt.

Stellen Sie eine Alternativmöglichkeit zur Angabe des Standorts bereit, wenn keine diesbezüglichen Informationen für Positionsdienste verfügbar sind.

Reaktivieren des Standortzugriffs über UI

Ihre App sollte UI zum Reaktivieren der Positionsdienste bereitstellen, z. B. eine Aktualisierungsschaltfläche, die das Geolocator-Objekt erneut instantiiert und versucht, den Standort wieder abzurufen.

  • Wenn der Benutzer den Standortzugriff nach dem Deaktivieren erneut aktiviert, wird die App nicht benachrichtigt. Die Status-Eigenschaft ändert sich nicht, und es findet kein StatusChanged-Ereignis statt. Ihre App sollte ein neues Geolocator-Objekt erstellen und GetGeopositionAsync aufrufen, um zu versuchen, aktualisierte Standortdaten zu erhalten, oder PositionChanged-Ereignisse erneut abonnieren. Wenn aus dem Status hervorgeht, dass die Standortbestimmung erneut aktiviert wurde, müssen Sie alle UI-Elemente entfernen, die die App zuvor angezeigt hat, um den Benutzer auf die deaktivierte Standortbestimmung hinzuweisen. Reagieren Sie entsprechend auf den neuen Status.
  • Ihre App sollte außerdem erneut versuchen, Standortdaten abzurufen, wenn die Aktivierung erfolgt, wenn der Benutzer explizit versucht, eine Funktion mit erforderlichem Standortzugriff zu verwenden, oder zu jedem anderen dem Szenario angemessenen Zeitpunkt.

Richtlinien für die grafische Darstellung des Standorts

Sorgen Sie dafür, dass die App die Genauigkeitsparameter verwendet, die über die Positions-API empfangen werden, um den aktuellen Standort des Benutzers auf der Karte deutlich anzuzeigen. Es gibt drei Hauptbereiche für die Genauigkeit: einen Fehlerradius von ungefähr 10 Metern, einen Fehlerradius von ungefähr 100 Metern und einen Fehlerradius von mehr als einem Kilometer. Durch die Verwendung der Genauigkeitsinformationen können Sie sicherstellen, dass die App Standorte im Kontext der verfügbaren Daten präzise anzeigt.

  • Bei einer Genauigkeit von ungefähr 10 Metern (GPS-Auflösung) kann der Standort durch einen Punkt oder eine Stecknadel auf der Karte angegeben werden. Bei dieser Genauigkeit können auch die Breiten- und Längengradkoordinaten und die Straße angezeigt werden.

    Beispiel für eine Karte mit einer GPS-Genauigkeit von ungefähr 10 Metern.

  • Bei einer Genauigkeit zwischen 10 und 500 Metern (ungefähr 100 Meter) wird der Standort üblicherweise durch WiFi-Auflösung empfangen. In diesem Fall empfiehlt es sich, dass die App einen Fehlerradius anzeigt. Bei Apps, die Wegbeschreibungen anzeigen, für die ein Zentrierpunkt erforderlich ist, kann ein solcher Punkt mit einem ihn umgebenden Fehlerradius angezeigt werden.

    Beispiel für eine Karte mit einer WiFi-Genauigkeit von ungefähr 100 Metern.

  • Wenn die zurückgegebene Genauigkeit einen Kilometer übersteigt, werden Standortinformationen vermutlich durch die Auflösung auf IP-Ebene empfangen. Dieser Grad an Genauigkeit ist häufig zu niedrig, um einen bestimmten Punkt auf einer Karte präzise anzuzeigen. In der App sollten keine grafischen Standortdarstellungen wie Stecknadeln oder Kreise verwendet werden. Zoomen Sie stattdessen bis auf Stadtebene oder bis zum je nach Fehlerradius geeigneten Gebiet (beispielsweise auf Regionsebene) in die Karte.

    Beispiel für eine Karte mit einer WiFi-Genauigkeit von ungefähr einem Kilometer.

Wenn die Standortgenauigkeit von einem Genauigkeitsbereich zu einem anderen wechselt, sollte der Übergang zwischen den verschiedenen grafischen Darstellungen ansprechend sein. Dies kann folgendermaßen erfolgen:

  • Gestalten Sie die Übergangsanimation gleichmäßig. Der Übergang sollte schnell und flüssig erfolgen.
  • Warten Sie auf mehrere aufeinander folgende Meldungen, um die Änderung der Genauigkeit zu bestätigen und auf diese Weise unerwünschtes und zu häufiges Zoomen zu vermeiden.

Richtlinien für die Textdarstellung des Standorts

Bei einigen Arten von Apps, beispielsweise Wetter-Apps oder Apps, die lokale Informationen bereitstellen, ist es nötig, den Standort für die verschiedenen Genauigkeitsbereiche in Textform darzustellen. Sorgen Sie dafür, dass der Standort deutlich und nur mit dem Grad an Genauigkeit angezeigt wird, der durch die Daten gestützt wird.

  • Bei einer Genauigkeit von ungefähr 10 Metern (GPS-Auflösung) sind die empfangenen Standortdaten ziemlich genau und können daher bis zur Ebene des Stadtteilnamens angegeben werden. Die Namen von Städten, Bundesländern und Ländern/Regionen können ebenfalls verwendet werden.
  • Bei einer Genauigkeit von ungefähr 100 Metern (WiFi-Auflösung) sind die empfangenen Standortdaten halbwegs genau, und es wird empfohlen, Informationen bis hin zur Ebene des Städtenamens anzugeben. Vermeiden Sie es, Stadtteilnamen anzugeben.
  • Zeigen Sie bei einer Genauigkeit von mehr als einem Kilometer (IP-Auflösung) nur das Bundesland oder den Namen des Landes/der Region an.

Überlegungen zum Datenschutz

Der geografische Standort eines Benutzers gehört zu den personenbezogenen Informationen (Personally Identifiable Information, PII). Die folgende Website enthält Richtlinien zum Datenschutz.

Verwandte Themen

Geolocation-Beispiel
Windows.Devices.Geolocation
Richtlinien für die Verwendung von sensiblen Geräten
Roadmap für das Erstellen von Apps mit C#, C++ oder VB

 

 

Anzeigen:
© 2014 Microsoft