【发布时间】:2016-05-08 20:21:49
【问题描述】:
我尝试在我的应用程序中使用区域监控,据我了解,这会触发两种方法,didEnterRegion 和 didExitRegion,即使应用程序甚至不在后台。
因此,这可能会导致函数在应用程序不知情的情况下被调用,就好像这些函数只是在基本应用程序环境中调用的代码块,但它们周围的所有内容都为空。例如,如果我们创建了一个 CLLocationManager,它现在是空的,我们需要创建一个新的。
我需要从 CLLocationManager 获取当前位置,但我可以使用它吗?
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.distanceFilter = 0;
[locationManager startUpdatingLocation];
CLLocation *currentLocation = [locationManager location];
currentLocation 会保持良好的价值,还是只会在委托方法 didUpdateLocations 中发生这种情况?
【问题讨论】:
-
委托将在大约 2 到 3 秒内获得一个位置,但您必须知道,当第一次调用委托时,它在击中委托 2 或是正确值的 3 倍
-
distanceFilter 应该根据您的要求分配一些值,否则它会消耗设备电池并且如果您的应用被 iOS 杀死,请不要忘记重新启动后台定位服务。
-
@SunilSingh 重启后台定位服务是什么意思?
-
如果操作系统内存不足,iOS 可以杀死并垃圾收集您的应用程序。如果在您的应用程序被杀死并且 iOS 检测到位置更改后,iOS 将在后台再次启动您的应用程序,但是您需要手动重新启用后台定位服务。在这里查看developer.apple.com/library/ios/documentation/CoreLocation/…
-
我不确定你的意思@SunilSingh,如果应用程序被杀死并输入一个区域,应用程序将重新启动。我找不到任何有关重新启用位置服务的信息。 PS区域监控不需要后台位置更新
标签: ios objective-c core-location