2013-05-19 6 views
3

사용자가 기기를 잠글 때 (예 : 집 버튼 누르기)를 감지하려고합니다.애플은 스프링 보드 이벤트를 모니터링 할 수 있습니까?

Found this :

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), //center 
            NULL, // observer 
            lockStateChanged, // callback 
            CFSTR("com.apple.springboard.lockstate"), // event name 
            NULL, // object 
            CFNotificationSuspensionBehaviorDeliverImmediately); 



static void lockStateChanged(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.lockstate이 상상할 수있는 개인 API를 호출하는 것과 같습니다? 아니면 괜찮습니까?

답변

3

모든 CF ... 기능이 공개되어 있다고 가정하면 아마 괜찮을 지 모르지만 확실히 어두운 영역에 있습니다. Apple이 그 문자열을 변경하면 iOS의 다음 릴리스로 인해 코드가 손상 될 수 있습니다.

승인 된 운송 앱과 비슷한 상황에서 내가 직접 문자열을 사용하지 않는 것이 었습니다. 문자열의 배열을 만든 다음 NSString 메서드를 사용하여 com.apple.springboard.lockstate를 직접 사용하는 대신 마침표로 결합하십시오.

YMMV