处理前台的地理围栏通知 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
本主题将指导你在应用中逐步处理前台的 Geofence 通知。
路线图: 本主题与其他主题有何关联?请参阅:
简介
在创建地理围栏后,你需要添加逻辑,以便处理当出现地理围栏事件时所发生的情况。 按照你设置的 MonitoredStates,你可能会在下列情况中收到事件:
- 用户进入了关注的区域。
- 用户离开了关注的区域。
- 地理围栏过期或者已被删除。请注意,删除事件并不能激活后台应用。
当应用正在运行时,你可以直接从应用中侦听事件,或者注册一个后台任务,以便在发生事件时接收后台通知。有关后台任务和地理围栏的详细信息,请参阅侦听后台的地理围栏事件、处理来自后台任务的地理围栏通知和地理围栏指南。
为获取地理围栏状态更改事件而进行注册
为了让你的应用能够收到地理围栏状态更改的前台通知,必须注册一个事件处理程序。 这通常需要在创建地理围栏时进行设置。
function initialize() {
// other initialization logic
Windows.Devices.Geolocation.Geofencing.GeofenceMonitor.current.addEventListener("geofencestatechanged", onGeofenceStateChanged);
}
实现地理围栏事件处理程序
下一步是实现事件处理程序。 此处采取的措施取决于你的应用使用地理围栏的意图。
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.
}
}
});
}
相关主题
路线图
任务
参考
其他资源