我是否可以打开位置服务并使它们在全局运行,而不必在每个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
}
谢谢,
使用Singletons
,您可以在代码中的任何位置使用位置。单例是仅应创建一次的对象,然后在需要使用的所有地方共享。您可以创建一个单独的类来访问位置