Lauschen auf Geofence-Ereignisse im Hintergrund
Language: HTML | XAML

Lauschen auf Geofence-Ereignisse im Hintergrund (XAML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

In diesem Thema werden Sie durch die Schritte zum Einrichten einer Hintergrundaufgabe geführt, die auf Geofence-Benachrichtigungen in der App lauscht.

Roadmap: Wie hängt dieses Thema mit anderen zusammen? Weitere Informationen:

Einführung

Nachdem Ihre Geofence-Bereiche erstellt wurden, müssen Sie die Logik für das Eintreten eines Geofence-Ereignisses hinzufügen. Je nach eingerichteten MonitoredStates können Sie in folgenden Fällen ein Ereignis empfangen:

  • Der Benutzer hat eine Zielregion betreten.
  • Der Benutzer hat eine Zielregion verlassen.
  • Der Geofence-Bereich ist abgelaufen oder wurde entfernt. Beachten Sie, dass eine Hintergrund-App für ein Entfernungsereignis nicht aktiviert wird.

In diesem Thema wird beschrieben, wie Sie eine Hintergrundaufgabe einrichten, mit der die App benachrichtigt wird, wenn ein Geofence-Ereignis eintritt. Sie können Ereignisse jedoch auch direkt über die App behandeln, wenn sie ausgeführt wird. Weitere Informationen finden Sie unter Behandeln von Geofence-Benachrichtigungen im Vordergrund und Richtlinien für Geofencing.

Die Überwachung auf ein Geofence-Ereignis im Hintergrund erfordert eine Reihe von Schritten:

  • Deklarieren der Hintergrundaufgabe im App-Manifest.
  • Registrieren der Hintergrundaufgabe in Ihrer App. Wenn Ihre App Internetzugriff benötigt, z. B. um auf einen Cloud-Dienst zuzugreifen, können Sie dafür ein Kennzeichen festlegen, wenn das Ereignis ausgelöst wird. Sie können mithilfe eines Kennzeichens auch sicherstellen, dass der Benutzer anwesend ist, wenn das Ereignis ausgelöst wird. So können Sie sicher sein, dass der Benutzer die Benachrichtigung erhält.
  • Fordern Sie den Benutzer bei im Vordergrund ausgeführter App auf, der App Standortberechtigungen zu gewähren.

Durchführen der Registrierung für Ereignisse zur Änderung des Geofence-Zustands

Fügen Sie im App-Manifest auf der Registerkarte Deklarationen eine Deklaration für eine Hintergrundaufgabe zum Standort hinzu. Gehen Sie wie folgt vor:

  • Fügen Sie eine Deklaration vom Typ Hintergrundaufgaben hinzu.
  • Legen Sie den Eigenschaftenaufgabentyp Standort fest.
  • Legen Sie einen Einstiegspunkt für die App fest, der aufgerufen wird, wenn das Ereignis ausgelöst wird.

Registrieren der Hintergrundaufgabe

Mit dem unten angegebenen Code wird die Geofencing-Hintergrundaufgabe registriert. Beachten Sie, dass bei der Erstellung des Geofence-Bereichs eine Überprüfung auf Positionsberechtigungen durchgeführt wurde. Weitere Informationen finden Sie unter Einrichten von Geofence-Bereichen.


async private void RegisterBackgroundTask(object sender, RoutedEventArgs e)
{
    // Get permission for a background task from the user. If the user has already answered once,
    // this does nothing and the user must manually update their preference via PC Settings.
    BackgroundAccessStatus backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync();

    // Regardless of the answer, register the background task. Note that the user can use
    // the Settings app to prevent your app from running background tasks.
    // Create a new background task builder
    BackgroundTaskBuilder geofenceTaskBuilder = new BackgroundTaskBuilder();

    geofenceTaskBuilder.Name = SampleBackgroundTaskName;
    geofenceTaskBuilder.TaskEntryPoint = SampleBackgroundTaskEntryPoint;

    // Create a new location trigger
    var trigger = new LocationTrigger(LocationTriggerType.Geofence);

    // Associate the locationi trigger with the background task builder
    geofenceTaskBuilder.SetTrigger(trigger);

    // If it is important that there is user presence and/or
    // internet connection when OnCompleted is called
    // the following could be called before calling Register()
    // SystemCondition condition = new SystemCondition(SystemConditionType.UserPresent | SystemConditionType.InternetAvailable);
    // geofenceTaskBuilder.AddCondition(condition);

    // Register the background task
    geofenceTask = geofenceTaskBuilder.Register();

    // Associate an event handler with the new background task
    geofenceTask.Completed += new BackgroundTaskCompletedEventHandler(OnCompleted);

    BackgroundTaskState.RegisterBackgroundTask(BackgroundTaskState.LocationTriggerBackgroundTaskName);

    switch (backgroundAccessStatus)
    {
    case BackgroundAccessStatus.Unspecified:
    case BackgroundAccessStatus.Denied:
        rootPage.NotifyUser("This app is not allowed to run in the background.", NotifyType.ErrorMessage);
        break;

    }
}




Verwandte Themen

Aufgaben
Einrichten von Geofence-Bereichen
Behandeln von Geofence-Benachrichtigungen im Vordergrund
Behandeln von Geofence-Benachrichtigungen über eine Hintergrundaufgabe
Weitere Ressourcen
Geolocation-Beispiel für Windows 10
Geolocation-Beispiel für Windows 8.1
Roadmap für Apps mit C# und Visual Basic
Roadmap für Apps mit C++
UX-Design für Apps
Richtlinien für Geofencing
Geoshape
Geofence
Geolocator

 

 

Anzeigen:
© 2017 Microsoft