Gestire le notifiche dei recinti virtuali in primo piano (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

In questo argomento vengono illustrati i passaggi necessari per gestire notifiche di Geofence in primo piano in un'app.

Roadmap: che relazione c'è tra questo argomento e gli altri? Vedi:

Introduzione

Dopo aver creato i recinti virtuali, devi aggiungere la logica per gestire gli eventi dei recinti virtuali. A seconda del MonitoredStates configurato, può verificarsi un evento quando:

  • L'utente entra in un'area di interesse.
  • L'utente esce da un'area di interesse.
  • Il recinto virtuale scade o viene rimosso. Tieni presente che le app in background non vengono attivate per gli eventi di rimozione.

È possibile rimanere in attesa degli eventi direttamente dall'app in esecuzione oppure effettuare la registrazione di un'attività in background in modo da ricevere una notifica in background quando si verifica un evento. Per altre info sulle attività in background e i recinti virtuali, vedi Rilevare eventi di recinti virtuali in background, Gestire le notifiche dei recinti virtuali mediante un'attività in background e Linee guida per i recinti virtuali.

Registrare gli eventi di modifica dello stato del recinto virtuale

Affinché l'app possa ricevere una notifica in primo piano relativa a una modifica dello stato del recinto virtuale, devi registrare un gestore di eventi. Questo gestore viene in genere configurato quando si crea il recinto virtuale.

    function initialize() {

    // other initialization logic

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

Implementare il gestore degli eventi del recinto virtuale

Il passaggio successivo consiste nell'implementare i gestori degli eventi. Le azioni eseguite qui dipendono dai motivi per cui l'app usa il recinto virtuale.

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.

            }
        }
    });
}


Argomenti correlati

Roadmap

Roadmap per app in JavaScript

Progettazione dell'esperienza utente per le app

Attività

Configurare un recinto virtuale

Rilevare eventi di recinti virtuali in background

Gestire le notifiche dei recinti virtuali mediante un'attività in background

Riferimenti

Geoshape

Geofence

Geolocator

Altre risorse

Esempio di georilevazione per Windows 10

Esempio di georilevazione per Windows 8.1

Linee guida per la funzionalità per i recinti virtuali