Как использовать специальные возможности с изолированным приложением?

В OS X есть приятная функция, такая как Accessibility API, которая позволяет управлять некоторыми элементами системы и другими приложениями из кода вашего приложения. Но он перестает работать после включения Sandbox. Чтобы отправить приложение в магазин, обязательно включите песочницу.

Вот что говорит Apple:

С помощью тестовой среды приложения вы можете и должны включить специальные возможности своего приложения, как описано в этом документе. Однако вы не можете помещать в изолированную среду вспомогательное приложение, такое как средство чтения с экрана, и вы не можете помещать в изолированную среду приложение, которое управляет другим приложением.

Но в App Store есть несколько приложений, использующих Accessibility API:

  • Cinch — изменить размер Windows
  • BetterSnapTool - то же самое
  • PopClip — получает выделенный текст

Таким образом, это означает, что можно использовать Sandbox/Accessibility API/App Store вместе, но как?


person Alex Sieroshtan    schedule 20.08.2015    source источник


Ответы (2)


Еще пару лет назад API-интерфейсы специальных возможностей были недоступны из песочницы OS X, но это могло измениться. Однако более вероятно, что этим приложениям удалось получить специальное исключение от Apple, и что у них есть дополнительные права на песочницу, которые частично вырывают их из песочницы ровно настолько, чтобы позволить им использовать API специальных возможностей.

Что вы должны сделать, так это сначала сообщить об ошибке через bugreporter.apple.com, рассказав, что вы пытаетесь сделать со специальными возможностями и почему, и попросив их предоставить вам исключение для песочницы. Если они одобрят исключение, они, вероятно, предоставят вам собственный код языка профиля песочницы, который позволит вызывать API специальных возможностей из (несколько ослабленной) песочницы.

При этом, в зависимости от того, что вы делаете, не удивляйтесь, если Apple скажет: «Извините, это приложение не соответствует модели магазина приложений. Пожалуйста, подпишите свое приложение, используя идентификатор разработчика с отключенной песочницей, и распространяйте его за пределами магазин."

person dgatwood    schedule 23.08.2015

Все эти приложения появились в App Store до того, как в 2012 году была введена песочница. С моим собственным приложением HazeOver та же история. Он может использовать специальные возможности только потому, что он еще не изолирован. Apple разрешает обновлять эти приложения, но они не будут принимать новые приложения без песочницы.

person pointum    schedule 27.08.2015
comment
Итак, другой пример — Magnet.app, кажется, он вышел весной 2015 года, но тоже использует AAPI. itunes.apple.com/ua/app/magnet/id441258766 - person Alex Sieroshtan; 27.08.2015
comment
В 2011 году он назывался Window Magnet: web.archive.org/web/20110101000000*/ magnet.crowdcafe.com - person pointum; 27.08.2015