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

Configurar una geovalla

Escuchar eventos de geovallas en segundo plano

Administrar notificaciones de geovallas en una tarea en segundo plano

Referencia

Geoshape

Geofence

Geolocator

Otros recursos

Muestra de geolocalización de Windows 10

Muestra de geolocalización de Windows 8.1

Directrices para geovallas