iOS中的权限开启问题,打开相机

您所在的位置:网站首页 开启相机权限怎么开 iOS中的权限开启问题,打开相机

iOS中的权限开启问题,打开相机

2023-07-15 23:22| 来源: 网络整理| 查看: 265

 NSPhotoLibraryUsageDescription   App需要您的同意,才能访问相册     NSCameraUsageDescription   App需要您的同意,才能访问相机      NSMicrophoneUsageDescription   App需要您的同意,才能访问麦克风      NSLocationUsageDescription   App需要您的同意,才能访问位置      NSLocationWhenInUseUsageDescription   App需要您的同意,才能在使用期间访问位置      NSLocationAlwaysUsageDescription   App需要您的同意,才能始终访问位置      NSCalendarsUsageDescription   App需要您的同意,才能访问日历      NSRemindersUsageDescription   App需要您的同意,才能访问提醒事项      NSMotionUsageDescription App需要您的同意,才能访问运动与健身      NSHealthUpdateUsageDescription   App需要您的同意,才能访问健康更新       NSHealthShareUsageDescription   App需要您的同意,才能访问健康分享      NSBluetoothPeripheralUsageDescription   App需要您的同意,才能访问蓝牙      NSAppleMusicUsageDescription  App需要您的同意,才能访问媒体资料库  

info.plist中逐个添加 KEY直接复制   value的string字符串就是提示的文字 可以根据自己需要填写

==============

 

 

#import

#import 

#import

 

#import

 

//相机权限----

//下面这个方法tatus为AVAuthorizationStatusNotDetermined时,下面的方法就无效了,要用+requestAccessForMediaType:completionHandler:

AVAuthorizationStatus authStatus = [AVCaptureDeviceauthorizationStatusForMediaType:AVMediaTypeVideo];

 if (authStatus ==AVAuthorizationStatusRestricted ||//此应用程序没有被授权访问的照片数据。可能是家长控制权限

                authStatus ==AVAuthorizationStatusDenied)  //用户已经明确否认了这一照片数据的应用程序访问

            {

         // 无权限 引导去开启

 

        NSURL *url = [NSURLURLWithString:UIApplicationOpenSettingsURLString];

        if ([[UIApplicationsharedApplication]canOpenURL:url]) {

            [[UIApplicationsharedApplication]openURL:url];

        }

}

 

 

//相册权限

           ALAuthorizationStatus author = [ALAssetsLibraryauthorizationStatus];

           if (author ==kCLAuthorizationStatusRestricted || author ==kCLAuthorizationStatusDenied){

//无权限 引导去开启

 

        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

        if ([[UIApplication sharedApplication] canOpenURL:url]) {

            [[UIApplication sharedApplication] openURL:url];

        }

 

 }

 

/** 设置相册权限 */ - (void)openAlbumReject { NSURL *url = [NSURL URLWithString:@"prefs:root=com.xxxx.xxxx"]; // 这里填你App的Bundle ID if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; } }

参考:http://www.jianshu.com/p/3bbc69132ba0

iOS9以后

#import

 //获取相册访问权限

//    PHAuthorizationStatus photoStatus = [PHPhotoLibrary authorizationStatus];

    

    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {

        dispatch_async(dispatch_get_main_queue(), ^{

            switch (status) {

                case PHAuthorizationStatusAuthorized: //已获取权限

                {  //加上这个在主线程异步就不卡顿了

                    dispatch_async(dispatch_get_main_queue(), ^{

                        [self  dealDownloadImageStr];

                    });

                    break;

                }

                case PHAuthorizationStatusDenied: {//用户已经明确否认了这一照片数据的应用程序访问

                    UIAlertController *controller=[UIAlertController alertControllerWithTitle:@"去设置页面-》2号钱包-》选择读取和写入" message:@"" preferredStyle:UIAlertControllerStyleAlert];

                    UIAlertAction *sure=[UIAlertAction actionWithTitle:@"去开启权限" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

                        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

                        dispatch_async(dispatch_get_main_queue(), ^{

                            if( [[UIApplication sharedApplication] canOpenURL:url]){

                                [[UIApplication sharedApplication] openURL:url];

                            }

                        });

                    }];

                    UIAlertAction *cancel=[UIAlertAction actionWithTitle:@"暂不" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

                        

                    }];

                    [controller addAction:sure];

                    [controller addAction:cancel];

                    [self presentViewController:controller animated:YES completion:^{

                        

                    }];

                    

                    break;

                }

                case PHAuthorizationStatusRestricted://此应用程序没有被授权访问的照片数据。

                    break;

                    

                default://其他。。。

                    break;

            }

        });

    }];

    

   

相机权限:

#import

#import

if([UIImagePickerController  isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){

                //相机

                sourceType = UIImagePickerControllerSourceTypeCamera;

                

        [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {

                   

            AVAuthorizationStatus status =[AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];

                    if (status == AVAuthorizationStatusAuthorized){

                        //获取权限

                        // 跳转到相机或相册页面

                        UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

                        imagePickerController.delegate = self;

                        imagePickerController.allowsEditing = YES;

                        imagePickerController.sourceType = sourceType;

                        //弹出相册页面或相机

                        [self presentViewController:imagePickerController animated:YES completion:^{

                            

                        }];

                        

                    }else if(status == AVAuthorizationStatusDenied ||status ==AVAuthorizationStatusRestricted){//拒绝了权限

                        [self gotoSetAuthor];

                        

                    }

                }];

 

 

-(void)gotoSetAuthor{

    UIAlertController *controller=[UIAlertController alertControllerWithTitle:@"去设置页面-》2号钱包-》照片" message:@"" preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *sure=[UIAlertAction actionWithTitle:@"去开启权限" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

        NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

        dispatch_async(dispatch_get_main_queue(), ^{

            if( [[UIApplication sharedApplication] canOpenURL:url]){

                [[UIApplication sharedApplication] openURL:url];

            }

        });

    }];

    UIAlertAction *cancel=[UIAlertAction actionWithTitle:@"暂不" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

        

    }];

    [controller addAction:sure];

    [controller addAction:cancel];

    [self presentViewController:controller animated:YES completion:^{

        

    }];

}

 

 

***************各种权限的申请:https://www.jianshu.com/p/27e57922232b

直接拷贝到info。plist中 以sourceas打开

NSAppTransportSecurity NSAllowsArbitraryLoads NSAppleMusicUsageDescription App需要您的同意,才能访问媒体资料库 NSBluetoothPeripheralUsageDescription 我们需要您开启蓝牙,方便连接数据? NSCalendarsUsageDescription 是否允许此App使用日历? NSCameraUsageDescription 我们需要获取本机拍摄的照片,以供您选择上传 NSContactsUsageDescription 需要使用您的同意,才能使用通讯录 NSHealthShareUsageDescription App需要您的同意,才能访问健康分享 NSHealthUpdateUsageDescription App需要您的同意,才能访问健康更新 NSLocationAlwaysAndWhenInUseUsageDescription 我们需要获取您的位置在某段时间上传,以便客户查看您的位置,估算工程进度 NSLocationAlwaysUsageDescription 我们需要获取您的位置在某段时间上传,以便客户查看您的位置,估算工程进度 NSLocationUsageDescription App需要您的同意,才能访问位置 NSLocationWhenInUseUsageDescription 我们需要获取您的位置上传,以便客户查看您的位置,估算工程进度 NSMicrophoneUsageDescription 我们需要启用您的麦克风,以便采集您的语音 NSMotionUsageDescription 是否允许此App使用您的传感器? NSPhotoLibraryAddUsageDescription App需要您的同意,才能保存图片到相册 NSPhotoLibraryUsageDescription 我们需要获取用户相册内的图片,以供您选择上传 NSRemindersUsageDescription App需要您的同意,才能访问提醒事项 NSSiriUsageDescription 是否允许此App使用Siri? NSSpeechRecognitionUsageDescription 是否允许此App使用语音识别?

 

=============获取相机权限=================

#import "UIViewController+CameraGetAuthory.h" #import @implementation UIViewController (CameraGetAuthory) -(void)CameraGetAuthory{ AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];//获取摄像头 if (device) { AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];//判断用户是否有权限访问相机 if (status == AVAuthorizationStatusNotDetermined) { //请求权限 [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { if (granted) { dispatch_async(dispatch_get_main_queue(), ^{ }); // 用户第一次同意了访问相机权限 } else { // 用户第一次拒绝了访问相机权限 } }]; } else if (status == AVAuthorizationStatusAuthorized) { // 用户允许当前应用访问相机 } else if (status == AVAuthorizationStatusDenied) { // 用户拒绝当前应用访问相机 UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"⚠️ 警告" message:@"请去-> [设置 - 隐私 - 相机 - SGQRCodeExample] 打开访问开关" preferredStyle:(UIAlertControllerStyleAlert)]; UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) { }]; [alertC addAction:alertA]; // [self presentViewController:alertC animated:YES completion:nil]; } else if (status == AVAuthorizationStatusRestricted) { NSLog(@"因为系统原因, 无法访问相册"); } } else { UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"温馨提示" message:@"未检测到您的摄像头" preferredStyle:(UIAlertControllerStyleAlert)]; UIAlertAction *alertA = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) { }]; [alertC addAction:alertA]; // [self presentViewController:alertC animated:YES completion:nil]; } } @end

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3