#delphi #firemonkey #delphi-11-alexandria
#delphi #firemonkey #delphi-11-Александрия
Вопрос:
Проект Delphi 11 на macOS запрашивает разрешение с использованием этого кода:
procedure TCOWMainForm.Button1Click(Sender: TObject);
var
fMic: FMX.Media.TAudioCaptureDevice;
begin
fMic := TAVCaptureDeviceManager.Current.DefaultAudioCaptureDevice;
if (fMic <> nil) then
begin
ShowMessage('fMic not nil so calling fMic.RequestPermission');
fMic.RequestPermission;
end;
end;
Project | Options | Version Info
включает в себя пару ключей
NSMicrophoneUsageDescription "COW records your voice."
Тем не менее, проект завершается при вызове fMic.RequestPermission
, согласно документации Apple:
Запрашивает авторизацию для захвата мультимедиа в macOS
Чего мне может не хватать при попытке получить разрешение на использование микрофона в нотариально заверенном приложении macOS?
Отредактировано, чтобы включить этот Embarcadero RSP, который имеет минимальный проект, который воспроизводит проблему.
Комментарии:
1. Представленный вами код работает для меня.
2. Я думаю, что это должно быть что-то о паре ключей NSMicrophoneUsageDescription или невозможности для ключа к нему попасть в список прав доступа. Есть ли способ проверить полученные права в нотариально заверенном приложении?
3. @DaveNottage Спасибо, что проверили это. С тех пор я открыл нотариально заверенное приложение, используя Show Package Contents, а Info.plist показывает ключ NSMicrophoneUsageDescription и его строку.
4. @DaveNottage Я перепроверяю. Мой код работает нормально при обычном развертывании. Точно такой же проект, заверенный нотариально, вылетает сразу после запроса разрешения. Итак, когда вы говорите, что код работает для вас, вы использовали нотариально заверенную версию?
Ответ №1:
Благодаря @DaveNottage оказывается, что нотариально заверенному приложению Delphi требуется нечто большее, чем пара ключей NSMicrophoneUsageDescription в Info.plist.
Проект также должен Project | Options | Application | Entitlement List | Audio Input
иметь значение True.