From iPhone Development Wiki

UIApplication is a singleton object that represents the application.


Signature extern UIApplication* UIApp;
Available in 2.0 –

The method +[UIApplication sharedInstance] is equivalent to using external symbol UIApp. The latter is often used in debugging environments such as Cycript for convenience.

Event recording

UIApplication provides the -_addRecorder: and related methods to record user's events (as GSEvents). Event playback is also supported, so it can be used as a macro system.

Suspension settings

Signature -(BOOL)applicationSuspend:(GSEventRef)event settings:(NSMutableDictionary*)settings;
Available in 2.0 –

This method will be called before the app gets suspended. By default UIApplication doesn't contain this method. You have to implement this if needed. You can change the settings here, to generate the initial state of next resumption. This technique is used in many built-in apps. The recognized keys are:

Key Value type Usage
UISuspendedStatusBarModeKey Integer The initial status bar mode.
UISuspendedStatusBarOrientationKey Integer The initial status bar orientation.
kUISuspendedReturnToLastAppKey Boolean ?
UISuspendedRoleID String ? (kUISuspendedReturnToLastAppKey must be true for this to have any effects)
UISuspendedDefaultPNGKey String The file name of the default PNG image to use. For example, if you want to use Default-Landscape.png when the app starts, set this key to @"Default-Landscape".

These values are written sent to SpringBoard with the GSSendApplicationSuspendedEvent function.

If this method returns NO, the app will just be backgrounded. You must set the UIApplicationExitsOnSuspend key to YES in the application's Info.plist file on 4.0 and later for the app to be truly backgrounded. Otherwise, the default multitasking system will shut down networking activities and timers, among other things.

Launching an application

To programmatically launch MobileSafari:

[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.mobilesafari" suspended:NO];

This is equivalent to using SBSLaunchApplicationWithIdentifier.