Имитация общесистемных касаний в iOS 7

GSSendEvent у меня больше не работает.

Даже подписка на функцию обратного вызова с использованием GSEventRegisterEventCallBack не срабатывает с событиями касания, [UIEvent _gsEvent] возвращает NULL.

Что случилось?


person storoj    schedule 30.09.2013    source источник
comment
Скорее всего, эти API защищены правом. Однако я не знаю альтернативного способа имитации общесистемных касаний.   -  person Victor Ronin    schedule 30.09.2013


Ответы (1)


Теперь iOS использует IOHIDEvent (в IOKit.framework) для сенсорных событий.

backboardd создает сенсорные события и отправляет их в SpringBoard, а SpringBoard получает их с помощью UIApplicationHandleEventQueue.

В любом случае, если у вас взломанное устройство и вы хотите имитировать касание, просто используйте библиотеку SimulateTouch. Вы можете загрузить его из репозитория Bigboss, а информация об API находится здесь http://api.iolate.kr/simulatetouch/.

Кроме того, это с открытым исходным кодом. https://github.com/iolate/SimulateTouch

person iolate    schedule 19.10.2013
comment
Есть ли альтернатива без джейлбрейка? Я также спрашивал об этом по адресу stackoverflow.com/questions/19471572/ - person Ben Dowling; 20.10.2013
comment
@BenDowling Если вы можете получить порт задачи верхнего приложения (см. Источник SimulateTouch — SimulateTouch.mm ), я думаю, вы можете. Но я не знаю, как его получить из приложений. - person iolate; 20.10.2013
comment
почему просто введите ключ отправить комментарий! :( в любом случае, [CAWindowServer serverIfRunning] работает только на backboardd. [CAWindowServer server] работает широко, но не может получить порт задачи.. - person iolate; 20.10.2013
comment
о, моя ошибка.. Кажется, что не может имитировать даже получение порта задачи.. :( - person iolate; 30.10.2013
comment
и для отправки событий, таких как, например, старый kGSEventMenuButtonDown? - person Usi Usi; 11.01.2014
comment
Я видел ваш код @iolate, но не понимаю, как использовать его для имитации событий касания. Я не очень разбираюсь в разработке джейлбрейка, поэтому не могли бы вы дать мне пошаговую инструкцию, как имитировать общесистемные сенсорные события, заранее спасибо - person Mehul Thakkar; 13.02.2014
comment
@iolate так же, как и touch, я также хочу вводить события клавиатуры в ios 7. для этого я создал IOHIDEventRef keyEvent = IOHIDEventCreateKeyboardEvent(kCFAllocatorDefault, timeStamp,12,64,YES,kIOHIDEventOptionIsAbsolute); но это не работает для меня. - person priyanka; 28.02.2014
comment
@iolate, я пытаюсь смоделировать событие клавиатуры, оно работает только на домашнем экране, но не работает в других приложениях, я думаю, проблема в task port, возможно, события клавиатуры должны отправляться в приложение на главном экране, как я могу получить task port приложения на главном экране? Спасибо. - person Suge; 11.03.2014
comment
@ Suge, вы говорите о клавише H / W или клавиатуре. если вы хотите имитировать событие клавиши H/W, используйте следующий код IOHIDEventSystemConnectionRef systemConnection = [manager clientForBundleID:@com.apple.springboard]; порт задачи не требуется. - person priyanka; 31.03.2014
comment
@isolate, не могли бы вы связаться, имя в скайпе: live:.cid.2b66f62956c82daa - person Vick_Pk; 14.08.2020