0

我正在制作一个跟踪用户的应用程序。我注意到应用程序何时进入后台,然后当您打开应用程序时,它会为用户显示错误的当前位置,直到大约 5 秒。是否可以解决这个问题,因为 5 秒的延迟会破坏跟踪结果(它无缘无故地增加了 3 英里)。

编辑:这个问题实际上不是一个“错误”。我必须在我的 Info.plist 中设置我想要后台处理和繁荣应用程序跟踪是超级准确的。一个小教程来做到这一点:

  1. 转到 Info.plist
  2. 添加一个名为“必需的背景模式”的新行
  3. 然后再次添加一个名为“App registers for location updates”的新行
  4. 我们完了 :)
4

1 回答 1

5

您可以做的一件事是检查您被退回的horizontalAccuracy财产。CLLocation如果这高于某个阈值,那么您可以丢弃结果并等待更准确的结果。如果它在数英里之外,那么我希望准确度数字会很大。它最有可能使用蜂窝站点而不是 GPS 来确定位置,并且误差范围会大得多。

在您CLLocationManagerDelegatelocationManager:didUpdateLocations:方法中,您可以执行以下操作:

- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
  if ([locations count] > 0) {
    CLLocation *lastUpdatedLocation = [locations lastObject];
    CLLocationAccuracy desiredAccuracy = 1000; // 1km accuracy
    if (lastUpdatedLocation.horizontalAccuracy > desiredAccuracy) {
      // This location is inaccurate. Throw it away and wait for the next call to the delegate.
      return;
    } 
    // This is where you do something with your location that's accurate enough.
  }
}
于 2012-11-21T21:43:07.800 回答