2014-11-05 79 views
1

CLLocationManager有兩種方法來請求權限:CLLocationManager:請求更高權限

requestWhenInUseAuthorization 
requestAlwaysAuthorization 

然而,這些方法做什麼,如果目前的授權狀態是其他什麼比「kCLAuthorizationStatusNotDetermined」。我希望我的應用程序首先在應用程序正在使用時僅提示用戶輸入位置權限,如果用戶採取需要的操作,則只請求更高的權限。問題是,當我嘗試請求更高的權限時,授權狀態已經確定,因此沒有任何反應。是否有可能仍然提示用戶提供更高的權限,而不必強制他們轉到設置頁面來更改權限?

謝謝!

回答

0

不,根據CLLocationManager文檔,如果您已授予任何權限,則無法請求權限。這意味着您無法從WhenInUse更改爲Always。當你第一次請求許可時,你必須決定你想要哪一個。

0

由於iOS 8的你有

NSLocationWhenInUseUsageDescription 

NSLocationAlwaysUsageDescription 

來管理Poject>信息文件的授權密鑰和值會顯示您的郵件。

+0

這些說明鍵是警報不會出現所必需的。我遇到的問題是,在用戶允許InUseAuthorization後,即使已設置驗證狀態,因此即使設置了描述碼,我也無法再請求AlwaysAuthentication。 – 2014-11-05 19:45:54

+0

對不起,我一定是迷路了,爲什麼你要求更高的權限,當用戶已經允許你使用權限? – 2014-11-05 19:49:43

+0

對於我的應用程序,我有大多數用戶在地圖上查看別針,可以由其他用戶放置。我根據用戶離他們的距離來決定顯示哪些針腳。 (因此,大多數用戶只需要使用授權。)但是,有些用戶可以將一個別針附加到自己身上,這會在移動時更改位置。爲此,我需要AlwaysAuthentication,因爲即使在應用程序關閉時,我也希望pin遵循它們,但大多數用戶不需要此AlwaysAuthentication。 – 2014-11-05 19:57:15

0

Apple在文檔和WWDC 2014視頻中都非常清楚:您無法更改位置服務授權級別。一旦您的應用程序收到使用授權時,它無法獲得始終授權。如果您的應用程序的任何功能需要始終授權,那麼您應該從一開始就要求始終驗證。