2015-01-29 4 views
3

내 앱에서 카메라 사용 권한을 요청하지 않는 것으로 나타났습니다. 몇 가지 실험을 마치고 승인을 확인하는 데 사용 된 코드 조각을 완성하는 데 오랜 시간이 걸리는 것으로 나타났습니다. 그래서 내 viewdidload의 일부를 직렬 대기열 (sync)에서 실행하도록했습니다. 다음 라인을 시작하기 전에 나머지 프로세스가 인증 프로세스를 완료 할 때까지 기다리게합니다. 그러나 그것은 실제로 작동하지 않습니다. 선은 순서대로 시작하지만 여전히 순서대로 끝나지 않습니다.requestAccessForMediaType이 허가를 요청하지 않습니다.

이상한 점은 내가 허가를 요청하고 아무 것도하지 않으면 completionHandler (아래 코드와 같음)가 실행되고 두 번째로 completionHandler를 실행한다는 것입니다. 여전히 그렇지 않습니다. 사용자에게 경고를 표시합니다. 녹화 비디오가 유럽에서 허가를 필요로하지 않기 때문일 수 있습니까? avcapturedevice ref

코드를 한 줄씩 실행하려면 장벽을 사용해야합니까? 또는 직렬 큐의 동기화 또는 ??

AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { nil }()) 

업데이트 :

이 방법은 매우 안전하지되어야하지만 그렇지. 아래 댓글에 답 : 그것은 (거부)를 rawValue

func checkForAuthorizationStatus() { 
     println("auth me") 
     AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { 
      granted in 
      if granted { 
       println("granted: \(granted)") 
       self.deviceAuthorized = true 
       println("raw value: \(AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo).rawValue)") 
      } else { 
       self.deviceAuthorized = false 
      } 

     }) 
    } 

업데이트 2 부여에 대한 사실 반환하지만 3. - 기기의 개인 정보 보호 설정을 초기화하여 요청을받습니다. 공인에 대한

  • rawValue는 표시하는 데 시간이 오래 복용하면 당신은 당신이해야 메인 스레드에서이 작업을 실행하지 않는 것 같은, 그것은 소리없는 4

답변

7

3입니다. 또한 이전에 한 번 묻는 메시지가 나타나면 다시 표시되지 않습니다. 사용자가 설정으로 들어가서 카메라 액세스를 활성화해야합니다.

+0

테스트 할 때마다 앱을 삭제합니다. 위치 승인 요청은 정상적으로 처리됩니다. 차이점이없는 주 스레드로 요청을 이동합니다. –

+4

테스트 할 때 프라이버시 설정을 재설정해야합니다 (설정> 일반> 위치 및 개인 정보 재설정 재설정). 이렇게하면 더 신뢰할 수있는 결과를 얻을 수 있습니다. 앱을 삭제하고 다시 설치할 때 여전히 앱 사용 권한을 요청하지 않습니다. – Alex

+0

또한, [AVCaptureDevice authorizationStatusForMediaType : type]을 통해'AVAuthorizationStatus'를 검사 해보십시오. 만약 그것이 결정되지 않았다면, 접근을 요청하십시오. 제한되거나 거부 된 경우 사용자에게 권한이있는 경우 경고를 표시합니다. – Alex

관련 문제