版本记录
版本号 | 时间 |
---|---|
V1.0 | 2017.07.21 |
前言
在app中,对于很多视频音频类的app,在进行视频和音频等很多相关逻辑都需要先判断摄像头和麦克风权限,这一篇就说一下方法。感兴趣的可以看看我写的其他小技巧。
1. 实用小技巧(一):UIScrollView中上下左右滚动方向的判断
2. 实用小技巧(二):屏幕横竖屏的判断和相关逻辑
3.实用小技巧(三):点击手势屏蔽子视图的响应
4.实用小技巧(四):动态的增删标签视图
5.实用小技巧(五):通过相册或者相机更改图标
6.实用小技巧(六):打印ios里所有字体
7. 实用小技巧(七):UITableViewCell自适应行高的计算
8. 实用小技巧(八):数字余额显示的分隔
9.实用小技巧(九):类头条模糊背景的实现
10.实用小技巧(十):晃动手机换后台服务器网络
11.实用小技巧(十一):scrollView及其子类显示的一些异常处理
12.实用小技巧(十二):头像图片缩放以及保存到相册简单功能的实现
13.实用小技巧(十三):一种类酷我音乐盒动画实现
14.实用小技巧(十四):生成跳往applestore指定app的方法
15.实用小技巧(十五):左侧向右滑动返回上一级控制器
16.实用小技巧(十六):获取设备信息
17.实用小技巧(十七):清除缓存目录
18.实用小技巧(十八):取出gif图的每一帧
功能需求
判断照相机和麦克风的权限。
功能实现
下面我们就用#import <AVFoundation/AVFoundation.h>
这个库,来获取照相机和麦克风的权限。
下面我们就直接看代码。
#import "JJAuthorityVC.h"
#import <AVFoundation/AVFoundation.h>
@interface JJAuthorityVC ()
@end
@implementation JJAuthorityVC
#pragma mark - Override Private Function
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor lightGrayColor];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//判断照相机和,麦克风权限
NSString *mediaType = AVMediaTypeVideo;//读取媒体类型
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//读取设备授权状态
if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
NSString *errorStr = @"应用相机权限受限,请在设置中启用";
[self pushAlertWithMessage:errorStr];
return;
}
else {
[self pushAlertWithMessage:@"可以使用相机"];
}
mediaType = AVMediaTypeAudio;//读取媒体类型
authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//读取设备授权状态
if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
NSString *errorStr = @"麦克风权限受限,请在设置中启用";
[self pushAlertWithMessage:errorStr];
return;
}
else{
[self pushAlertWithMessage:@"可以使用麦克风"];
}
}
#pragma mark - Object Private Function
- (void)pushAlertWithMessage:(NSString *)message
{
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:message preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *ensureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
return;
}];
[alertVC addAction:ensureAction];
[self presentViewController:alertVC animated:YES completion:nil];
}
@end
在运行代码后,会发现控制台打印如下消息。
2017-07-21 20:20:03.718718+0800 JJOC[4737:1350171] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
2017-07-21 20:20:03.720009+0800 JJOC[4737:1350171] [MC] Reading from public effective user settings.
找到原因,其实是info.plist
中需要配置一下权限问题,如下图所示。
这里配置的就是相机和麦克风的权限。
细看会发现,这里面有很多有关权限方面的配置,更体现了苹果对应安全性的重视。
功能效果
下面看一下功能效果。
这里的功能效果,是已经默认有了权限,提示可以使用相机,在具体工程中,如果在设置中关闭了这两个权限,就会提示应用相机权限受限,请在设置中启用
和麦克风权限受限,请在设置中启用
。
后记
未完,待续~~~~