I know “applicationWillResignActive” will be called when you tap the Home button or the Sleep/Wake button. And it is also called when an interruption(like a native call) occurs. But how can I indentify which one result in this method and do some different implement?
I know applicationWillResignActive will be called when you tap the Home button or the
Share
You cannot directly identify all reasons, but you can narrow it down a little bit.
If the home button is pressed and the application is sent to background, your app will receive a
applicationDidEnterBackground:call on your UIApplicationDelegate. Note that you will receive this after theapplicationWillResignActive:call, so it may not help you.You could also register a listener for Audio Interruption
If
audioSessionInteruptionListeneris invoked and the state iskAudioSessionBeginInterruptionbeforeapplicationWillResignActive:, then you know that the interruption is caused by a Phone Call or the Alarm. I do not think that you can have more information.EDIT
Actually, I think that you can go even a little further and identify a Phone Call vs Alarm interruption. Now this has not been tested, it is simply to give a starting point for more investigation.
I remember having a callback registered to trap audio routes, and when a phone call was received, the audio routed changed from Speaker/Earphone to None to Receiver. So I guess that you could trap the AudioInterruption using the method descrived above, and trap the audio route change. If the audio route becomes Receiver, then the interruption was a phone call. Otherwise, it was something else, like the alarm.
I was targetting iOS 5.0, so it may not be available for prior versions, you would have to confirm with the doc.