Имитация системных событий Touch на iOS - PullRequest
5 голосов
/ 10 февраля 2012

Мне нужно программно добавить сенсорные события на устройства iOS по всей системе без использования джейлбрейка;Как мне это сделать?

Желательно, чтобы я использовал частный API для выполнения этого в приложении в фоновом режиме.Я знаю, что это препятствует доступности моего приложения в магазине приложений;это, однако, частное приложение, так что это не проблема.

Ответы [ 3 ]

4 голосов
/ 19 июня 2013

Что вам нужно сделать, это сначала создать нужные события, а затем отправить их в SpringBoard через «фиолетовый порт», например. порт Маха. Чтобы сделать их общесистемными, вы должны перенаправить их каждому приложению через порт. Это означает, что вам нужно сделать то, что делает менеджер окон, и посмотреть, какое приложение активно, экран заблокирован и т. Д.

Существует множество частных API-интерфейсов, которые работают (IOSurface, GraphicServices, SpringBoardServices и т. Д.), Чтобы получить нужные вам кусочки.

Вам придется загружать эти частные фреймворки во время выполнения, используя что-то вроде dlopen ().

Это на 100% возможно без джейлбрейка с iOS 6.1.4 (текущий банкомат), но вы будете загружать частные фреймворки, которые не разрешены Apple для AppStore;)

1 голос
/ 03 апреля 2012

Это возможно. Точно так же, как вы упомянули, используя GSEvents и отправляя их на фиолетовый порт приложения, который вы пытаетесь контролировать / моделировать. Конечно, для этого вам нужен GSEvent.h от KennyTM. Я сделал это для iOS 4.3, просто изменив некоторые значения, которые имел Кенни (например, kGSHandInfoTypeTouchDown), но сейчас я пытаюсь сделать это для iOS 5, и до сих пор это не работает.

РЕДАКТИРОВАТЬ: теперь работает для iOS 5.1.

0 голосов
/ 10 февраля 2012

Без джейлбрейка нет реального способа подключить распознаватель жестов ко всем представлениям всей системы.Во-первых, ваше приложение, работающее в фоновом режиме, не способно выполнить этот код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...