如何使用沙盒应用程序的辅助功能?

Ale*_*tan 7 macos cocoa sandbox objective-c accessibility-api

OS X有一个很好的功能,如Accessibility API,它允许从您的应用程序代码控制一些系统元素和另一个应用程序.但是在打开Sandbox后它就会停止工作.要向商店提交应用程序,必须启用沙盒.

这就是Apple所说的:

使用App Sandbox,您可以并且应该启用应用程序的可访问性,如本文档中所述.但是,您无法对辅助应用程序(如屏幕阅读器)进行沙箱处理,也无法对控制其他应用程序的应用程序进行沙箱处理.

但App Store有一些使用Accessibility API的应用程序:

  • Cinch - 调整Windows大小
  • BetterSnapTool - 同样的
  • PopClip - 获取所选文本

所以这意味着可以一起使用Sandbox/Accessibility API/App Store,但是如何?

dga*_*ood 6

从几年前开始,OS X沙箱中无法提供Accessibility API,但这可能已经发生变化.但是,更有可能的是,这些应用程序设法从Apple获得特殊例外,并且他们有额外的沙盒权利,这些权利部分将其从沙箱中分离出来,足以让他们使用辅助功能API.

你应该做的是首先通过bugreporter.apple.com提交一个bug,告诉你在尝试使用可访问性和原因,并要求他们给你一个沙盒例外.如果他们批准异常,他们可能会为您提供一个沙盒配置文件语言代码的自定义位置,从而可以从(稍微削弱)沙箱中调用辅助功能API.

话虽如此,根据您正在做的事情,如果Apple说"抱歉,该应用程序不适合应用程序商店模型,请不要感到惊讶.请使用禁用沙盒的开发者ID签署您的应用程序,并将其分发到外部商店."


poi*_*tum 6

在2012年实施沙盒之前,所有这些应用程序都已在App Store上运行.我自己的HazeOver应用程序也是如此.它只能使用可访问性,因为它仍然没有沙盒.Apple允许更新这些应用程序,但如果没有沙箱,他们将不接受任何新应用程序.

  • 它在2011年被称为Window Magnet:https://web.archive.org/web/20110101000000*/http://magnet.crowdcafe.com/ (2认同)