2015-11-23 2 views
1

я имел быстрый код камеры, который работал на КСН 8 и Xcode 6. я назвал AVCaptureDevice.authorizationStatusForMediaType (AVMediaTypeVideo), но мое приложение не отображается в Settings -> privacy -> Camera (но другие приложения отображаются) cameraстремительные ИОС 9 приложение не в настройках

После обновления до ios 9 и xcode 7 Не удается получить разрешение на работу камеры. Я искал 2 дня в google и stackoverflow.


проблема

Я импортировал AVFoundation и называется AVCaptureDevice.authorizationStatusForMediaType (AVMediaTypeVideo) всегда получают AVAuthorizationStatus.Denied

  1. мое приложение не отображается в меню Настройки -> Приватность -> Camera
  2. Камера черного цвета
  3. requestAccessForMedia Тип не открывается всплывающее окно
  4. authorizationStatusForMediaType всегда Denied

Главная проблема состоит Нет 1. Я думаю, что если я могу получить мое приложение на Настройки -> Приватность -> Camera, то другие проблемы решены.

thigns Я попытался

  • дочерний класс от UIImagePickerController
  • Удалены и переустановил мое приложение
  • Изменено Bundle ID
  • Измененная дата iphone до 3 дней в будущем
  • называется requestAccessForMediaType в основная резьба

  • Xcode 7
  • Ios 9.0 9.1
  • Iphone 5, 5S, 6
  • быстрое 2,1

мой код

override func viewDidLoad() { 
    super.viewDidLoad() 
     cameraView() 
} 

func checkCamera() { 
     let authStatus = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) 
     switch authStatus { 
     case AVAuthorizationStatus.Authorized: 
      print("AVAuthorizationStatus.Authorized") 
     case AVAuthorizationStatus.Denied: 
      print("AVAuthorizationStatus.Denied") 
     case AVAuthorizationStatus.NotDetermined: 
      print("AVAuthorizationStatus.NotDetermined") 
     case AVAuthorizationStatus.Restricted: 
      print("AVAuthorizationStatus.Restricted") 
     default: 
      print("AVAuthorizationStatus.Default") 
     } 

    } 

func cameraView(){ 
     // session 
     let mySession : AVCaptureSession = AVCaptureSession() 
     var myDevice : AVCaptureDevice? //= AVCaptureDevice() 
     let myImageOutput : AVCaptureStillImageOutput = AVCaptureStillImageOutput() 
     let devices = AVCaptureDevice.devices() 

     let audioCaptureDevice = AVCaptureDevice.devicesWithMediaType(AVMediaTypeAudio) 
     let audioInput = (try! AVCaptureDeviceInput(device: audioCaptureDevice[0] as! AVCaptureDevice)) as AVCaptureInput 

     for device in devices { 
      if(device.position == AVCaptureDevicePosition.Back){ 
       myDevice = device as? AVCaptureDevice 
      } 
     } 

     let status = AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) 
     print(status == AVAuthorizationStatus.Authorized) 
     print(status == AVAuthorizationStatus.Denied) 
     print(status == AVAuthorizationStatus.Restricted) 
     print(status.rawValue) 

     if status != AVAuthorizationStatus.Authorized { 

      AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted :Bool) -> Void in 
       if granted == false { 
        // Camera not Authorized 
        dispatch_async(dispatch_get_main_queue()) { 
         print("Camera not Authorized") 
         self.checkCamera() 
         return 
        } 
       } 
      }); 
     } 

ответ

0

Вам необходимо установить новую пару значений Info.plist, такую ​​же, как и для служб привязки для служб местоположения, в iOS8:

Просто введите строку описания для них. enter image description here

+0

Спасибо, что не пробовал. Я добавил код ниже в info.plist.Но до сих пор не появляется в заходящего ' NSCameraUsageDescription \t камеры \t NSPhotoLibraryUsageDescription \t Фотографии' результат AVAuthorizationStatus.NotDetermined при старте уединенности. тогда, когда я спрашиваю разрешение с запросомAccessForMediaType результат AVAuthorizationStatus.Denied – matar

+0

Спасибо, что указал мне в правильном направлении. Это не сработало, когда я добавил эти ключи в свой проект. Итак, я создал новый проект и добавил эти ключи и скопировал файл info.plist в свой проект, и он сработал. – matar

Смежные вопросы