Ios 是否允许您在后台进行“startLocationUpdate”?

Ios 是否允许您在后台进行“startLocationUpdate”?,ios,swift,core-location,uiapplicationdelegate,background-task,Ios,Swift,Core Location,Uiapplicationdelegate,Background Task,我在这里看到了很多答案,说你可以。有人说你可以,但你必须把它包装在一个背景任务中,我觉得这是多余的,因为它已经包含在plist中了。其他人说你做不到,必须选择其他的选择 然而,苹果的文档说: 阅读 您可以使用此方法的实现来启动区域 在用户当前位置进行监视或启用访问 定位服务,用于确定用户何时再次开始移动。 另一种选择是立即使用 降低精度(可节省电源),然后恢复到更高的精度 只有在用户再次开始移动后,才能准确无误。 我在我的LocationManagerDipAuseLocationUpdate回

我在这里看到了很多答案,说你可以。有人说你可以,但你必须把它包装在一个背景任务中,我觉得这是多余的,因为它已经包含在plist中了。其他人说你做不到,必须选择其他的选择

然而,苹果的文档说:

阅读

您可以使用此方法的实现来启动区域 在用户当前位置进行监视或启用访问 定位服务,用于确定用户何时再次开始移动。 另一种选择是立即使用 降低精度(可节省电源),然后恢复到更高的精度 只有在用户再次开始移动后,才能准确无误。

我在我的
LocationManagerDipAuseLocationUpdate
回调中尝试了重新启动位置:

locationManager.stopUpdatingLocation()
locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
locationManager.distanceFilter = 200
locationManager.pausesLocationUpdatesAutomatically = false
locationManager.allowsBackgroundLocationUpdates = true
self.locationManager.startUpdatingLocation()
但它不起作用。我再也没有位置更新了

我还尝试将其包装在backgroundTask中,如下所示:

var changeLocationTrackingType:UIBackgroundTaskIdentifier?

func changeLocationTrackingInBackground()
{
    dispatch_async(dispatch_get_main_queue()){ [unowned self] in
        self.changeLocationTrackingType = UIApplication.sharedApplication().beginBackgroundTaskWithExpirationHandler({ () -> Void in

            self.changeLocationTrackingType = UIBackgroundTaskInvalid

        })

          locationManager.stopUpdatingLocation()
          locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation
          locationManager.distanceFilter = 200
          locationManager.pausesLocationUpdatesAutomatically = false
          locationManager.allowsBackgroundLocationUpdates = true
          self.locationManager.startUpdatingLocation()

    }
}
FWIW我不是说创建一个区域,也不是说重要的位置跟踪。我说的是在您或系统停止您的位置跟踪后开始
startLocationUpdate

大多数答案都建议你使用计时器来改变准确性,但我只是想停下来重新开始。有没有办法这样做


另外,我知道,当您想执行
startLocationUpdate
时,您必须处于活动运行循环中,只是不确定如何才能保证这一点。

是的,但您面临的问题是什么。你的要求是什么?我面临什么问题?如果我执行
startUpdateLocation
,则在我获得
LocationManagerDipAuseLocationUpdate
回调后,
。是否有任何时间场或元素(用户设备)移动然后更新到服务器的位置。这种类型的东西scenario@NazmulHasan我不明白你的评论。您想让我分享我在
didUpdateLocation
中的工作吗?