iOS 기기의 파워 버튼을 누르거나 자동 잠금이 되는 경우, 이벤트를 받아야 하는 이슈가 있어서 검색하다 찾은 방법입니다.

아래 코드로 노티를 받아서..

1
2
3
4
5
6
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center
                                    (void*)self, // observer (can be NULL)
                                    lockComplete, // callback
                                    CFSTR("com.apple.springboard.lockcomplete"), // event name (com.apple.springboard.lockstate, com.apple.springboard.lockcomplete)
                                    NULL, // object
                                    CFNotificationSuspensionBehaviorDeliverImmediately);

아래 코드의 메소드가 호출됩니다.

1
2
3
4
static void lockComplete(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
    ViewController *mainVC = (__bridge ViewController*)observer;
}

참고로 lockstate는 잠길 때와 풀릴 때 모두 호출하고, lockcomplete은 잠길 때만 호출합니다.