我有一个非常奇怪的行为。我正在编写一个同时使用获取和位置后台模式的应用程序(不知道这对问题很重要)。我使用委托(delegate)正确设置了 CLLocationManager,并开始监视 AppDelegate 中的重大位置更改 (startMonitoringSignificantLocationChanges)。 我立即接到 didUpdateLocations 电话,它给了我一些位置。之后,即使我在 Xcode 中模拟不同的位置(也使用 GPX 文件),甚至停止并重新启动监控,也不再触发任何事件。我在后台和前台都没有收到任何位置信息。
奇怪的是,如果我开始更新位置(使用 GPS),它会正常工作(进行相同的测试...启动和停止与 startMonitoringSignificantLocationChanges 完全相同)。显然,我同时使用了 didUpdateLocations 和 didFailWithError (我没有收到任何错误)。
这是我的初始化(由我的 AppDelegate didFinishLaunchWithOptions 中的对象初始化调用):
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.pausesLocationUpdatesAutomatically = NO;
我知道 distanceFilter 和准确性对于重大位置更改并不重要,并且我已经将 PausesLocationUpdatesAutomatically 设置为 NO。
我错过了什么吗?是否存在一种方法来读取发射的位置是否来自 wifi、蜂窝网络或 GPS?
提前致谢。
最佳答案
您只能使用模拟器位置菜单中的“高速公路驱动器”选项来模拟模拟器上发生重大变化的位置。它将以几分钟间隔触发。
关于iphone - startMonitoringSignificantLocationChanges 但一段时间后 didUpdateLocations 不再被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18919333/