版本記錄
版本號 | 時間 |
---|---|
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
中需要配置一下權限問題,如下圖所示。
這里配置的就是相機和麥克風的權限。
細看會發現,這里面有很多有關權限方面的配置,更體現了蘋果對應安全性的重視。
功能效果
下面看一下功能效果。
這里的功能效果,是已經默認有了權限,提示可以使用相機,在具體工程中,如果在設置中關閉了這兩個權限,就會提示應用相機權限受限,請在設置中啟用
和麥克風權限受限,請在設置中啟用
。
后記
未完,待續~~~~