Freigeben über


Richtlinien für Geofencing-Apps

Befolgen Sie diese bewährten Methoden zum Geofencing in Ihrer App.

Wichtige APIs

Empfehlungen

  • Wenn Ihre App internetzugriff benötigt, wenn ein Geofence-Ereignis auftritt, überprüfen Sie vor dem Erstellen des Geofence-Ereignisses auf Internetzugriff.

    • Wenn die App derzeit keinen Internetzugang hat, können Sie den Benutzer auffordern, eine Verbindung mit dem Internet herzustellen, bevor Sie den Geofence-Modus einrichten.
    • Wenn der Internetzugriff nicht möglich ist, vermeiden Sie den Verbrauch der für die Geofencing-Standortprüfungen erforderlichen Strom.
  • Stellen Sie die Relevanz von Geofencing-Benachrichtigungen sicher, indem Sie den Zeitstempel und den aktuellen Ort überprüfen, wenn ein Geofence-Ereignis Änderungen an einem eingegebenen oder beendeten Zustand anzeigt. Weitere Informationen finden Sie unter "Überprüfen des Zeitstempels und des aktuellen Speicherorts unten".

  • Erstellen Sie Ausnahmen zum Verwalten von Fällen, in dem ein Gerät nicht auf Standortinformationen zugreifen kann, und benachrichtigen Sie den Benutzer bei Bedarf. Standortinformationen sind möglicherweise nicht verfügbar, da Berechtigungen deaktiviert sind, das Gerät kein GPS-Funk enthält, das GPS-Signal blockiert wird oder das WLAN-Signal nicht stark genug ist.

  • Im Allgemeinen ist es nicht erforderlich, gleichzeitig auf Geofence-Ereignisse im Vordergrund und Im Hintergrund zu lauschen. Wenn Ihre App jedoch geofence-Ereignisse sowohl im Vordergrund als auch im Hintergrund überwachen muss:

    • Rufen Sie die ReadReports-Methode auf, um herauszufinden, ob ein Ereignis aufgetreten ist.
    • Heben Sie die Registrierung des Vordergrundereignislisteners auf, wenn Die App für den Benutzer nicht sichtbar ist, und registrieren Sie sie erneut, wenn sie wieder sichtbar wird.

    Codebeispiele und weitere Informationen finden Sie unter "Hintergrund- und Vordergrundlistener ".

  • Verwenden Sie pro App nicht mehr als 1000 Geofences. Das System unterstützt tatsächlich Tausende von Geofences pro App, Sie können eine gute App-Leistung gewährleisten, um die Speicherauslastung der App zu verringern, indem Sie nicht mehr als 1000 verwenden.

  • Erstellen Sie keinen Geofence-Bereich mit einem Radius kleiner als 50 Meter. Wenn Ihre App einen Geofence-Bereich mit einem kleinen Radius verwenden muss, empfehlen Sie Benutzern, Ihre App auf einem Gerät mit einem GPS-Radio zu verwenden, um die beste Leistung sicherzustellen.

Weitere Hinweise zur Verwendung

Überprüfen des Zeitstempels und der aktuellen Position

Wenn ein Ereignis eine Änderung an einem Zustand "Eingegeben" oder "Beendet " angibt, überprüfen Sie sowohl den Zeitstempel des Ereignisses als auch den aktuellen Standort. Verschiedene Faktoren, z. B. das System, das nicht über genügend Ressourcen verfügt, um eine Hintergrundaufgabe zu starten, der Benutzer, der die Benachrichtigung nicht notiert, oder das Gerät, das sich im Standbymodus befindet, kann sich auswirken, wenn das Ereignis tatsächlich vom Benutzer verarbeitet wird. Die folgende Sequenz kann z. B. auftreten:

  • Ihre App erstellt einen Geofence-Code und überwacht den Geofence-Wert auf Enter- und Exit-Ereignisse.
  • Der Benutzer verschiebt das Gerät innerhalb des Geofence-Bereichs, wodurch ein Enter-Ereignis ausgelöst wird.
  • Ihre App sendet dem Benutzer eine Benachrichtigung, dass sie sich jetzt innerhalb des Geofence-Raums befinden.
  • Der Benutzer war ausgelastet und bemerkt die Benachrichtigung erst 10 Minuten später.
  • Während dieser Verzögerung von 10 Minuten hat sich der Benutzer wieder außerhalb des Geofence-Bereichs bewegt.

Aus dem Zeitstempel können Sie feststellen, dass die Aktion in der Vergangenheit aufgetreten ist. Vom aktuellen Standort aus können Sie sehen, dass sich der Benutzer jetzt außerhalb des Geofence-Bereichs befindet. Je nach Funktionalität Ihrer App möchten Sie dieses Ereignis möglicherweise herausfiltern.

Listener für Hintergrund und Vordergrund

Im Allgemeinen muss Ihre App nicht auf Geofence-Ereignisse sowohl im Vordergrund als auch in einer Hintergrundaufgabe gleichzeitig lauschen. Die sauberste Methode für die Behandlung eines Falls, in dem Sie möglicherweise beides benötigen, besteht darin, dass die Hintergrundaufgabe die Benachrichtigungen verarbeiten kann. Wenn Sie sowohl Vordergrund- als auch Hintergrund-Geofence-Listener einrichten, gibt es keine Garantie, die zuerst ausgelöst wird. Daher müssen Sie immer die ReadReports-Methode aufrufen, um herauszufinden, ob ein Ereignis aufgetreten ist.

Wenn Sie sowohl Vordergrund- als auch Hintergrund-Geofence-Listener eingerichtet haben, sollten Sie die Registrierung des Vordergrundereignislisteners aufheben, wenn die App für den Benutzer nicht sichtbar ist, und ihre App erneut registrieren, wenn sie wieder sichtbar wird. Hier ist ein Beispielcode, der für das Sichtbarkeitsereignis registriert wird.

Windows.UI.Core.CoreWindow coreWindow;    

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

Wenn sich die Sichtbarkeit ändert, können Sie die Vordergrundereignishandler 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;
    }
}

Größenanpassung ihrer Geofences

Während GPS die genauesten Positionsinformationen bereitstellen kann, kann Geofencing auch WLAN- oder andere Positionssensoren verwenden, um die aktuelle Position des Benutzers zu bestimmen. Die Verwendung dieser anderen Methoden kann sich jedoch auf die Größe der Geofence-Bereiche auswirken, die Sie erstellen können. Wenn die Genauigkeitsstufe niedrig ist, ist das Erstellen kleiner Geofences nicht hilfreich. Im Allgemeinen wird empfohlen, keinen Geofence-Bereich mit einem Radius von weniger als 50 Metern zu erstellen. Außerdem werden Geofence-Hintergrundaufgaben nur in regelmäßigen Abständen unter Windows ausgeführt; Wenn Sie einen kleinen Geofence verwenden, besteht die Möglichkeit, dass Sie ein Enter- oder Exit-Ereignis vollständig verpassen können.

Wenn Ihre App einen Geofence-Bereich mit einem kleinen Radius verwenden muss, empfehlen Sie Benutzern, Ihre App auf einem Gerät mit einem GPS-Radio zu verwenden, um die beste Leistung sicherzustellen.