使用 Swift 切换 CoreLocation

Toggle CoreLocation using Swift

我正在尝试在您按下 swift 应用程序中的按钮时打开和关闭 CoreLocation。当应用程序加载时,这就是我打开它的方式

let locationManager = CLLocationManager()
locationManager.requestWhenInUseAuthorization()

if CLLocationManager.locationServicesEnabled() {
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.startUpdatingLocation()
}

效果很好。它提示用户然后更新我在地图上的位置。但是,如果您在请求时选择 "No",我希望能够再次打开它。我认为这就像再次请求授权一样简单,但它不起作用。我有一个方法,当按下按钮打开位置时会调用该方法。

此方法的代码基本上完全相同。最初设置授权状态后,我需要做一些不同的事情吗?

if you were to choose "No" when it requests, I want to be able to then turn it back on again

一旦用户选择拒绝你的授权,你就不能神奇地反驳用户,而且(唉)你不能让系统的授权对话框再次出现。

您最好设置您自己的对话框(即提醒)请求用户转到“设置”并翻转开关给你授权。您甚至可以 用户带到“设置”(iOS 8 中的新功能)。但是你不能再得到那个系统授权对话框。