位置服务权限不断消失

时间:2017-06-01 10:28:34

标签: ios swift permissions location

我正在开发一个应用程序,它会在用户位置周围的地图上显示兴趣点。问题是,当应用程序加载时,权限对话框会在用户允许或拒绝权限之前立即消失。

我的代码如下所示:

override func viewDidLoad() {
    super.viewDidLoad()

    logo.animation = "zoomIn"
    logo.duration = 1
    logo.delay = 0.5
    logo.animate()

    formatView()

    let locationManager = CLLocationManager()
    let authStatus: CLAuthorizationStatus = CLLocationManager.authorizationStatus()

    if authStatus == .notDetermined {
        locationManager.requestWhenInUseAuthorization()
    }

    if authStatus == .denied || authStatus == .restricted {
        showLocationServicesDeniedAlert()
        return
    }
}

但我不知道我做错了什么。香港专业教育学院曾试图在这里找到类似问题的其他答案,但似乎有几个原因可以发生这种情况,我不知道我的问题是哪一个我撕裂了毛发!

2 个答案:

答案 0 :(得分:1)

您正在将locationManager分配给viewDidLoad的局部变量,该变量会在viewDidLoad完成后立即释放。相反,请将locationManager的属性设为ViewController

var locationManager: CLLocationManager?

override func viewDidLoad() {
    ...

    locationManager = CLLocationManager()

    ...
}

答案 1 :(得分:0)

尝试移动viewWillAppear中的代码,因为requestWhenInUseAuthorization需要在视图控制器出现时调用。您可以研究视图控制器生命周期here,以了解有关其外观,加载和所有内容的更多信息。