iOS8相機授權判斷

ihtcboy發表於2015-07-23

最近在做自定義相機,然後就是iOS8要授權才能使用,如果使用者拒絕,那麼,就不能操作。

問題是,怎麼知道使用者第一次選擇相機,並且應用有開啟相機的許可權?

// 在iOS7 時,只有部分地區要求授權才能開啟相機
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {
        // Pre iOS 8 -- No camera auth required.
            
 }else {
        // iOS 8 後,全部都要授權
        
        // Thanks: http://stackoverflow.com/a/24684021/2611971
        
        AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
        switch (status) {
            case AVAuthorizationStatusNotDetermined:{
                // 許可對話沒有出現,發起授權許可
   
                [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
                   
                    if (granted) {
                        //第一次使用者接受
                    }else{
                         //使用者拒絕
                    }
                }];
                break;
            }
            case AVAuthorizationStatusAuthorized:{
                // 已經開啟授權,可繼續
               
                break;
            }
            case AVAuthorizationStatusDenied:
            case AVAuthorizationStatusRestricted:
                // 使用者明確地拒絕授權,或者相機裝置無法訪問
                
                break;
            default:
                break;
        }
        
    }

最後一個坑:

沒有解決:
而問題的關鍵是,在第一次授權時,彈出的AlertView,其實,應用已經在後臺了。當使用者選擇其中一個時,會從新回到前臺,導致第一次時,如果要開啟相機,會非常的慢,暫時還不知道這個問題怎麼解決?歡迎在討論區,謝謝大家!

補充:2015.7.26

發現其它相機應用,剛開啟時,就詢問打授權,可能這就是目前比較好的解決方案?

  • 如果有什麼疑問,可以在評論區一起討論;
  • 如果有什麼不正確的地方,歡迎指導!

注:本文首發於 iHTCboy`s blog,如若轉載,請註明來源。


相關文章