Manipular notificações de cerca geográfica em primeiro plano (HTML)

[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]

Este tópico guia você pelas etapas de manipulação de notificação de Geofence em primeiro plano em seu aplicativo.

Mapa: como este tópico está relacionado aos outros? Veja:

Introdução

Após a criação das cercas geográficas, você tem que adicionar a lógica para agir quando ocorrer um evento de cerca geográfica. Dependendo dos MonitoredStates configurados, você pode receber um evento quando:

  • O usuário entrar em uma região de interesse.
  • O usuário sair de uma região de interesse.
  • A cerca geográfica expirar ou for removida. Observe que um aplicativo em segundo plano não é ativado para um evento de remoção.

Você pode escutar eventos diretamente de seu aplicativo em execução ou registrar uma tarefa em segundo plano, para que você receba uma notificação em segundo plano quando ocorrer um evento. Para saber mais sobre tarefas em segundo plano e cercas geográficas, veja Escutar eventos de cerca geográfica em segundo plano, Manipular notificações de cerca geográfica de uma tarefa em segundo plano e Diretrizes para cerca geográfica.

Registrar eventos de alteração de estado de cerca geográfica

Para seu aplicativo receber uma notificação em primeiro plano sobre a alteração de estado de uma cerca geográfica, registre um manipulador de eventos. Normalmente, isso é configurado quando você cria a cerca geográfica.

    function initialize() {

    // other initialization logic

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

Implementar o manipulador de eventos de cerca geográfica

A próxima etapa é implementar os manipuladores de eventos. A ação executada aqui depende do motivo pelo qual seu aplicativo usa a cerca geográfica.

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.

            }
        }
    });
}


Tópicos relacionados

Mapas

Mapa de aplicativos que usam JavaScript

Desenvolvendo a experiência do usuário para aplicativos

Tarefas

Configurar uma cerca geográfica

Escutar eventos de cerca geográfica em segundo plano

Manipular notificações de cerca geográfica de uma tarefa em segundo plano

Referência

Geoshape

Geofence

Geolocator

Outros recursos

Exemplo de geolocalização do Windows 10

Exemplo de geolocalização do Windows 8.1

Diretrizes para cercas geográficas