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

In diesem Thema erhalten Sie einen Überblick über die bewährten Methoden für das Geofencing beim Erstellen von Windows Store-Apps mit C++, C# oder Visual Basic und XAML.

Listener im Hintergrund und Vordergrund

Im Allgemeinen ist es für die Windows Store-App nicht erforderlich, dass gleichzeitig in der Vordergrund- und Hintergrundaufgabe eine Überwachung auf Geofence-Ereignisse durchgeführt wird. Die sauberste Vorgehensweise zur Behandlung eines Falls, in dem beide erforderlich sind, ist die Behandlung der Benachrichtigungen durch die Hintergrundaufgabe. Wenn Sie Geofencing-Listener sowohl im Vordergrund als auch im Hintergrund einrichten, kann nicht garantiert werden, welcher zuerst ausgelöst wird. Daher müssen Sie immer per Aufruf der ReadReports-Methode ermitteln, ob ein Ereignis eingetreten ist. Wenn Sie Geofencing-Listener sowohl im Vordergrund als auch im Hintergrund eingerichtet haben, empfehlen wir Ihnen außerdem Folgendes: Heben Sie die Registrierung für den Ereignislistener im Vordergrund jeweils auf, wenn die App für Benutzer nicht sichtbar ist, und registrieren Sie die App wieder, sobald sie wieder sichtbar ist. Unten ist Beispielcode angegeben, mit dem die Registrierung für das visibility-Ereignis durchgeführt wird.

    Windows.UI.Core.CoreWindow coreWindow;    
    
    coreWindow = CoreWindow.GetForCurrentThread(); // This needs to be set before InitializeComponent sets up event registration for app visibility
    coreWindow.VisibilityChanged += OnVisibilityChanged;

Wenn sich die Sichtbarkeit ändert, können Sie die Ereignishandler im Vordergrund wie hier gezeigt aktivieren oder deaktivieren.

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;
    }
}

Prüfen des Internetzugriffs

Falls die App beim Eintreten eines Geofence-Ereignisses Internetzugriff benötigt, sollten Sie den Internetzugriff überprüfen, bevor Sie den Geofence erstellen. Falls die App nicht über Internetzugriff verfügt, können Sie Benutzer zum Herstellen einer Internetverbindung auffordern, bevor Sie den Geofence einrichten. Falls der Internetzugriff nicht möglich ist, können Sie den Energieverbrauch vermeiden, der für die Überprüfungen des Geofencing-Standorts anfällt.

Überprüfen des Zeitstempels und des aktuellen Standorts

Wenn ein Ereignis eine Änderung für einen Entered- oder Exited-Zustand anzeigt, sollten Sie sowohl den Zeitstempel des Ereignisses als auch Ihren aktuellen Standort überprüfen. Verschiedene Faktoren, wie der etwaige Standbymodus des Geräts oder das Übersehen der Benachrichtigung durch Benutzer, können sich darauf auswirken, wann das Ereignis letztendlich vom Benutzer verarbeitet wird. Beispielsweise kann es zu folgendem Ablauf kommen:

  • Von der App wird ein Geofence erstellt und auf enter- und exit-Ereignisse überwacht.
  • Der Benutzer bewegt sich mit dem Gerät in den Geofence-Bereich, sodass ein enter-Ereignis ausgelöst wird.
  • Von der App wird eine Benachrichtigung an den Benutzer gesendet, dass er sich jetzt innerhalb des Geofence-Bereichs befindet.
  • Der Benutzer war beschäftigt und sieht die Benachrichtigung erst 10 Minuten später.
  • Während dieser zehnminütigen Verzögerung hat sich der Benutzer wieder aus dem Geofence-Bereich herausbewegt.

Anhand des Zeitstempels können Sie erkennen, dass die Aktion in der Vergangenheit erfolgt ist. Am aktuellen Standort kann abgelesen werden, dass sich der Benutzer wieder außerhalb des Geofence-Bereichs befindet. Je nach Funktion der App kann es ratsam sein, dieses Ereignis herauszufiltern.

Nichtverfügbarkeit von Informationen zum Standort

Beachten Sie, dass vom Gerät in einigen Fällen keine Informationen zum Standort abgerufen werden können, und zwar ggf. auch dann nicht, wenn die Berechtigungen aktiviert sind. Möglicherweise enthält das Gerät keine GPS-Funkeinheit, das GPS-Signal ist blockiert, oder das WLAN-Signal ist nicht stark genug. Stellen Sie sicher, dass diese Fälle von der App problemlos verarbeitet und ggf. Warnungen für Benutzer angezeigt werden.

Festlegen der Größe von Geofence-Bereichen

Per GPS können sehr genaue Informationen zum Standort bereitgestellt werden, aber für das Geofencing können auch WLAN- oder andere Standortsensoren genutzt werden, um die aktuelle Position von Benutzern zu ermitteln. Diese anderen Methoden können sich jedoch auf die Größe der Geofence-Bereiche auswirken, die Sie erstellen können. Wenn es an der Genauigkeit hapert, sollten Sie besser keine kleinen Geofence-Bereiche erstellen. Erstellen Sie für eine App zur Verwendung in geschlossenen Räumen, in denen ein GPS-Signal normalerweise blockiert wird, beispielsweise keine Geofence-Bereiche mit einem Radius von unter 10 Metern. Der Grund ist, dass über eine WLAN-Verbindung keine ausreichend genauen Standortinformationen geliefert werden können. Wenn der Geofence-Bereich als Hintergrundaufgabe ausgeführt wird, sollten Sie ebenfalls einen größeren Geofence-Bereich erstellen, da Hintergrundaufgaben nur in bestimmten Abständen ausgeführt werden. Daher ist es möglich, dass Sie ein Enter- oder Exit-Ereignis vollständig verpassen. Falls für die App kleine Geofence-Bereiche erforderlich sind, sollten Sie Benutzern die Nutzung der App auf einem Gerät mit GPS-Funkeinheit empfehlen, um die bestmögliche Leistung zu erzielen.

Verwandte Themen

Roadmaps

Roadmap für Windows Store-Apps mit C# oder Visual Basic

Roadmap für Windows Store-Apps mit C++

UX-Design für Apps

Aufgaben

Schnellstart: Einrichten von Geofence-Bereichen

Schnellstart: Behandeln von Geofence-Benachrichtigungen im Vordergrund

Schnellstart: Durchführen der Überwachung auf Geofence-Ereignisse im Hintergrund

Schnellstart: Behandeln von Geofence-Benachrichtigungen über eine Hintergrundaufgabe

Referenz

Geoshape

Geofence

Geolocator