Разблокировать событие iPhone

Кто-нибудь знает, есть ли событие разблокировки xcode, которое может отслеживать, если кто-то разблокирует свой iPhone?

Или это возможно только на взломанных устройствах?

Заранее спасибо.


person Teddy    schedule 04.10.2013    source источник
comment
Ответ: НЕТ, это невозможно!   -  person Teddy    schedule 04.10.2013


Ответы (1)


Да, вы можете сделать это на устройстве без взлома, используя CFNotificationCenterAddObserver.

Добавьте наблюдателя для уведомления Дарвина 'lockstate':

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), 
                            NULL, 
                            lockStateDidNotify, 
                            CFSTR("com.apple.springboard.lockstate"),
                            NULL, 
                            CFNotificationSuspensionBehaviorDeliverImmediately);

и вы будете получать уведомления каждый раз, когда устройство блокируется / разблокируется:

static void lockStateDidNotify(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) 
{
    NSLog(@"The Device Locked/Unlocked");
}

Поскольку это срабатывает как для блокировки, так и для разблокировки, это не совсем то, что вам нужно, но вы можете наблюдать com.apple.springboard.lockcomplete (который только срабатывает во время блокировки) и проверить, получаете ли вы оба. Если вы не получили lockcomplete, можно предположить, что разблокировка произошла только что.

person davbryn    schedule 04.10.2013
comment
Эти уведомления Дарвина являются частным API, поэтому Apple отклоняет приложения, использующие их. Есть ли для этого какие-нибудь общедоступные API? - person Geek; 24.01.2014