[英]iOS 13 How to check user is given only Always allow location permission
在我的應用程序中,我想檢查用戶是否被授予“始終允許”的位置權限。 因為我在進行位置共享,就像 WhatsApp 位置實時共享一樣。
實際上測試用例是,當我們在應用程序設置中將位置權限狀態更改為“使用應用程序時”並檢查應用程序內按鈕單擊的狀態時,我得到“始終授權”值。
func isAlwaysPermissionGranted() -> Bool{
let aStatus = CLLocationManager.authorizationStatus()
if aStatus == .authorizedAlways {
return true
}
return false
}
如果我們有“使用應用程序時”權限,我無法區分“使用應用程序時”和“始終”。 兩者都具有相同的枚舉值,即“authorizedAlways”。
但在 WhatsApp 中,如果我將位置權限更改為“使用應用程序時”並嘗試分享我的實時位置,WhatsApp 會在應用程序設置中顯示一個更改位置權限的警報。
我想做同樣的事情。
請幫助我在代碼級別上有所不同。
您可以像這樣在didChangeAuthorization委托方法中檢查它。
switch CLLocationManager.authorizationStatus() {
case .notDetermined:
//Ask for permission
break
case .restricted:
// user retricted to use location service.(Ex: parental control)
break
case .denied:
//user denied location service
break
case .authorizedAlways:
//always allow
break
case .authorizedWhenInUse:
// when in use
break
@unknown default:
break
}
實際上,我從代碼中刪除了CLLocationManager.requestAlwaysAuthorization()
。
如果您請求 Always Authorization,則 CLLocationManager.authorizationStatus 將變為 authorizedAlways。
我讓它就像如果應用程序想要始終訪問,用戶必須 go 進行設置並手動授予始終權限
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.