注册的地理围栏不会两次进入事件。为什么?

时间:2016-07-27 11:35:35

标签: c# win-universal-app geofencing

例如,在此page MSDN上说:

  

地理围栏会持久保存到磁盘,因此只需将它们添加到系统中一次。

但我无法弄清楚如何使用"那个功能。只有当我清除地理围栏监视器(GeofenceMonitor.Current.Geofences.Clear();)然后重新创建它们或重新启动设备时,我的应用才会触发注册地理围栏的事件。

为了解我的问题,我有这个场景与官方的MS UWP地理定位样本:

  1. open UWP geolocation sample
  2. 菜单中的第4项是:Foreground Geofencing
  3. 创建新的地理围栏,使用此处设置按钮
  4. 新的地理围栏出现在注册地理围栏框中
  5. 因为我在几秒钟之后使用了set here按钮,我在事件框中获得了Entered事件
  6. 一切都很好
  7. 当我关闭应用并再次运行时,我发现在之前注册的Geofences框中创建了地理栅栏(正如预期的那样),但这是我的问题 - 它再也没有触发输入的事件
  8. 你能解释一下我的原因吗?是否有一些"重新注册方法"我要打电话给谁?或者我是从坏的角度看待这个?或者我的方法是在每个应用启动时调用GeofenceMonitor.Current.Geofences.Clear();吗?

    由于

1 个答案:

答案 0 :(得分:0)

在您的步骤中,我没有看到您触发退出状态。如果您始终处于您设置的地理围栏中,则在您运行时不会引发GeofenceStateChanged,同样,后台任务中的LocationTrigger也不会触发。因此,您不会两次获得输入状态。如果您先停留地理围栏,然后再次运行应用程序,则会在“事件”框中显示“已进入”事件。

此外,为了确保地理围栏可以多次使用,我们需要将Geofence.SingleUse property设置为false并将Geofence.Duration property设置为足够大的时间间隔或0的时间间隔。

有关如何在UWP应用中使用地理围栏,请参阅Guidelines for geofencing appsSet up a geofence。如果您使用的是移动模拟器,则可以参考此博客:Using the Windows Phone Emulator for testing apps with geofencing