iOS Swift 判斷應用定位許可權

2021-07-09 16:05:48 字數 1192 閱讀 8167

最近做到地圖定位的東西,在搜尋應用定位許可權判斷的這一塊兒的時候搜到了許多答案,現在把自己的一些理解說一下,有錯誤請大家指正。

ios的應用定位許可權有種狀態 

2  .restricted 表示gps功能受限於某些限制,無法使用定位服務,例如 parental controls(這裡沒想到該狀態的應用場景)該狀態使用者無法改變    

3  .denied 表示使用者拒絕該應用使用定位服務(也可能是定位服務總開關處於關閉狀態,cllocationmanager.authorizationstatus()

獲取的是應用的授權狀態,但是當定位服務總開關處於關閉狀態的時候,所有應用的定位服務都為關閉狀態 )   

4  .authorizedalways(ios 8.0) 表示使用者授權該應用可永久使用定位許可權    

5  .authorizedwheninuse(ios 8.0) 表示使用者授權該應用或其功能在螢幕上顯示時才能訪問使用者的位置

還有乙個判斷裝置定位許可權總開關的方法 cllocationmanager.locationservicesenabled() 返回值是乙個bool型別,true為開啟,false為關閉

理清了上面每種狀態的意義,我們便可以根據當前的狀態來判斷當前應用的定位許可權

思路:如果系統定位服務總開關為開啟狀態,直接判斷應用的定位許可權狀態是否開啟;如果系統的定位服務總開關關閉,則所有應用的定位許可權為關閉狀態(不存在說系統定位服務總開關為關閉狀態,而某個應用服務的定位服務為開啟狀態),這樣想來,我們對應用定位許可權的判斷時不需要以系統定位服務總開關的狀態為前提的,我們只需要對應用的定位許可權狀態進行判斷即可。

因為.notdetermined為第一次進入的時候應用的狀態,.restricted狀態無法更改,所以我們只要考慮後面3種狀態就行,我們的判斷可以寫為,

if(cllocationmanager.authorizationstatus() != .denied) else 

let callaction = uialertaction(title: "立即設定", style: .default)

}aleat.addaction(tempaction)

aleat.addaction(callaction)

self.presentviewcontroller(aleat, animated: true, completion: nil)

}

iOS 判斷應用是否有定位許可權

1.匯入類庫 import 2.判斷使用者手機是否開啟了定位服務 這裡就要檢視cllocationmanager的授權狀態,此方法會返回當前授權狀態 cllocationmanager authorizationstatus 授權狀態為列舉值 kclauthorizationstatusnotdet...

ios 判斷當前應用的定位服務是否可用

用到地圖定位的時候,會判斷定位是否可用來初始化定位服務。但是以前的方法是判斷所有應用的定位服務,無法指定到當前的應用是否開啟服務。下面的就可以直接搞定這個問題。objc view plain copy if cllocationmanager locationservicesenabled cllo...

詳解定位與定位應用

定位一直是web標準應用中的難點,如果理不清楚定位那麼可能應實現的效果實現不了,實現了的效果可能會走樣。如果理清了定位的原理,那定位會讓網頁實現的更加完美。定位的定義 在css中關於定位的內容是 position relative absolute static fixed static 沒有特別的...