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 }) } }