首页 > 解决方案 > 为同一台机器上的两个应用程序实例处理 Mojave 权限(摄像头、麦克风和可访问性)

问题描述

我的用例:我有一个适用于 Mac 的自动化框架,可以在不同位置启动同一应用程序的 2 个实例(相同的包 ID),以模拟媒体呼叫的两个端点案例。随着 Mojave 权限的引入,当我为应用程序的一个实例授予权限(相机、麦克风和可访问性)时,另一个实例没有相同的权限。

既然bundle id是一样的,难道不就是为应用提供权限会传递给两个实例吗?

我尝试推送系统配置文件以提供权限,但这似乎不起作用

还添加了一个苹果脚本来不断检查权限弹出并单击确定。这适用于麦克风和相机,但不适用于可访问性。此外,当每个实例启动时,将再次询问权限。

  1. 有没有办法默认提供对应用程序的所有访问权限而不要求任何权限弹出窗口?
  2. 或者有什么方法可以在操作系统级别调整某些内容以完全不请求权限(行为与<10.14相同)..我尝试禁用系统完整性,但这似乎并不能解决这个问题

标签: macos-mojave

解决方案


您需要使用相同的身份对应用程序的所有版本/副本进行代码签名。

当应用程序没有代码签名并且系统需要记录其身份(如权限)时,它会生成一个临时代码签名。但是,该签名仅与该应用程序的确切版本匹配。以任何代码签名相关方式不同的应用程序的另一个副本不被认为具有相同的身份。事实上,它很可能被认为是“恶意的”,因为它似乎已被篡改。

如果您使用适当的指定要求对您的应用程序进行代码签名,这将使系统能够理解应用程序的两个不同版本具有相同的身份并且应该共享权限。例如,这是通过升级到新版本来维护权限的应用程序的关键。


推荐阅读