地理围栏不是通过他们走过来触发的

时间:2017-04-29 03:57:21

标签: ios objective-c core-location cllocationmanager geofencing

当用户终止应用时,我会在用户的最后位置创建地理围栏,以便在用户离开该位置时收到通知。

CLRegion *workingGeoFence = [[CLCircularRegion alloc] initWithCenter:CLLocationCoordinate2DMake(lastLocation.coordinate.longitude, lastLocation.coordinate.latitude) radius:80.4672 identifier:@"centered"];


workingGeoFence.notifyOnExit = YES;
workingGeoFence.notifyOnEntry = NO;

[locationManager startMonitoringForRegion:workingGeoFence];

我在回复此通知时调用了上述方法:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enterTerminatedMode) name:UIApplicationWillTerminateNotification object:nil]; 
然后,我等待几分钟,直接走出地理围栏,穿过边界,继续直行......地理围栏永远不会被触发。

这适用于仅限GPS的设备,仅供参考。

由于地理围栏是为响应UIApplicationWillTerminateNotification而创建的,因此在应用终止之前,locationManager:didStartMonitoringForRegion:永远不会有机会被调用。但在调用startMonitoringForRegion:之后,地理围栏确实出现在monitoredRegions属性中。

始终使用授权,并在前台和后台模式下成功收集位置。

这可能与它有关吗?...

  

"区域事件可能不会在超过区域边界后立即发生。为防止虚假通知,iOS在满足某些阈值条件之前不会发送区域通知。具体而言,用户的位置必须越过区域边界,远离边界移动最小距离,并在报告通知之前保持最小距离至少20秒。"

更多失败的测试

concentric geofences 我在进入和退出时激活了通知,然后创建了同心地理围栏(见图片。我走过每一个,一两次停下来一分钟然后继续。

然后走了大约一英里远,回来走进每一个,回到中心......什么都没有。注意在进入或退出时甚至只有一个触发器。

我只是不明白地理围栏实施中如何涵盖这些活动。

我尝试使用wifi打开/关闭。

我还尝试打开另一个应用程序,在启动时收集GPS位置。仍然没有触发。我以为Apple在所有应用程序中共享这些精确的位置?

我的猜测是他们只使用更改细胞ID?

不确定还有什么可能尝试。

1 个答案:

答案 0 :(得分:0)

顺序是(lat,lon)NOT(lon,lat)!!!!!!