当用户终止应用时,我会在用户的最后位置创建地理围栏,以便在用户离开该位置时收到通知。
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秒。"
更多失败的测试
我在进入和退出时激活了通知,然后创建了同心地理围栏(见图片。我走过每一个,一两次停下来一分钟然后继续。
然后走了大约一英里远,回来走进每一个,回到中心......什么都没有。注意在进入或退出时甚至只有一个触发器。
我只是不明白地理围栏实施中如何涵盖这些活动。
我尝试使用wifi打开/关闭。
我还尝试打开另一个应用程序,在启动时收集GPS位置。仍然没有触发。我以为Apple在所有应用程序中共享这些精确的位置?
我的猜测是他们只使用更改细胞ID?
不确定还有什么可能尝试。
答案 0 :(得分:0)
顺序是(lat,lon)NOT(lon,lat)!!!!!!