Swift 相册、相机、麦克风、定位权限判断

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
}

你可能感兴趣的:(Swift 相册、相机、麦克风、定位权限判断)