【原创】Swift 常用访问权限总结(麦克风,相册,联系人)

访问麦克风:

extension AVAudioSession{
    static func authorizeToMicrophone(completion:@escaping (Bool) -> Void){
        
        let recordingSession = AVAudioSession.sharedInstance()
        switch recordingSession.recordPermission{
        case AVAudioSession.RecordPermission.granted:
            //已授权
            completion(true)
            break
        case AVAudioSession.RecordPermission.denied:
            //拒绝授权
            completion(false)
            break
        case AVAudioSession.RecordPermission.undetermined:
            //请求授权
            recordingSession.requestRecordPermission() { allowed in
                DispatchQueue.main.async {
                    if allowed {
                        completion(true)
                    } else {
                        completion(false)
                    }
                }
            }
        }
    }
}

访问相册

extension PHPhotoLibrary {
    static func authorizeToAlbum(completion:@escaping (Bool)->Void) {
        if PHPhotoLibrary.authorizationStatus() == .denied {
            //拒绝授权
            completion(false)
        } else if PHPhotoLibrary.authorizationStatus() == .authorized {
            //已授权
            completion(true)
        } else if PHPhotoLibrary.authorizationStatus() == .notDetermined{
            //请求授权
            PHPhotoLibrary.requestAuthorization({ (status) in
                if status == .authorized {
                    completion(true)
                } else {
                    completion(false)
                }
            })
        }
    }
}

访问手机联系人:

extension CNContactStore {
    static func authorizeToContaces(completion:@escaping (Bool)->Void) {
        if CNContactStore.authorizationStatus(for: .contacts) == .authorized {
            //已授权
            completion(true)
        } else if CNContactStore.authorizationStatus(for: .contacts) == .denied {
            //拒绝授权
            completion(false)
        } else if CNContactStore.authorizationStatus(for: .contacts) == .notDetermined{
            //请求授权
            CNContactStore().requestAccess(for: .contacts) { (isRight, error) in
                if isRight {
                    completion(true)
                } else {
                    completion(false)
                }
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容