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

Posted

技术标签:

【中文标题】为同一台机器上的两个应用程序实例处理 Mojave 权限(摄像头、麦克风和可访问性)【英文标题】:Handling Mojave permissions ( camera, mic & accessibility) for two instances of app in same machine 【发布时间】:2019-04-10 19:36:29 【问题描述】:

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

既然bundle id是一样的,那给app提供权限不是也传到两个instance上了吗?

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

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

    有没有办法在默认情况下提供对应用程序的所有访问权限而不要求任何权限弹出窗口? 或者有什么方法可以在操作系统级别调整某些内容以完全不请求权限(行为与

【问题讨论】:

【参考方案1】:

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

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

如果您使用适当的指定要求对应用进行代码签名,则系统可以了解应用的两个不同版本具有相同的身份并且应该共享权限。例如,这是应用通过升级到新版本来保持权限的关键。

【讨论】:

谢谢@ken。这真的很有帮助。由于该应用程序的第二个版本是调试版本,因此之前没有进行代码签名。我现在做了代码签名,一切似乎都很好。再次感谢

以上是关于为同一台机器上的两个应用程序实例处理 Mojave 权限(摄像头、麦克风和可访问性)的主要内容,如果未能解决你的问题,请参考以下文章

同一台机器上的两个程序相互通信的最佳方式是啥

在 .NET 中,同一台机器上的两个进程进行通信的最佳方式是啥?

我可以在同一台机器上运行两个tomcat实例吗?

多核机器上的多个程序实例

我可以在同一台机器上运行两个 tomcat 实例吗?

用于 Windows 和 Linux 的同一台机器上的套接字