Язык: HTML | XAML

Краткое руководство: ожидание событий геозоны в фоновом режиме (XAML)

Applies to Windows and Windows Phone

В этом разделе приводится пошаговая процедура по настройке фоновой задачи для прослушивания уведомлений элемента Geofence в приложении среды выполнения Windows на C++, C# или Visual Basic.

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

Введение

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

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

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

Для прослушивания события геозоны в фоновом режиме требуется выполнить несколько шагов.

  • Объявите фоновую задачу в манифесте приложения.
  • Зарегистрируйте фоновую задачу в приложении. Если приложению требуется доступ к Интернету, например к облачной службе, вы можете при возникновении события установить для него флаг. Можно установить еще один флаг, чтобы убедиться в присутствии пользователя при инициации события. Таким образом вы будете уверены, что пользователь получил уведомление.
  • В Windows пользователь должен добавить приложение на экран блокировки в параметрах Windows. Если вы тестируете приложение в имитаторе Microsoft Visual Studio, добавьте приложение на экран блокировки за пределами имитатора.
  • Так как приложение выполняется на переднем плане, предложите пользователю разрешить приложению доступ к информации о расположении.

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

В манифесте приложения на вкладке Объявления добавьте объявление для фоновой задачи расположения. Для этого:

  • Добавьте объявление типа Фоновые задачи.
  • Присвойте задаче свойства тип Расположение.
  • Задайте точку входа в приложение для вызова при инициации события.

Регистрация фоновой задачи

Следующий код регистрирует фоновую задачу настройки геозоны: Помните, что при создании геозоны мы проверили разрешения на доступ к информации о расположении. Подробнее: Краткое руководство: настройка геозоны.


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. If the user later adds this application
    // to the lock screen, the background task will be ready to run.
    // 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 application must be added to the lock screen before the background task will run.", NotifyType.ErrorMessage);
        break;

    }
}




  • Applies to Windows Phone

Примечание  В Windows Phone вам потребуется вызвать RequestAccessAsync. При этом на экран не будет выводиться запрос для пользователя и приложению не потребуется прикрепление к экрану блокировки. Этот вызов требуется для предупреждения системы о том, что приложение регистрирует фоновую задачу.

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

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

 

 

Показ:
© 2014 Microsoft