2013-08-22 5 views
4

Я прочитал другие вопросы относительно того же самого, но все просто говорят «Побег из тюрьмы», который никогда не будет одобрен Apple »,« Это невозможно »и« частный API, GraphicsServices ». фреймворк'.Заблокировать экран на устройстве программно

Позвольте мне что-то прояснить, я не делаю этого для телефона с джейлбрейком, я делаю это, потому что кнопка блокировки на моем телефоне сломана, и я просто не хочу ждать 1 минуту экрана закрывать. Поэтому я решил, что у меня может быть приложение, которое называется lockScreen в начале AppDelegate.h. Это не происходит в AppStore, это просто для меня.

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

Undefined symbols for architecture armv7s: 
    "_GSEventLockDevice", referenced from: 
     -[AppDelegate application:didFinishLaunchingWithOptions:] in AppDelegate.o 
ld: symbol(s) not found for architecture armv7s 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

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

ответ

3

Это уже разрешено кем-то другим. Вы можете найти его на Github: https://github.com/neuroo/LockMeNow

char *gsDylib = "/System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices"; 
void *handle = dlopen(gsDylib, RTLD_NOW); 
if (handle) { 
    BOOL locked = FALSE; 
    void (*_GSEventLockDevice)() = dlsym(handle, "GSEventLockDevice"); 
    if (_GSEventLockDevice) { 
    _GSEventLockDevice(); 
    //... 
    } 
    dlclose(handle); 
    //... 
} 
+0

работает ниже iOS 7 –

0

Вы получаете неопределенную ошибку символа, потому что вы не ссылки на частную структуру в вашем приложении. Он должен быть включен в ваши фазы сборки. Ссылка Бинарные файлы с библиотеками Шаг.

С GraphicsServices.framework не является общедоступной картой, она не будет отображаться в списке фреймов. Я нашел этот ответ, который дает шаги для привязки к частной структуре. Я не пробовал, так YMMV.

How do I add the following private frameworks to my iPhone app?

3

Там нет причин, чтобы закодировать приложение для блокировки телефона. Используйте «Вспомогательное касание» в настройках «Доступность» для выполнения задач с кнопками на экране. Эта кнопка доступна на экране (но может быть легко скрыта) из любого места на телефоне, где ваше «приложение блокировки» доступно только с главного экрана. Проверьте это support article. Поверьте мне, моя кнопка блокировки тоже сломана.

Смежные вопросы