Ответ 1
Это невозможно. Тем не менее, вы можете "запретить" ваш телефон блокироваться, когда приложение работает. [UIApplication sharedApplication].idleTimerDisabled = YES
должен это сделать.
Как программно заблокировать и разблокировать главный экран (т.е. само устройство) iPhone?
Это невозможно. Тем не менее, вы можете "запретить" ваш телефон блокироваться, когда приложение работает. [UIApplication sharedApplication].idleTimerDisabled = YES
должен это сделать.
Это можно сделать, выполнив калибровку GSEventLockDevice(); из вашего приложения. Эта функция может быть найдена в GraphicsServices.framework.
Это уже разрешено. Вы можете найти его на 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);
}
Возможно, это возможно с недокументированными функциями Apple (возможно, GSEventLockDevice()?), но это, безусловно, приводит к автоматическому обновлению App Store.
Apple просто не хочет, чтобы кто-нибудь играл с такими функциональными возможностями.
Если вы хотите сделать это, Apple никогда не одобряет это, ваше приложение должно быть джейлбрейком. вы можете сделать это, вызвав Private framework в своем проекте. вы можете использовать GraphicsServices.framework
.
ПРИМЕЧАНИЕ.
Этот GraphicsServices.framework
является частной структурой. Apple никогда не примет ваше приложение. Вызывая метод GSEventLockDevice()
, вы можете легко блокировать или разблокировать свое устройство. Этот GSEventLockDevice()
находится в GSEvent.h
.
Я надеюсь, что это поможет вам.
Пожалуйста, дайте мне знать, если вы все еще сталкиваетесь с какой-либо проблемой.
Я не верю, что есть способ добиться этого.
Одна вещь, которая, я считаю, возможна, - это остановить блокировку IPhone. вы могли бы создать представление, которое скопировало функцию блокировки блокировки, и вы все равно будете иметь контроль над телефоном.
в принципе это невозможно, потому что это, вероятно, является частью частных фреймворков, которые могут использоваться только Apple. Существуют такие приложения, как фальшивые приложения-вызывающие, которые используют "фальшивый" блокирующий экран, но, как вы уже указали, нажатие кнопки "домой" завершает работу приложения, что делает ваш экран блокировки бесполезным.
Опишите блокировку и разблокировку. Я бы попробовал переключатель, который включал = YES и enabled = NO для свойства view. Таким образом, вы можете отключить все UIGestureRecognizers
и "заблокировать" экран, если это то, что вы имеете в виду. Я делаю это с помощью UIbuttons
, когда я добавляю их как IBOutlet
, а также IBAction
, поэтому они являются объектом и могут быть изменены на уровне свойств. Я сейчас работаю над этим. Я опубликую свои выводы.