OS X有一个很好的功能,如Accessibility API,它允许从您的应用程序代码控制一些系统元素和另一个应用程序.但是在打开SandBox后它就会停止工作.要向商店提交应用程序,必须启用沙盒.
这就是Apple所说的:
With App SandBox,you can and should enable your app for accessibility,as described in this document. However,you cannot sandBox an assistive app such as a screen reader,and you cannot sandBox an app that controls another app.
但App Store有一些使用Accessibility API的应用程序:
> Cinch – 调整Windows大小
> BetterSnapTool – 同样的
> PopClip – 获取所选文本
所以这意味着可以一起使用SandBox / Accessibility API / App Store,但是如何?
解决方法
从几年前开始,OS X沙箱中无法提供Accessibility API,但这可能已经发生变化.但是,更有可能的是,这些应用程序设法从Apple获得特殊例外,并且他们有额外的沙盒权利,这些权利部分将其从沙箱中分离出来,足以让他们使用辅助功能API.
你应该做的是首先通过bugreporter.apple.com提交一个bug,告诉你在尝试使用可访问性和原因,并要求他们给你一个沙盒例外.如果他们批准异常,他们可能会为您提供一个沙盒配置文件语言代码的自定义位置,从而可以从(稍微削弱)沙箱中调用辅助功能API.
话虽如此,根据您正在做的事情,如果Apple说“抱歉,该应用程序不适合应用程序商店模型,请不要感到惊讶.请使用禁用沙盒的开发者ID签署您的应用程序,并将其分发到外部商店.“