我使用标准的位置服务实现了后台位置跟踪,它工作正常。但是,由于这个实施使用了很多电力,我决定切换到重要的位置更改监控。基本上,我只是将所有调用startUpdatingLocation
改为startMonitoringSignificantLocationChanges
,并重用了我之前实现的CLLocationManagerDelegate方法。locationManager:didUpdateToLocation:fromLocation没有得到重要的位置变化监测
问题是,在切换到重要的位置更改监视之后,委托方法locationManager:didUpdateToLocation:fromLocation
仅在我开始监视时被调用一次,并且之后再也不会再被调用。我已经绕过电话行驶了几公里,并尝试用它搭乘火车,但仍然没有调用该方法。我在这里错过了什么吗?是否需要启用设置或需要编写特殊代码才能使其工作?
谢谢!
你说得对,看来问题是由低手机信号引起的。 – jsrivo 2011-05-27 09:13:04
我不相信这是正确的。首先,UIRequiredDeviceCapabilities键只需要让“iTunes和App Store知道应用程序需要哪些设备相关功能才能运行”。其次,UIBackgroundModes中的“位置”键仅在应用程序“需要使用标准位置服务(而不是重要的更改位置服务)”时才需要。详情:http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html – chris 2012-10-21 09:55:07