版本記錄
| 版本號(hào) | 時(shí)間 |
|---|---|
| V1.0 | 2017.07.21 |
前言
在app中,對(duì)于很多視頻音頻類(lèi)的app,在進(jìn)行視頻和音頻等很多相關(guān)邏輯都需要先判斷攝像頭和麥克風(fēng)權(quán)限,這一篇就說(shuō)一下方法。感興趣的可以看看我寫(xiě)的其他小技巧。
1. 實(shí)用小技巧(一):UIScrollView中上下左右滾動(dòng)方向的判斷
2. 實(shí)用小技巧(二):屏幕橫豎屏的判斷和相關(guān)邏輯
3.實(shí)用小技巧(三):點(diǎn)擊手勢(shì)屏蔽子視圖的響應(yīng)
4.實(shí)用小技巧(四):動(dòng)態(tài)的增刪標(biāo)簽視圖
5.實(shí)用小技巧(五):通過(guò)相冊(cè)或者相機(jī)更改圖標(biāo)
6.實(shí)用小技巧(六):打印ios里所有字體
7. 實(shí)用小技巧(七):UITableViewCell自適應(yīng)行高的計(jì)算
8. 實(shí)用小技巧(八):數(shù)字余額顯示的分隔
9.實(shí)用小技巧(九):類(lèi)頭條模糊背景的實(shí)現(xiàn)
10.實(shí)用小技巧(十):晃動(dòng)手機(jī)換后臺(tái)服務(wù)器網(wǎng)絡(luò)
11.實(shí)用小技巧(十一):scrollView及其子類(lèi)顯示的一些異常處理
12.實(shí)用小技巧(十二):頭像圖片縮放以及保存到相冊(cè)簡(jiǎn)單功能的實(shí)現(xiàn)
13.實(shí)用小技巧(十三):一種類(lèi)酷我音樂(lè)盒動(dòng)畫(huà)實(shí)現(xiàn)
14.實(shí)用小技巧(十四):生成跳往applestore指定app的方法
15.實(shí)用小技巧(十五):左側(cè)向右滑動(dòng)返回上一級(jí)控制器
16.實(shí)用小技巧(十六):獲取設(shè)備信息
17.實(shí)用小技巧(十七):清除緩存目錄
18.實(shí)用小技巧(十八):取出gif圖的每一幀
功能需求
判斷照相機(jī)和麥克風(fēng)的權(quán)限。
功能實(shí)現(xiàn)
下面我們就用#import <AVFoundation/AVFoundation.h>這個(gè)庫(kù),來(lái)獲取照相機(jī)和麥克風(fēng)的權(quán)限。
下面我們就直接看代碼。
#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
{
//判斷照相機(jī)和,麥克風(fēng)權(quán)限
NSString *mediaType = AVMediaTypeVideo;//讀取媒體類(lèi)型
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//讀取設(shè)備授權(quán)狀態(tài)
if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
NSString *errorStr = @"應(yīng)用相機(jī)權(quán)限受限,請(qǐng)?jiān)谠O(shè)置中啟用";
[self pushAlertWithMessage:errorStr];
return;
}
else {
[self pushAlertWithMessage:@"可以使用相機(jī)"];
}
mediaType = AVMediaTypeAudio;//讀取媒體類(lèi)型
authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];//讀取設(shè)備授權(quán)狀態(tài)
if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied){
NSString *errorStr = @"麥克風(fēng)權(quán)限受限,請(qǐng)?jiān)谠O(shè)置中啟用";
[self pushAlertWithMessage:errorStr];
return;
}
else{
[self pushAlertWithMessage:@"可以使用麥克風(fēng)"];
}
}
#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
在運(yùn)行代碼后,會(huì)發(fā)現(xiàn)控制臺(tái)打印如下消息。
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.
找到原因,其實(shí)是info.plist中需要配置一下權(quán)限問(wèn)題,如下圖所示。
這里配置的就是相機(jī)和麥克風(fēng)的權(quán)限。

細(xì)看會(huì)發(fā)現(xiàn),這里面有很多有關(guān)權(quán)限方面的配置,更體現(xiàn)了蘋(píng)果對(duì)應(yīng)安全性的重視。

功能效果
下面看一下功能效果。

這里的功能效果,是已經(jīng)默認(rèn)有了權(quán)限,提示可以使用相機(jī),在具體工程中,如果在設(shè)置中關(guān)閉了這兩個(gè)權(quán)限,就會(huì)提示應(yīng)用相機(jī)權(quán)限受限,請(qǐng)?jiān)谠O(shè)置中啟用和麥克風(fēng)權(quán)限受限,請(qǐng)?jiān)谠O(shè)置中啟用。
后記
未完,待續(xù)~~~~
