Программно заблокировать и разблокировать экран iPhone - PullRequest
13 голосов
/ 07 мая 2009

Как программно заблокировать и разблокировать основной экран (т.е. самого устройства) iPhone?

Ответы [ 8 ]

26 голосов
/ 07 мая 2009

Это невозможно. Однако вы можете «запретить» блокировку телефона во время работы приложения. [UIApplication sharedApplication].idleTimerDisabled = YES должен это сделать.

23 голосов
/ 03 декабря 2010

Это можно сделать, вызвав GSEventLockDevice (); из вашего приложения. Эта функция может быть найдена в GraphicsServices.framework.

4 голосов
/ 08 мая 2014

Это уже решено. Вы можете найти его на Github: https://github.com/neuroo/LockMeNow (работа ниже IOS 7)

char*framework="/System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices";
                void *handle= dlopen(framework, RTLD_NOW);
                if (handle)
                {

                  void (*GSEventLockDevice)() = dlsym(handle, "GSEventLockDevice");

                    if (GSEventLockDevice)
                    {

                        GSEventLockDevice();
                        NSLog(@"Phone is Locked");
                       //.........

                    }
                    dlclose(handle);

                }
2 голосов
/ 09 ноября 2011

Возможно, это возможно с недокументированными функциями Apple (может быть GSEventLockDevice ()?), Но это, безусловно, приводит к автоматическому ОТКЛЮЧЕНИЮ App Store.

Apple просто не хочет, чтобы кто-то возился с основными функциями, подобными этой.

1 голос
/ 17 апреля 2013

Если вы хотите сделать это, Apple никогда не одобрит это, ваше приложение должно быть побег из тюрьмы. Вы можете сделать это, вызвав Private framework для вашего проекта. Вы можете использовать GraphicsServices.framework.

ПРИМЕЧАНИЕ:

Это GraphicsServices.framework является частной структурой. Apple никогда не примет ваше приложение. Вызвав метод GSEventLockDevice(), вы можете легко заблокировать или разблокировать устройство. Этот GSEventLockDevice() находится в GSEvent.h.

Надеюсь, этот тебе поможет.

Пожалуйста, дайте мне знать, если у вас все еще есть проблемы

0 голосов
/ 26 марта 2014

Опишите блокировку и разблокировку. Я бы попробовал переключатель, который позволял = YES и позволял = NO для свойства представления. Таким образом, вы можете отключить все UIGestureRecognizers и «заблокировать» экран, если это то, что вы имеете в виду. Я делаю это с UIbuttons, как только добавляю их как IBOutlet, а также IBAction, чтобы они были объектом и могли быть изменены на уровне свойств. Я работаю над этой самой вещью прямо сейчас. Я опубликую свои выводы.

0 голосов
/ 05 мая 2010

в принципе это невозможно, потому что это, вероятно, часть частных платформ, которые могут использоваться только Apple. Существуют такие приложения, как приложения с поддельными звонками, которые используют «поддельный» экран блокировки, но, как вы указали, нажатие кнопки «Домой» завершает работу приложения, делая ваш экран блокировки бесполезным.

0 голосов
/ 07 мая 2009

Я не верю, что есть способ достичь этого.

Одна вещь, которую я считаю возможным, это остановить блокировку IPhone. затем вы можете создать представление, которое скопировало функцию разблокировки блокировки, и у вас все равно был бы контроль над телефоном.

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