Программно заблокировать и разблокировать экран iPhone

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

Ответы

Ответ 1

Это невозможно. Тем не менее, вы можете "запретить" ваш телефон блокироваться, когда приложение работает. [UIApplication sharedApplication].idleTimerDisabled = YES должен это сделать.

Ответ 2

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

Ответ 3

Это уже разрешено. Вы можете найти его на 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);

                }

Ответ 4

Возможно, это возможно с недокументированными функциями Apple (возможно, GSEventLockDevice()?), но это, безусловно, приводит к автоматическому обновлению App Store.

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

Ответ 5

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

ПРИМЕЧАНИЕ.

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

Я надеюсь, что это поможет вам.

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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