SBApplication

From iPhone Development Wiki
Jump to: navigation, search

SBApplication is a class representing the application screen on the SpringBoard. SBApplication is a subclass of SBDisplay. See SBDisplay for more info.

Contents

Retrieving an instance of SBApplication

To retrieve a known instance, you must go through SBApplicationController. For example, if the display ID of the application is known, you can use:

SBApplication* app = [[SBApplicationController sharedInstance] applicationWithDisplayIdentifier:@"com.yourcompany.appname"];

Get all active applications

Signature -(NSArray*)_accessibilityRunningApplications;
Available in 3.0 –
Signature -(SBApplication*)_accessibilityFrontMostApplication;
Available in 3.2 –

Getting active applications traditionally need to be done via the static function at 0xeadc, or evaluate through the result of -[SBApplicationController allApplications] and check if the pid is valid. Fortunately, starting from 3.0, the SpringBoard class provides a method -[SpringBoard _accessibilityRunningApplications] which directly calls 0xeadc. Therefore, you can get the array of active applications from this.

Starting from 3.2 one can also use -[SpringBoard _accessibilityFrontMostApplication] to get the front most application. If you know the app you can check if [[app process] isFrontmost].

Launching an SBApplication

To launch an SBApplication you can use SBUIController:

[[SBUIController sharedInstance] activateApplicationAnimated:app];

Note 1. this method will not respect parental control. You can look up the list of restricted apps using -[SpringBoard parentalControlsDisabledApplications], however.

Note 2. this method will only work if on the home screen. It will not work when already in an application.

Application Info.plist

SpringBoard will recognize the following Info.plist keys:

Starting from 3.2 these documented keys are also recognized:

  • ProductType, UIDeviceFamily, DeviceFamily[6]
  • UIAppFonts
  • UIFileSharingEnabled
  • UISupportedInterfaceOrientations

As of iOS 8, the following undocumented key is also recognized:

  • _UILaunchAlwaysFullScreen[7]

References

  1. 1.0 1.1 http://blogs.oreilly.com/iphone/2008/11/hunting-down-infoplist-prefere.html
  2. http://www.tuaw.com/2007/11/29/enable-app-hiding-on-your-iphone/
  3. http://stackoverflow.com/questions/596589/iphone-sdk-internet-connection-detection
  4. http://www.ifans.com/forums/threads/what-keeps-these-hidden.331215/#post-2552445
  5. http://www.ifans.com/forums/threads/hide-applications.76176/#post-717439
  6. The keys UIDeviceFamily and DeviceFamily are private but equivalent to ProductType.
  7. http://pastebin.com/XmRqevnD