2017-06-01 68 views
0

我對編碼非常陌生,對我來說很裸露。位置服務許可不斷消失

我正在研究一個應用程序,該應用程序會在用戶位置周圍的地圖上顯示興趣點。問題是,當應用程序加載時,權限對話框會立即消失,然後用戶可以允許或拒絕權限。

我的代碼如下所示:

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 
    } 
} 

但我不知道我做錯了。我試着在這裏看到類似問題的其他答案,但似乎有幾個原因可能發生,我不知道我的問題是哪一個我正在撕裂毛髮!

回答

0

嘗試移動viewWillAppear中的代碼,因爲當視圖控制器出現時需要調用requestWhenInUseAuthorization。你可以研究視圖控制器生命週期here以瞭解更多關於它們的外觀,負載和一切。

+0

這不應該成爲問題,從'viewDidLoad'調用它時,我請求授權的作品就好了。 –

+0

@DávidPásztor你是對的,即使它也適用於我,但是從'viewDidLoad'(有時)調用許可警報似乎有問題,所以這可能是他面臨的問題。 –

1

您正在將locationManager分配給viewDidLoad的局部變量,該變量在viewDidLoad完成時立即釋放。相反,讓您的locationManagerViewController屬性:

var locationManager: CLLocationManager? 

override func viewDidLoad() { 
    ... 

    locationManager = CLLocationManager() 

    ... 
}