Sie können verwenden Darwin-Meldungen um auf die Ereignisse zu achten. Ich bin nicht 100 % sicher, aber es sieht für mich, von der Ausführung auf einem jailbroken iOS 5.0.1 iPhone 4, dass eines dieser Ereignisse sein könnte, was Sie brauchen:
com.apple.iokit.hid.displayStatus
com.apple.springboard.hasBlankedScreen
com.apple.springboard.lockstate
Anmerkung: laut dem Poster Kommentare zu einer ähnlichen Frage, die ich hier beantwortet habe Dies sollte auch auf einem nicht verhafteten Telefon funktionieren.
Melden Sie sich wie folgt für die Veranstaltung an (damit melden Sie sich nur für eine Veranstaltung an, aber wenn das bei Ihnen nicht funktioniert, probieren Sie die beiden anderen aus):
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center
NULL, // observer
displayStatusChanged, // callback
CFSTR("com.apple.iokit.hid.displayStatus"), // event name
NULL, // object
CFNotificationSuspensionBehaviorDeliverImmediately);
donde displayStatusChanged
ist Ihr Ereignis-Callback:
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);
}
}
Ich glaube, dass die oben aufgeführten Ereignisse ausgelöst werden, wenn der Bildschirm sowohl eingeschaltet ist et aus, verriegelt und entriegelt. Möglicherweise müssen Sie den Zustand selbst feststellen. Auch,
com.apple.springboard.lockcomplete
wird nur aufgerufen, wenn der Bildschirm gesperrt wird, nicht wenn er entsperrt wird.