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

时间:2015-08-20 10:42:54

标签: objective-c macos cocoa sandbox accessibility-api

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

这就是苹果所说的:

  

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

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

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

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

2 个答案:

答案 0 :(得分:6)

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

你应该做的是首先通过bugreporter.apple.com提交一个错误,告诉你在尝试使用辅助功能和为什么这么做,并要求他们给你一个沙盒例外。如果他们批准异常,他们可能会为您提供一个沙盒配置文件语言代码,可以从(稍微弱化)沙箱中调用辅助功能API。

据说,根据您正在做的事情,如果Apple说“对不起,该应用程序不适合应用程序商店模型,请不要感到惊讶。请使用禁用沙盒的开发人员ID签署您的应用程序,并且将它分发到商店外面。“

答案 1 :(得分:5)

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