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

最近关于隐私比较关注

有个需求:判断相机、相册、麦克风、定位的权限是否打开。

点击没设置过权限,就弹窗申请权限,设置过,再设置就跳转App设置

这里就把OC和Swift的相关代码分享一下,节省读者时间!

//是否开启麦克风权限
-(void)openAudioSession {
    if ( AVAudioSession.sharedInstance.recordPermission == AVAudioSessionRecordPermissionUndetermined){
        [AVAudioSession.sharedInstance requestRecordPermission:^(BOOL granted) {
                    
        }];
    }else{
        [self openPermissions];
    }
}

//是否开启相册权限
-(void)openAlbum {
    PHAuthorizationStatus authStatus = PHPhotoLibrary.authorizationStatus;
    if ( authStatus == PHAuthorizationStatusNotDetermined ) {
        [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
                    
        }];
    }else{
        [self openPermissions];
    }
}

//是否开启相机权限
-(void)openCamera {
    AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    // 未设置权限
    if (authStatus == AVAuthorizationStatusNotDetermined){
        [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
                    
        }];
    }else{
        [self openPermissions];
    }
}
////是否开启定位权限
-(BOOL)IsOpenLocation {
    CLAuthorizationStatus authStatus =CLLocationManager.authorizationStatus;
    if (authStatus != kCLAuthorizationStatusRestricted && authStatus != kCLAuthorizationStatusDenied) {
        return  YES;
    }
    return  NO;
}

// 打开设置
-(void)openPermissions {
    
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{}
               completionHandler:^(BOOL success) {
               }];
    
}

swift

//是否开启相机权限
    func openCamera() {
        let authStatus = AVCaptureDevice.authorizationStatus(for: .video)
        if authStatus == .notDetermined {
            AVCaptureDevice.requestAccess(for: .video) { (res) in
            }
        }else{
            self.openPermissions()
        }
    }

    //是否开启相册权限
    func openAlbum() {
        let authStatus = PHPhotoLibrary.authorizationStatus()
        if authStatus == .notDetermined {
            PHPhotoLibrary.requestAuthorization({ (status) in
    
            })
        }else{
            self.openPermissions()
        }
    }
     
    //是否开启麦克风权限
    func openAudioSession() {
        
        let permissionStatus = AVAudioSession.sharedInstance().recordPermission
        if permissionStatus == AVAudioSession.RecordPermission.undetermined {
            AVAudioSession.sharedInstance().requestRecordPermission { (granted) in
            }
        } else{
            self.openPermissions()
        }
    }
    
    //是否开启定位权限
    func IsOpenLocation() -> Bool{
        let authStatus = CLLocationManager.authorizationStatus()
        return authStatus != .restricted && authStatus != .denied
    }
    
    //
    func openPermissions(){
        let settingUrl = NSURL(string: UIApplication.openSettingsURLString)!
        if UIApplication.shared.canOpenURL(settingUrl as URL)
        {
            UIApplication.shared.open(settingUrl as URL, options: [:], completionHandler: { (istrue) in
                
            })
        }
    }

 

posted @ 2021-01-06 18:06  甘林梦  阅读(1029)  评论(0编辑  收藏  举报