2016-01-09 47 views
3

我有一些問題要求用戶關於相機的權限。 authorizationStatus總是NotDetermined。當我試圖詢問用戶許可時,AVCaptureDevice.requestAccessForMediaType永遠不會彈出對話框,並始終返回false。我也無法在設置 - 隱私 - 相機中找到我的應用程序。AVCaptureDevice.requestAccessForMediaType永遠不會彈出窗口,並總是返回false

任何人都可以幫助我嗎?非常感謝

let availableCameraDevices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) 
    for device in availableCameraDevices{ 

     if (device.position == .Back){ 
      backCameraDevice = device 
     }else{ 
      if (device.position == .Front){ 
       frontCameraDevice = device 
      } 
     } 
    } 

    let authorizationStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) 
    switch authorizationStatus { 
    case .NotDetermined: 
     // permission dialog not yet presented, request authorization 
     AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, 
      completionHandler: { (granted:Bool) -> Void in 
       if (granted == false) { 
        print(granted) 
       } 
       else { 
        print(granted) 
       } 
     }) 
    case .Authorized: break 
     // go ahead 
    case .Denied, .Restricted: break 
     // the user explicitly denied camera usage or is not allowed to access the camera devices 
    } 

回答

6

問題解決了。看起來,當我們從iOS 8升級到iOS 9時,它在info.plist中有一個新的屬性,它是Bundle Display Name。將名稱設置爲您的產品名稱,如果它爲空,或系統永遠不會知道什麼應用程序要求權限

0

當授權狀態爲.NotDetermined時,您應該始終能夠顯示權限對話框。

這個以及您在隱私設置中找不到該應用程序的事實使您的手機聽起來像是感到困惑 - 因此請嘗試通過去Settings.app > General > Reset並點擊Reset Location & Privacy來重置您的隱私設置。

+0

我試圖構建一個新的應用程序並運行相同的代碼,並且它會觸發系統對話框以允許允許。但是,它不適用於我的舊應用程序...我不確定是否有任何需要在info.list中設置的內容。此外,我已經嘗試重置隱私多次,並且我的iPhone上的每個應用程序都請求訪問除我的攝像頭外的其他設備。 –

+0

更新:在新應用程序中,當我運行AVCaptureDevice.requestAccessForMediaType時,它首先彈出一個系統對話框讓用戶選擇,然後返回授予。但在我的應用程序,AVCaptureDevice.requestAccessForMediaType只是自動拒絕權限 –

+0

即使重置?也許你的應用程序對UIKit做一些有趣的事 –

相關問題