requestAccessForMediaType não pede permissão
Percebi que meu aplicativo não solicita permissão para usar a câmera. Após algumas experiências, descobri que o código usado para verificar a permissão leva muito tempo para ser concluído. Então, pensei em deixar essa parte do meu viewdidload ser executada em uma fila serial (sincronização). Forçando o resto a aguardar a conclusão do processo de autenticação antes de iniciar a próxima linha. Mas isso realmente não funciona. As linhas começam em ordem, mas ainda não terminam em ordem.
O estranho é que, se eu pedir a permissão e não fizer nada com ela, sem o completeHandler (como o código abaixo), ele executará a segunda vez que eu o executar com o completeHandler perfeitamente, embora ainda não mostre um alerta para o usuário. Pode ser porque a gravação de vídeo não precisa de permissão na Europa?avcapturedevice ref
Se eu quiser que o código seja executado linha por linha, preciso usar barreiras? ou sincronizar fila de série ou?
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { nil }())
Atualizar:
Este método deve ser bastante seguro, mas não é. Retorna true por garantido, mas 3 para o rawValue (negado)
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
}
})
}
Atualização 2: responda nos comentários abaixo. - Redefina as configurações de privacidade do dispositivo para obter a solicitação.
rawValue para autorizado é 3 e não 4