处理前台的地理围栏通知 (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.

            }
        }
    });
}


相关主题

路线图

采用 JavaScript 的应用的路线图

设计应用 UX

任务

设置地理围栏

侦听后台的地理围栏事件

处理来自后台任务的地理围栏通知

参考

Geoshape

Geofence

Geolocator

其他资源

Windows 10 地理位置示例

Windows 8.1 地理位置示例

地理围栏指南