Administrar notificaciones de geovallas en primer plano (HTML)
[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente
En este tema se describen los pasos para administrar notificaciones de Geofence en primer plano en tu aplicación.
Guía básica: Relación de este tema con los demás. Consulta:
Introducción
Una vez creadas las geovallas, tendrás que agregar la lógica para administrar lo que sucede cuando se produce un evento de geovalla. En función de los MonitoredStates que hayas configurado, podrías recibir un evento cuando:
- El usuario ha entrado en una región de interés.
- El usuario ha salido de una región de interés.
- La geovalla ha expirado o ha sido eliminada. Ten en cuenta que una aplicación en segundo plano no se activa en caso de evento de eliminación.
Puedes escuchar los eventos directamente desde tu aplicación cuando se está ejecutando, o registrarte en una tarea en segundo plano para recibir notificaciones en segundo plano cuando se produzca un evento. Para obtener más información sobre las geovallas y las tareas en segundo plano, consulta Escuchar eventos de geovallas en segundo plano, Administrar notificaciones de geovallas desde una tarea en segundo plano y Directrices para geovallas.
Registrarse para eventos de cambio de estado de geovalla
Para que tu aplicación reciba notificaciones en primer plano del cambio en el estado de una geovalla, debes registrar un controlador de eventos. Normalmente esto se configura al crear la geovalla.
function initialize() {
// other initialization logic
Windows.Devices.Geolocation.Geofencing.GeofenceMonitor.current.addEventListener("geofencestatechanged", onGeofenceStateChanged);
}
Implementa el controlador de eventos de geovalla
El paso siguiente es implementar los controladores de eventos. La acción que se siga aquí dependerá de para qué esté usando tu aplicación la geovalla.
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.
}
}
});
}
Temas relacionados
Guías básicas
Guía básica para aplicaciones con JavaScript
Diseño de la experiencia del usuario para aplicaciones
Tareas
Escuchar eventos de geovallas en segundo plano
Administrar notificaciones de geovallas en una tarea en segundo plano
Referencia
Otros recursos
Muestra de geolocalización de Windows 10