Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Accessibility API stops working after sandboxing

My Mac App uses accessibility API to move an resize window (of other apps).

I would like to submit my app to the MAS (Mac App Store). I have read that to submit an app to the MAS is mandatory to turn on sandboxing.

When I turn on the sandboxing my code can´t find the focused window through the accessibility API (always return NULL). The question is: the accessibility API can´t be used with sandboxing?

I notice that there are applications in the Mac App Store that uses accessibility API, is not mandatory sandboxing by now?

Thanks in advance.

like image 386
Azpiri Avatar asked Jan 15 '12 16:01

Azpiri


1 Answers

First, by March June, 2012, all Apps on the Mac Apple Store will be required to be Sandboxed, from the research I've found. Not Sandboxing isn't going to future-proof your app.

Second, I've found 3 strategies that you may consider:

  1. Look up the list of entitlements, and see if you can grant your app access via the Entitlements (Apple's way of allowing Apps special privileges to access key features they'lll need). 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. Submit a bug request to Apple on the specific feature you want access to. Who knows, they may actually update their codebase to allow you access.
  3. Consider selling the app as a product on an e-commerce site, and not selling on the Mac Apple Store. People can still buy and install your app on a regular website (as Versions, TextMate, and other wonderful applications have done before going on MAS), especially if your application does things that can't be found on the MAS.

If you look at the documentation, you'll find that it explicitly states you cannot sandbox an assistive app.

Here's an excerpt from their documentation on preparing an App for Sandbox:

Use of accessibility APIs in assistive apps

With App Sandbox, you can and should enable your app for accessibility, as described in Accessibility Overview. However, you cannot sandbox an assistive app such as a screen reader, and you cannot sandbox an app that controls another app.

Here's an excerpt from their documentation on Accesibility in Cocoa:

Note: 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.

It sounds a bit like double-speak: you should enable your app to be Accessible however you cannot sandbox an assistant app...

like image 58
Dominic Tancredi Avatar answered Sep 26 '22 00:09

Dominic Tancredi