Delphi macOS запрашивает разрешение на использование микрофона

#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, который имеет минимальный проект, который воспроизводит проблему.

https://quality.embarcadero.com/browse/RSP-36541

Комментарии:

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.