Язык: HTML | XAML

Краткое руководство: обработка уведомлений геозоны на переднем плане (HTML)

Applies to Windows and Windows Phone

В этом разделе описывается пошаговая обработка уведомлений Geofence на переднем плане в приложениях среды выполнения Windows на JavaScript.

Схема создания: каким образом эта тема связана с другими? См.:

Введение

После создания геозон вам потребуется добавить логику для обработки действий при возникновении события геозоны. В зависимости от настройки элемента MonitoredStates вы можете получить событие, если:

  • пользователь вошел в отслеживаемую область;
  • пользователь покинул отслеживаемую область;
  • срок действия геозоны истек или она была удалена. Обратите внимание, что для события удаления фоновое приложение не активируется.

Вы можете прослушивать события непосредственно из приложения, в котором работаете, или зарегистрировать фоновую задачу, чтобы получить фоновое уведомление при возникновении события. Дополнительные сведения о фоновых задачах и геозонах см. в разделах Краткое руководство: прослушивание событий геозоны в фоновом режиме, Краткое руководство: обработка уведомлений геозоны из фоновых задач и Руководство по настройке геозон.

Регистрация событий при изменении состояния геозоны

Чтобы приложение получало уведомление переднего плана об изменении состояния геозоны, вам нужно зарегистрировать обработчик событий. Как правило, этот обработчик настраивается при создании геозоны.


    function initialize() {

    // other initialization logic

    Windows.Devices.Geolocation.Geofencing.GeofenceMonitor.current.addEventListener("geofencestatechanged", onGeofenceStateChanged);
}



Реализация обработчика событий геозоны

Ваш следующий шаг — реализация обработчиков событий. Действия, выполняемые на этом этапе, будут зависеть от целей использования геозоны в приложении.


public async void OnGeofenceStateChanged(GeofenceMonitor sender, object e)
{
    var reports = sender.ReadReports();

    await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
    {
        foreach (GeofenceStateChangeReport report in reports)
        {
            GeofenceState state = report.NewState;

            Geofence geofence = report.Geofence;

            if (state == GeofenceState.Removed)
            {
                // remove the geofence from the geofences collection
                GeofenceMonitor.Current.Geofences.Remove(geofence);
            }
            else if (state == GeofenceState.Entered)
            {
                // Your app takes action based on the entered event

                // NOTE: You might want to write your app to take particular
                // action based on whether the app has internet connectivity.

            }
            else if (state == GeofenceState.Exited)
            {
                // Your app takes action based on the exited event

                // NOTE: You might want to write your app to take particular
                // action based on whether the app has internet connectivity.

            }
        }
    });
}





Связанные разделы

Схемы создания
Схема создания приложений среды выполнения Windows на JavaScript
Проектирование взаимодействия с пользователем в приложениях
Задачи
Краткое руководство: настройка геозоны
Краткое руководство: прослушивание событий геозоны в фоновом режиме
Краткое руководство: обработка уведомлений геозоны из фоновой задачи
Справочные материалы
Geoshape
Geofence
Geolocator
Другие ресурсы
Руководство по настройке геозон

 

 

Показ:
© 2015 Microsoft