Delphi MacOS 请求使用麦克风的权限

Posted

技术标签:

【中文标题】Delphi MacOS 请求使用麦克风的权限【英文标题】:Delphi MacOS request permission to use microphone 【发布时间】:2022-01-14 13:47:11 【问题描述】:

MacOS 上的 Delphi 11 项目正在使用此代码请求权限:

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."

不过,根据 Apple 文档,该项目在调用 fMic.RequestPermission 时被终止:

Requesting Authorization for Media Capture on macOS

在尝试获得在 macOS 公证应用中使用麦克风的许可时,我可能会遗漏什么?

已编辑以包含此 Embarcadero RSP,该 RSP 具有重现该问题的最小项目。

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

【问题讨论】:

你提供的代码对我有用。 我认为它必须与 NSMicrophoneUsageDescription 密钥对有关,或者它的密钥无法进入权利 plist。有没有办法在经过公证的应用程序中检查产生的权利? @DaveNottage 感谢您对此进行检查。我已经使用 Show Package Contents 打开了经过公证的应用程序,Info.plist 显示了 NSMicrophoneUsageDescription 键及其字符串。 @DaveNottage 我正在仔细检查。我的代码在正常部署时运行良好。完全相同的项目在经过公证后会在请求许可后立即崩溃。那么,当您说代码适合您时,您是否运行了经过公证的版本? 【参考方案1】:

感谢@DaveNottage,看起来经过公证的 Delphi 应用程序需要的不仅仅是 Info.plist 中的 NSMicrophoneUsageDescription 密钥对。

该项目还需要Project | Options | Application | Entitlement List | Audio Input被勾选为True。

【讨论】:

以上是关于Delphi MacOS 请求使用麦克风的权限的主要内容,如果未能解决你的问题,请参考以下文章

苹果系统macos腾讯企点无法打开麦克风权限

苹果系统macos腾讯企点无法打开麦克风权限

请求在 iOS 11 中使用 iPhone 麦克风的权限时应用程序崩溃

尝试请求用户在 React 应用程序中使用相机和麦克风的权限

如何重新请求浏览器麦克风的权限?

用户先前不允许后如何再次请求麦克风访问权限?