Вы можете использовать Дарвинские уведомления , чтобы прослушивать события.Я не уверен на 100%, но мне кажется, после запуска на взломанном iOS 5.0.1 iPhone 4, что одним из этих событий может быть то, что вам нужно:
com.apple.iokit.hid.displayStatus
com.apple.springboard.hasBlankedScreen
com.apple.springboard.lockstate
Примечание: в соответствии с комментариями автора к похожему вопросу, на который я ответил здесь , это должно работать и на не взломанном телефоне.
Чтобы использовать это, зарегистрируйтесь для участия в мероприятии, напримерэто (это регистрируется только для одного события, но если это не работает для вас, попробуйте другие два):
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center
NULL, // observer
displayStatusChanged, // callback
CFSTR("com.apple.iokit.hid.displayStatus"), // event name
NULL, // object
CFNotificationSuspensionBehaviorDeliverImmediately);
, где displayStatusChanged
- обратный вызов вашего события:
static void displayStatusChanged(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
NSLog(@"event received!");
// you might try inspecting the `userInfo` dictionary, to see
// if it contains any useful info
if (userInfo != nil) {
CFShow(userInfo);
}
}
Я полагаю, что перечисленные выше события запускаются, когда оба экрана включены и выключены, заблокированы и разблокированы.Возможно, вам придется отслеживать состояние самостоятельно.Кроме того,
com.apple.springboard.lockcomplete
вызывается только при блокировке экрана, но не при разблокировке.