Я делаю приложение для побег из тюрьмы, которое блокирует устройство, когда пользователь запускает приложение. Я пробовал GSEventLockDevice();
из GraphicsServices.framework
, но это не работает должным образом, потому что экран блокируется, но не выключается. Есть ли другой способ заблокировать экран без MobileSubstrate
?
iOS Private API: заблокируйте устройство и выключите экран
Ответы (2)
В качестве альтернативы ознакомьтесь с этим ответом, в котором используется SBDimScreen()
. Вы можете использовать это в сочетании с GSEventLockDevice()
.
Похоже, что теперь (iOS 5+) вам может потребоваться добавить право в ваше приложение, чтобы успешно использовать этот вызов. Если вы еще этого не сделали, вот пример того, как это сделать. Очевидно, что в этом случае рассматриваемое право должно быть изменено на com.apple.backboard.client
.
Вы также можете увидеть, экспериментировал ли @VictorRonin с этим, поскольку он прокомментировал вопрос, на который я ссылался. Я протестировал SBDimScreen()
на взломанном устройстве iOS 4.2.1, но мои новые устройства в настоящее время недоступны для запуска этого теста. Позже попробую на iOS 5.x и выложу обновление.
Примечание: ответ, на который я ссылался от Элиаса, имеет другой вызов для iOS 6.
Посмотрите на эти несколько вопросов:
Моделирование общесистемных сенсорных событий в iOS
Моделирование общесистемных сенсорных событий в iOS без джейлбрейка устройство
Как отправить сенсорное событие в ОС iPhone?
Идея состоит в том, что вы можете имитировать общесистемные события. Одним из событий является событие отключения питания. Если вы имитируете его, он выключит устройство и заблокирует его.
КСТАТИ. Вам может быть интересно узнать больше о GSEvent, который является ключом к равномерному моделированию.
Вот пара полезных ссылок:
http://iphonedevwiki.net/index.php/GSEvent
http://networkpx.blogspot.com/2009/08/gsevent-recording-and-playback-in-30.html
Кроме того, этот подход не ограничивается взломанными телефонами. Он работает и на телефоне в тюрьме (однако вы не сможете опубликовать его в AppStore).