1、相册权限校验,代码如下:
//相册
func checkPhotoLibraryPermission() -> Bool{
if #available(iOS 9.0, *){ // iOS 9 及其以上系统运行
let status = PHPhotoLibrary.authorizationStatus()
switch status {
case .notDetermined: //用户尚未做出选择
return false
case .authorized: //已授权
return true
case .denied: //用户拒绝
return false
case .restricted: //家长控制
return false
}
}else {
let authorizationStatus = ALAssetsLibrary.authorizationStatus()
switch authorizationStatus {
case .notDetermined: //用户尚未做出选择
return false
case .authorized: //已授权
return true
case .denied: //用户拒绝
return false
case .restricted: //家长控制
return false
}
}
}
2、相机权限校验,代码如下:
//相机
func checkCameraPermission() -> Bool{
let mediaType = AVMediaTypeVideo
let authorizationStatus = AVCaptureDevice.authorizationStatus(forMediaType: mediaType)
switch authorizationStatus {
case .notDetermined: //用户尚未做出选择
return false
case .authorized: //已授权
return true
case .denied: //用户拒绝
return false
case .restricted: //家长控制
return false
}
}
3、麦克风权限校验,代码如下:
//麦克风
func checkMicroPermission() -> Bool{
let mediaType = AVMediaTypeAudio
let authorizationStatus = AVCaptureDevice.authorizationStatus(forMediaType: mediaType)
switch authorizationStatus {
case .notDetermined: //用户尚未做出选择
return false
case .authorized: //已授权
return true
case .denied: //用户拒绝
return false
case .restricted: //家长控制
return false
}
}
4、定位权限校验,代码如下:
//定位
func checkLocationPermission() -> Bool{
let status = CLLocationManager.authorizationStatus()
switch status {
case .notDetermined: //用户尚未做出选择
return false
case .restricted: //未被授权
return false
case .denied: //用户拒绝
return false
case .authorizedWhenInUse: //使用期间定位
return true
case .authorizedAlways: //一直定位
return true
}
}
为什么switch最后没有default呢?因为我把AVAuthorizationStatus所有状态都列出来了
public enum AVAuthorizationStatus : Int {
case notDetermined
case restricted
case denied
case authorized
}