The app delegate also defines a method called applicationWillResignActive:, which iscalled when the user is interrupted, such as when the user receives a phone call or text,or when the device is locked. The applicationWillResignActive: message allows youto pause your game while the user decides whether to answer that call or reply to thetext message. You should invalidate any timers, effectively pausing your game. Youshould also use this method to save the user’s progress in your game.
If the user decides to close the notification message without answering the phone call orreplying to the text message, Cocoa Touch resumes the game by calling the methodapplicationDidBecomeActive:. Use this method to initialize any timers in your game thatwere invalidated in the applicationWillResignActive: method.
Listing 3–28 shows sample implementations of applicationWillResignActive: andapplicationDidBecomeActive: for our IVBricker game. These methods go in theIVBrickerAppDelegate.m file.
Listing 3–28. These are example implementations of the methods applicationWillResignActive: andapplicationDidBecomeActive:
- (void)applicationWillResignActive:(UIApplication *)application
{
[viewController pauseGame];
[viewController saveGameState];
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[viewController loadGameState];
[viewController startPlaying];
}
In Listing 3–28, when the game is interrupted by a phone call or when the phone islocked and the applicationWillResignActive: method is called, the code pauses thegame and saves the game state. When the app is ready to resume after an interruption,and the applicationDidBecomeActive: method is called, the code reloads the gamestate and continues the game.