實(shí)用小技巧(十九):獲取相機(jī)和麥克風(fēng)權(quán)限

版本記錄

版本號(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)限。

配置權(quán)限

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

配置權(quán)限

功能效果

下面看一下功能效果。

功能效果

這里的功能效果,是已經(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ù)~~~~

夜景
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容