在整个应用生命周期内运行CLLocation

问题描述 投票:0回答:1

我是否可以打开位置服务并使它们在全局运行,而不必在每个UIViewController中将其打开?我知道它效率不高,但是我希望位置服务在整个应用程序中运行,而不是在每个控制器中都打开它们。一个原因是我发现当我执行locationManager.startUpdatingLocation时,该位置最初不太准确,然后收敛到一个更准确的位置。

理想上:它的工作方式是:

class AppDelegate: UIResponder, UIApplicationDelegate {

    let locationManager = CLLocationManager()

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        /// LOCATION MANAGER
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestWhenInUseAuthorization()
        locationManager.startUpdatingLocation()
    }
}

然后在我的应用程序中的任何位置我都想打电话:

if let location = locationManager.location {
// get the location info immediately
}

谢谢,

ios swift background cllocationmanager
1个回答
0
投票

使用Singletons,您可以在代码中的任何位置使用位置。单例是仅应创建一次的对象,然后在需要使用的所有地方共享。您可以创建一个单独的类来访问位置

© www.soinside.com 2019 - 2024. All rights reserved.