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

[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]

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

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

Введение

После создания геозон вам потребуется добавить логику для обработки действий при возникновении события геозоны. В зависимости от настройки элемента 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.

            }
        }
    });
}


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

Схемы создания

Схема создания приложений на JavaScript

Проектирование взаимодействия с пользователем в приложениях

Задачи

Настройка геозоны

Прослушивание событий геозоны в фоновом режиме

Обработка уведомлений геозоны из фоновой задачи

Справочные материалы

Geoshape

Geofence

Geolocator

Другие ресурсы

Пример определения географического положения в Windows 10

Пример определения географического положения в Windows 8.1

Руководство по настройке геозон