0

我正在使用 CLLocationManager 从用户那里获取坐标,我需要在后台和设备重新启动时一直获取位置(Uber 司机风格)。我正在使用 allowBackgroundLocationUpdates= true 和 pausesLocationUpdatesAutomatically=false 在后台获取位置并且它们工作正常,但是当您重新启动手机时,有时 CLLocationManager 会停止工作。

我阅读了有关 startMonitoringSignificantLocationChanges 方法的信息,并且(假设)是重启设备后继续获取位置的唯一方法。但有时有效,有时无效。我阅读了很多 stackoverflows 和文档,但我不知道发生了什么。

其他失败的方法:a)我阅读了有关计时器的信息,但没有办法,因为您可以在前台运行它,也可以在后台运行 3 分钟。b) 在 android 中,您可以使用广播接收器 (BOOT_COMPLETED) 发送消息以唤醒您的应用程序,但在 iOS 中这是不可能的。

我认为唯一可能的方法是使用 CLLocationManager 但是当你重新启动 iphone 时它​​很少有行为。任何想法?

这是我的代码:

private lazy var locationManager: CLLocationManager = {
        let manager = CLLocationManager()
        manager.desiredAccuracy = kCLLocationAccuracyBest
        manager.distanceFilter = 100
        manager.pausesLocationUpdatesAutomatically=false
        manager.allowsBackgroundLocationUpdates = true
        manager.delegate = self
        manager.requestAlwaysAuthorization()
        return manager
    }()

我正在使用 startUpdatingLocation 和 startMonitoringSignificantLocationChanges 方法进行测试。

我正在真实设备中进行测试(iphone 6 plus - iOS 10.3)在此先感谢。

4

0 回答 0