iOS Private API: заблокируйте устройство и выключите экран

Я делаю приложение для побег из тюрьмы, которое блокирует устройство, когда пользователь запускает приложение. Я пробовал GSEventLockDevice(); из GraphicsServices.framework, но это не работает должным образом, потому что экран блокируется, но не выключается. Есть ли другой способ заблокировать экран без MobileSubstrate?


person Davide Di Febbo    schedule 13.02.2013    source источник


Ответы (2)


В качестве альтернативы ознакомьтесь с этим ответом, в котором используется SBDimScreen(). Вы можете использовать это в сочетании с GSEventLockDevice().

Похоже, что теперь (iOS 5+) вам может потребоваться добавить право в ваше приложение, чтобы успешно использовать этот вызов. Если вы еще этого не сделали, вот пример того, как это сделать. Очевидно, что в этом случае рассматриваемое право должно быть изменено на com.apple.backboard.client.

Вы также можете увидеть, экспериментировал ли @VictorRonin с этим, поскольку он прокомментировал вопрос, на который я ссылался. Я протестировал SBDimScreen() на взломанном устройстве iOS 4.2.1, но мои новые устройства в настоящее время недоступны для запуска этого теста. Позже попробую на iOS 5.x и выложу обновление.

Примечание: ответ, на который я ссылался от Элиаса, имеет другой вызов для iOS 6.

person Nate    schedule 13.02.2013
comment
Я изучаю MobileSubstrate, может быть, это проще... Спасибо! - person Davide Di Febbo; 14.02.2013
comment
Привет @Nate, не могли бы вы помочь мне с моделированием мультитач? Очень признателен. " title="как имитировать мультитач с помощью gsevent"> stackoverflow.com/questions/17907811/ - person Suge; 28.07.2013
comment
он не работает на IOS 7, вместо этого консоль показывает предупреждение (‹Предупреждение›: -[BKWorkspaceServerManager _handleEvent:] Неизвестный GSEvent, тип = 1014; Игнорирование.) - person M.Shuaib Imran; 21.10.2014
comment
@ShabiTech, многие частные API перестали работать (или начали требовать разрешения) в iOS 7. Если вы хотите узнать, как это сделать для iOS 7/8, опубликуйте новый вопрос. Этот вопрос и ответ должны быть сохранены для исторических целей. Если для iOS 7 требуется новое решение, для этого нужен отдельный вопрос. Спасибо. - person Nate; 22.10.2014

Посмотрите на эти несколько вопросов:

Моделирование общесистемных сенсорных событий в iOS

Моделирование общесистемных сенсорных событий в iOS без джейлбрейка устройство

Как отправить сенсорное событие в ОС iPhone?

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

КСТАТИ. Вам может быть интересно узнать больше о GSEvent, который является ключом к равномерному моделированию.

Вот пара полезных ссылок:

http://iphonedevwiki.net/index.php/GSEvent

http://networkpx.blogspot.com/2009/08/gsevent-recording-and-playback-in-30.html

Кроме того, этот подход не ограничивается взломанными телефонами. Он работает и на телефоне в тюрьме (однако вы не сможете опубликовать его в AppStore).

person Victor Ronin    schedule 13.02.2013
comment
есть пример этих методов? - person Davide Di Febbo; 14.02.2013
comment
Посмотри на это. Однако он может быть устаревшим (думаю, он был разработан для iOS 3.0): code.google.com/p/hid-support/source/browse/trunk/ - person Victor Ronin; 14.02.2013
comment
@VictorRonin, не могли бы вы сделать мне одолжение по поводу имитации мультитач? для имитации мультитач с помощью gsevent"> stackoverflow.com/questions/17907811/ Я очень ценю это. - person Suge; 28.07.2013
comment
@Bob: Извините, я никогда не пробовал симуляцию мультитач. КСТАТИ. Будьте осторожны с этим подходом. Люди сообщали о проблемах с iOS 7 - person Victor Ronin; 29.07.2013
comment
@VictorRonin, спасибо за ответ, но о каких проблемах сообщалось в iOS 7? - person Suge; 30.07.2013
comment
@Bob: я увидел следующий вопрос и предположил, что Apple добавила права на использование этого API stackoverflow.com/questions/17573572/ - person Victor Ronin; 31.07.2013