본문 바로가기

Apple - IPhone / IPod Touch

sleep, wake up 이벤트 처리

코코아 어플에서 MAC OS X이 sleep에 들어가는지, sleep에서 빠져나왔는지를 확인하는 방법이다. Workspace의 notification center에 observer를 등록하는 방식으로 구현이 된다.

  1. - (void) receiveSleepNote: (NSNotification*) note
    {
        NSLog(@"receiveSleepNote: %@", [note name]);
    }

    - (void) receiveWakeNote: (NSNotification*) note
    {
        NSLog(@"receiveSleepNote: %@", [note name]);
    }

    - (void) fileNotifications
    {
        //These notifications are filed on NSWorkspace's notification
  2.       center, not the default notification center.
        //You will not receive sleep/wake notifications if you file       with the default notification center.
        [[[NSWorkspace sharedWorkspace] notificationCenter]
  3. addObserver: self
  4. selector: @selector(receiveSleepNote:)
  5. name:NSWorkspaceWillSleepNotification object: NULL];
  6.     [[[NSWorkspace sharedWorkspace] notificationCenter]
  7. addObserver: self
  8. selector: @selector(receiveWakeNote:)
  9. name:NSWorkspaceDidWakeNotification object: NULL];
  10. }

fileNotification 함수를 호출하여 sleep, wakeup 이벤트에 대해서 observer를 등록해두면, OS가 sleep에 들어갈 때, wake up 할 때 어플리케이션에서 알 수 있게된다.