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
Outros recursos
Exemplo de geolocalização do Windows 10