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
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
Altre risorse
Esempio di georilevazione per Windows 10