iOS請(qǐng)求相機(jī)權(quán)限

請(qǐng)求相機(jī)權(quán)限冯痢,未授權(quán)過(guò)的話彈出系統(tǒng)彈框则奥,不是第一次授權(quán)直接返回結(jié)果,如果被禁止了提示用戶(hù)去開(kāi)啟爆阶,支持8.0以上系統(tǒng)直接跳轉(zhuǎn)到設(shè)置

+ (void)requestUseVideoCamera:(void(^)(BOOL isCanUse))CompletionHandler
{
        NSString *tipTextWhenNoPhotosAuthorization; // 提示語(yǔ)
        NSString *mediaType = AVMediaTypeVideo;     //讀取媒體類(lèi)型
        AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];          //讀取設(shè)備授權(quán)狀態(tài)
        if(authStatus == AVAuthorizationStatusRestricted || authStatus == AVAuthorizationStatusDenied) {
            NSDictionary *mainInfoDictionary = [[NSBundle mainBundle] infoDictionary];
            NSString *appName = [mainInfoDictionary objectForKey:@"CFBundleDisplayName"];
            tipTextWhenNoPhotosAuthorization = [NSString stringWithFormat:@"請(qǐng)?jiān)赲"設(shè)置-隱私-相機(jī)\"選項(xiàng)中窍育,允許%@訪問(wèn)你的手機(jī)相機(jī)", appName];
            UIViewController *currentController = [[AppDelegate appDelegate] getNewCurrentViewController];

            [self showAlertViewFromController:currentController
                                        title:@"溫馨提示"
                                      message:tipTextWhenNoPhotosAuthorization
                            CancleButtonTitle:@"取消"
                             otherButtonTitle:@"去設(shè)置"
                            cancleButtonClick:^{

                            } otherButtonClick:^{
                                [self openSystemSetting];
                            }];
            // 展示提示語(yǔ)
            NSLog(@" -- %@ ",tipTextWhenNoPhotosAuthorization);
            if (CompletionHandler) {
                CompletionHandler(NO);
            }
        }
        else if(authStatus == AVAuthorizationStatusNotDetermined) { //第一次請(qǐng)求遂铡。
            [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
                    dispatch_async(dispatch_get_main_queue(), ^{
                        if (CompletionHandler) {
                             CompletionHandler(granted);
                        }
                      }];
             });
        }
        else {
            if (CompletionHandler) {
                CompletionHandler(YES);
            }
        }
}

+ (void)openSystemSetting
{
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
    }
}
+ (void)showAlertViewFromController:(UIViewController *)controller
                              title:(NSString *)title
                            message:(NSString *)message
                  CancleButtonTitle:(NSString *)cancleTitle
                   otherButtonTitle:(NSString *)otherTitle
                  cancleButtonClick:(void(^)(void))cancleClick
                   otherButtonClick:(void(^)(void))otherButtonClick
{
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title
                                                                             message:message
                                                                      preferredStyle:UIAlertControllerStyleAlert];
    [alertController addAction:[UIAlertAction actionWithTitle:cancleTitle
                                                        style:UIAlertActionStyleCancel
                                                      handler:^(UIAlertAction * _Nonnull action) {
                                                          cancleClick ();
                                               }]];          
    
    [alertController addAction:[UIAlertAction actionWithTitle:otherTitle
                                                        style:UIAlertActionStyleDefault
                                                      handler:^(UIAlertAction * _Nonnull action) {
                                                          otherButtonClick ();
                                                      }]];
    
    [controller presentViewController:alertController
                             animated:YES
                           completion:nil];
}

需要導(dǎo)入

#import <AVFoundation/AVCaptureDevice.h>

其中遇到的比較坑的點(diǎn)是

[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { 
//分線程
});

回調(diào)的block是分線程截亦。不小心在block里操作UI就會(huì)有詭異的現(xiàn)象發(fā)生爬泥,比如push會(huì)大約8秒才跳轉(zhuǎn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末崩瓤,一起剝皮案震驚了整個(gè)濱河市袍啡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌却桶,老刑警劉巖境输,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異颖系,居然都是意外死亡嗅剖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)嘁扼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)信粮,“玉大人,你說(shuō)我怎么就攤上這事趁啸∏吭担” “怎么了督惰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)旅掂。 經(jīng)常有香客問(wèn)我赏胚,道長(zhǎng),這世上最難降的妖魔是什么商虐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任觉阅,我火速辦了婚禮,結(jié)果婚禮上称龙,老公的妹妹穿的比我還像新娘留拾。我一直安慰自己戳晌,他們只是感情好鲫尊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著沦偎,像睡著了一般疫向。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豪嚎,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天搔驼,我揣著相機(jī)與錄音,去河邊找鬼侈询。 笑死舌涨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扔字。 我是一名探鬼主播囊嘉,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼革为!你這毒婦竟也來(lái)了扭粱?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤震檩,失蹤者是張志新(化名)和其女友劉穎琢蛤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抛虏,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡博其,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迂猴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慕淡。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖错忱,靈堂內(nèi)的尸體忽然破棺而出儡率,到底是詐尸還是另有隱情挂据,我是刑警寧澤,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布儿普,位于F島的核電站崎逃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏眉孩。R本人自食惡果不足惜个绍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望浪汪。 院中可真熱鬧巴柿,春花似錦、人聲如沸死遭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)呀潭。三九已至钉迷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钠署,已是汗流浹背糠聪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谐鼎,地道東北人舰蟆。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像狸棍,于是被迫代替她去往敵國(guó)和親身害。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)隔缀、插件题造、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,096評(píng)論 4 62
  • 大膽的設(shè)想 其實(shí)他的冷漠 并不如是 大概他不過(guò)是很真實(shí)的在表達(dá)自己
    邋遢褲子閱讀 75評(píng)論 0 0
  • 今天放學(xué)從從河邊走 ,以前也沒(méi)注意什么猾瘸。 今天先是往對(duì)面望了一下 界赔。看哪塊有燈亮著牵触。在仔細(xì)一看淮悼。風(fēng)雨廊橋。我欣喜...
    老領(lǐng)導(dǎo)閱讀 306評(píng)論 0 1
  • 昨晚河邊散步揽思,看到一位年輕卻胖到有200多斤的女子在艱難的減肥袜腥,我一直在想為什么會(huì)如此放縱自己,就在我準(zhǔn)備嘆息...
    琳琳琳琳才閱讀 512評(píng)論 0 1