0

I wonder whether the iOS sends a notification to apps that indicates the system will put the device into a "sleep” state. Because I want my app to do something when the device is in "sleep" state.

Sai
  • 120
  • 10

5 Answers5

1

The answer is "NO". You can only track application state not device state.

Clement Prem
  • 3,112
  • 2
  • 23
  • 43
0

Good Answer :

I managed to receive "com.apple.springboard.lockcomplete" notification using CFNotificationCenterAddObserer. However, if my app is running in background, it cannot receive the notification. To fix this problem, I added UIBackgroundModes(= audio) to play mute audio consequently. At last, the app works well.

sophia

Notification:

   - (void)applicationDidEnterBackground:(UIApplication *)application {
        UIApplicationState state = [[UIApplication sharedApplication] applicationState];
        NSLog(@"Device state: %@", state);
        switch (state) {
            case UIApplicationStateActive:
                /* ... */
                break;

        case UIApplicationStateInactive:
            /* Device was/is locked  */
            break;
        case UIApplicationStateBackground:
            /* User pressed home button or opened another App (from an alert/email/etc) */
            break;
    }
}

Enum :

UIApplicationState - The running states of an application

typedef enum {
    UIApplicationStateActive,   
    UIApplicationStateInactive,
    UIApplicationStateBackground
}
UIApplicationState

Constants

UIApplicationStateActive - The application is running in the foreground and currently receiving events. Available in iOS 4.0 and later.

UIApplicationStateInactive - The application is running in the foreground but is not receiving events. This might happen as a result of an interruption or because the application is transitioning to or from the background.

UIApplicationStateBackground - The application is running in the background.

Sources : Is it possible to distinguish between locking the device and sending an app to background?

Community
  • 1
  • 1
StrawHara
  • 1,301
  • 19
  • 33
  • Maybe I was't make it clear. I mean UIApplicationState is the app's state, not the device's. Even though My app is already in background, the device is still not in sleep state. – Sai Jun 24 '14 at 08:42
  • It's the difference between StateInactive (locked) and StateBackground (just app sleeping). – StrawHara Jun 24 '14 at 08:47
  • I managed to receive "com.apple.springboard.lockcomplete" notification using CFNotificationCenterAddObserer. However, if my app is running in background, it cannot receive the notification. To fix this problem, I added UIBackgroundModes(= audio) to play mute audio consequently. At last, the app works well. Thanks a lot! – Sai Jun 26 '14 at 03:19
  • Ok, I edit the post with your answer ;) Or you can post your answers and validate it. Because your question is still unanswered :/ – StrawHara Jun 26 '14 at 07:35
0

when device will go to inactive state it send a notification

- (void)applicationWillResignActive:(UIApplication *)application

This method should implement in application delegate. It will invoke automaticlaly when does goes to inactive state. It also invoke when you receive a call

Saurav Nagpal
  • 1,247
  • 1
  • 10
  • 27
  • What you are saying is i tHink it is private API. You can refer to the following link:http://stackoverflow.com/questions/14352228/is-there-a-away-to-detect-the-event-when-ios-device-goes-to-sleep-mode-when-the – Saurav Nagpal Jun 24 '14 at 08:45
0

No, the only notification may fulfill your need is UIApplicationWillResignActiveNotification, but it will also be posted when

user pull down the notification center

there comes an alarm clock ringing

an push notification showing in an alert view.

CarmeloS
  • 7,868
  • 8
  • 56
  • 103
0

"com.apple.springboard.lockcomplete" is the notification that I used to fix my problem.

To receive "com.apple.springboard.lockcomplete" notification , I used CFNotificationCenterAddObserer in applicationDidFinishLaunching.(It is said to a private api~)

However, if my app is running in background, it cannot receive the notification. To fix this problem, I added UIBackgroundModes(= audio) to play mute audio consequently. At last, the app works well.

Thanks all for your help!

Sai
  • 120
  • 10