2009-05-07 2 views

ответ

0

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

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

26

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

+0

«это не возможно», кажется, не быть правдой (есть чуть чуть разница между «не представляется возможным» и «не документированы» ...) –

0

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

23

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

+8

Это частный API. – Mugunth

+17

@ Mugunth Я не сказал, что это публичный API, я сказал, что это возможно **. – 2012-07-06 09:04:23

+1

@ H2CO3: он не работает в 'iOS7'. Можете ли вы рассказать мне о 'iOS7'? Я уже спросил об этом [Вопрос] (http://stackoverflow.com/q/19209887/1603072). – Bhavin

2

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

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

1

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

Примечание:

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

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

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

+0

Я сделал это успешно, но как я могу установить или изменить пароль на телефон перед его блокировкой. заранее спасибо. –

+0

Что вы имеете в виду, что вы это сделали? это принято на appstore? – mtasic85

+0

No.Apple не принимается. –

0

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

4

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

       } 
+0

будет ли это приложение принято на appstore? – mtasic85

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