沙盒后,辅助功能API停止工作

时间:2012-01-15 16:16:56

标签: cocoa sandbox mac-app-store accessibility-api

我的Mac应用程序使用辅助功能API移动调整大小窗口(其他应用程序)。

我想将我的应用程序提交给MAS(Mac App Store)。我已经读过要向MAS提交应用程序必须打开沙盒。

当我打开沙盒时,我的代码无法通过辅助功能API找到焦点窗口(始终返回NULL)。问题是:辅助功能API不能与沙盒一起使用?

我注意到Mac App Store中有些应用程序使用辅助功能API,现在不是强制沙盒了吗?

提前致谢。

1 个答案:

答案 0 :(得分:6)

首先,通过 March 2012年6月,从我发现的研究中,Mac Apple Store上的所有应用程序都必须是沙盒。不是沙盒不会让你的应用程序面向未来。

其次,我发现了你可以考虑的3种策略:

  1. Look up the list of entitlementssee if you can grant your app access via the Entitlements(Apple允许Apps特权访问他们需要的关键功能的方式)。 Here's a walk-through via Apple's documentation on how you can stack-trace through which entitlements you're missing and might need
  2. 向Apple提交有关您要访问的特定功能的错误请求。谁知道,他们实际上可能会更新他们的代码库以允许您访问。
  3. 考虑将应用程序作为电子商务网站上的产品销售,而不是在Mac Apple Store上销售。人们仍然可以在常规网站上购买和安装您的应用程序(例如,在继续使用MAS之前,版本,TextMate和其他精彩应用程序已经完成),特别是如果您的应用程序执行了在MAS上找不到的内容。
  4. 如果您查看文档,您会发现它明确声明您无法对辅助应用程序进行沙盒化。

    这是excerpt from their documentation on preparing an App for Sandbox

      

    在辅助应用中使用辅助功能API

         

    使用App Sandbox,您可以并且应该为您的应用启用辅助功能,如中所述   辅助功能概述。但是,您不能沙盒辅助应用程序   例如屏幕阅读器,你不能沙盒控制的应用程序   另一个应用程序。

    这是excerpt from their documentation on Accesibility in Cocoa

      

    注意:使用App Sandbox,您可以并且应该为您的应用启用   可访问性,如本文档中所述。但是,你做不到   沙箱一个辅助应用程序,如屏幕阅读器,你不能   沙盒是一个控制另一个应用程序的应用程序。

    听起来有点像双语:你应该让你的应用可访问但是你不能沙盒助理应用...