2017-02-09 125 views
0

我是新來的ios,但有以下問題。用戶拒絕後請求位置權限。 Swift 3. IOS

當應用程序啓動時,用戶應該接受位置權限。這工作正常。如果他不允許,某些功能不起作用。

但是,我希望當用戶嘗試使用這些功能時,他會收到警報,表示他不接受位置權限。我也這樣做了。不過,我希望警報具有一個允許他現在接受的按鈕(所以他不必在手機上進行設置)。這是我無法做到的。

我爲此類警報製作了一個處理程序,但它無法接受權限。 這裏是處理程序...

func someHandler(alert: UIAlertAction!) { 
    print("User now wants to let location from new") 

    self.locationManager.requestWhenInUseAuthorization() 

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

} 

這是錯誤的,還有什麼我應該說的。目前,當處理程序被調用時,位置服務未打開。

謝謝

+0

你爲什麼要求這兩個授權?只要求你需要的那個。 – rmaddy

+0

你爲什麼要求兩個位置權限?即_Always_和_WhenInUse_。你只需要申請一個。 _WhenInUse_:每當應用程序處於前景中時都會獲取位置,而_Always_同時適應前景和背景。 – eshirima

+0

對,修正了這個問題,並編輯了我的問題。 – RJB

回答

3

你不能做你想做的。只有用戶可以通過轉到設置應用更改設置。

如果您可以以編程方式更改權限,那將是一個安全噩夢。並且沒有API強制iOS第二次顯示權限警報。

+0

好的。謝謝,很高興知道。但是,我可以讓按鈕直接進入設置應用程序頁面嗎? – RJB

+0

是的,這裏有很多例子。在'UIApplicationOpenSettingsURLString'上搜索。 – rmaddy