Почему я могу получить CaptureDevice на детской площадке, а не из приложения?
Это поставило меня в тупик. Следующий код отлично работает на детской площадке и правильно находит HD-камеру моего MacBook Pro FaceTime. Однако этот точно такой же код, вырезанный и вставленный в ViewDidLoad моего приложения MacOS, возвращает ноль.
import Cocoa
import AVFoundation
guard let faceTimeCamera = AVCaptureDevice.default(for: .video) else {
print("Darn!")
return
}
print("Got it!")
print(faceTimeCamera)
В приложении нет другого кода. Это совершенно новый шаблон Xcode с добавлением только этого.
Так чего мне не хватает?
Обновление: чего мне не хватало!:)
Два слова: App Sandbox!
Я просто заметил, что по умолчанию новый проект включает функцию песочницы приложения с отключенными функциями "Аудио" и "Камера". Либо их включение, либо отключение самой песочницы позволяет камере работать должным образом.
Странно, однако, несмотря на то, что "Аудио" также было отключено, микрофон все еще отображался в списке доступных устройств захвата. Интересно, почему это так? Кто-нибудь может прокомментировать?