내 앱에서 카메라 사용 권한을 요청하지 않는 것으로 나타났습니다. 몇 가지 실험을 마치고 승인을 확인하는 데 사용 된 코드 조각을 완성하는 데 오랜 시간이 걸리는 것으로 나타났습니다. 그래서 내 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
테스트 할 때마다 앱을 삭제합니다. 위치 승인 요청은 정상적으로 처리됩니다. 차이점이없는 주 스레드로 요청을 이동합니다. –
테스트 할 때 프라이버시 설정을 재설정해야합니다 (설정> 일반> 위치 및 개인 정보 재설정 재설정). 이렇게하면 더 신뢰할 수있는 결과를 얻을 수 있습니다. 앱을 삭제하고 다시 설치할 때 여전히 앱 사용 권한을 요청하지 않습니다. – Alex
또한, [AVCaptureDevice authorizationStatusForMediaType : type]을 통해'AVAuthorizationStatus'를 검사 해보십시오. 만약 그것이 결정되지 않았다면, 접근을 요청하십시오. 제한되거나 거부 된 경우 사용자에게 권한이있는 경우 경고를 표시합니다. – Alex