我一直在读一些关于CLBeaconRegion的文章,我已经成功地设置了一些iBeacons,并让它触发位置更新,即使应用程序在后台也是如此。
然而,根据我从CLRegion读到的东西,我了解到在应用程序终止后应该可以访问locationManager:didEnterRegion:。
我已经这样设置了我的CLBeaconRegion:
beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:[[NSUUID alloc] initWithUUIDString:SERVICE_UUID]
major:0
minor:0
identifier:BEACON_ID];
[beaconRegion setNotifyOnEntry:YES];
[beaconRegion setNotifyOnExit:YES];
[beaconRegion setNotifyEntryStateOnDisplay:YES];但我无法触发CLLocationManager的代理终止。我已经离开了区域(通过通知确认),离开了信标,等待了30秒,然后又回到了信标,但它在终止时不会触发代理(在后台和前台工作得很好)。
这应该从终止开始工作吗?我是不是遗漏了什么?任何帮助都是最好的。
发布于 2013-10-23 08:51:31
我相信当你在后台或者没有运行的时候,它会调用locationManager:didDetermineState:forRegion:而不是locationManager:didEnterRegion:,而且只有当你将notifyEntryStateOnDisplay设置为TRUE时才会调用。
发布于 2013-10-30 06:20:56
EDIT:从7.1开始,以下内容不再适用。即使应用程序已关闭,您仍可以接收通知
在应用程序切换器中被刷走的应用程序的行为现在具有您在iOS 7下描述的效果。
从切换器中删除您的应用程序的用户已决定不允许您的应用程序在后台运行。因此,地域监控不会重新打开您的应用程序。
有关更多信息,请查看WWDC 2013的“多任务新增功能”会议。
发布于 2014-03-29 00:01:53
这是iOS 7上的预期行为。但是,在iOS 7.1中,此行为已更改。iOS 7.1将委派调用恢复到iOS7之前的行为。
我在我的一篇博客文章中记录了这种行为。
http://www.simplymadeapps.com/blog/2014/03/7-1-brings-back-geofence-behavior/
https://stackoverflow.com/questions/19530063
复制相似问题