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 请求使用麦克风的权限的主要内容,如果未能解决你的问题,请参考以下文章
请求在 iOS 11 中使用 iPhone 麦克风的权限时应用程序崩溃