2011-05-18 59 views
1

我使用标准的位置服务实现了后台位置跟踪,它工作正常。但是,由于这个实施使用了很多电力,我决定切换到重要的位置更改监控。基本上,我只是将所有调用startUpdatingLocation改为startMonitoringSignificantLocationChanges,并重用了我之前实现的CLLocationManagerDelegate方法。locationManager:didUpdateToLocation:fromLocation没有得到重要的位置变化监测

问题是,在切换到重要的位置更改监视之后,委托方法locationManager:didUpdateToLocation:fromLocation仅在我开始监视时被调用一次,并且之后再也不会再被调用。我已经绕过电话行驶了几公里,并尝试用它搭乘火车,但仍然没有调用该方法。我在这里错过了什么吗?是否需要启用设置或需要编写特殊代码才能使其工作?

谢谢!

回答

1

重要的位置变化需要手机塔为了操作。如果你没有手机接收,你不会得到任何结果。您还可以调用CLLocationManager的significantLocationChangeMonitoringAvailable方法来查看它是否可用。

+0

你说得对,看来问题是由低手机信号引起的。 – jsrivo 2011-05-27 09:13:04

+0

我不相信这是正确的。首先,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