MacOS - 请求音视频权限时显示错误的应用程序标题?

4
我们希望在我们的Mac应用程序中使用音频和摄像头,一般情况下这是可以正常工作的。但是有一个小问题,如果我们从另一个应用程序(例如终端)启动我们的应用程序时,当权限提示出现时,请求访问的应用程序是顶层应用程序,即终端,而不是我们的应用程序名称。

Wrong app title on permission

如果我们的应用程序独立于Finder等运行,则权限提示中会显示正确的标题。

enter image description here

我认为可能是缺少CFBundleDisplayName,但这并没有帮助。
void PERMISSIONS::checkAudioPermission() const
{
   if (@available(macOS 10.14, *))
   {
      AVAuthorizationStatus audioAuthStatus =
         [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
      if (audioAuthStatus != AVAuthorizationStatusAuthorized)
      {
         // If the user has not definitively said Yes or No, ask them to do so.
         if (audioAuthStatus == AVAuthorizationStatusNotDetermined)
         {
            [AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio
               completionHandler:^(BOOL granted)
            {
               if (granted)
1个回答

2

不幸的是,这实际上是苹果从未修复过的漏洞,可能会被恶意软件利用。Patrick Wardle在他的网站上讨论了这个问题:

https://objective-see.com/blog/blog_0x2F.html

因此,我强烈建议您提交一个漏洞报告,以便解决这个问题。

Original Answer翻译成"最初的回答"


1
非常有趣,谢谢。那篇博客文章似乎确认了检查权限的是顶级应用程序,而不是实际运行的代码。这不仅仅是外观问题,而是一个有缺陷的安全模型? - O'Rooney
1
当然。Patrick已经多次报告了这个漏洞,但是苹果一直忽略这个附带的缺陷。因此,他们收到的投诉越多,就越有可能会关注它。 - jvarela
1
好的,我会的。你/他建议将其归类为某种API错误还是安全问题?实际上,我不确定我会如何编写安全问题报告。 - O'Rooney
1
不,只需按照您在此处描述的方式提交错误报告:期望的结果是向用户显示真实应用程序的名称,而不是启动要访问麦克风或相机的应用程序。关于苹果脚本没有捆绑ID不能成为借口。我们用户可以使用脚本编辑器将脚本转换为具有所有资格的应用程序。 - jvarela
1
无论如何,我想回复“可能是按设计来的,但这种行为对用户和开发人员来说是具有欺骗性和不利的”。 - O'Rooney
显示剩余15条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接