• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近关于隐私比较关注

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

点击没设置过权限,就弹窗申请权限,设置过,再设置就跳转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
                
            })
        }
    }

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Swift]关键字:class与staitc的区别发布时间:2022-07-13
下一篇:
swift:创建滚动视图的图片轮播器发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap