Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198

Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/html/extensions/Variables/includes/ExtVariables.php on line 198
BackBoardServices.framework - iPhone Development Wiki

BackBoardServices.framework

From iPhone Development Wiki
Revision as of 19:22, 8 October 2013 by Cykey (talk | contribs) (SpringBoard uses mach messages. (right?))
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
BackBoardServices.framework
Private Framework
Availabile 6.0 – present
Headers [headers.cynder.me]


BackBoardServices is a framework that was introduced in iOS 6.0. It serves as a communication bridge between SpringBoard and backboardd. The framework itself has absolutely no function other than to communicate between SpringBoard's Mach messaging server and backboardd's XPC server. It is solely a small wrapper around the XPC API, to keep SpringBoard and backboardd from having to deal with it directly.

The innards of BackBoardServices are actually quite simple. Almost every function in BackBoardServices creates an XPC connection with the opposing process, and then sends an XPC object identifying the function called. Then, the destination (being either SpringBoard or backboardd) receives the object, and performs the actual function, sending back a return value if necessary.

BackBoardServices can be used for many system and hardware functions, including launching/closing applications, and setting the backlight level.

Killing an application

Replace com.apple.mobilesafari with the application's bundle identifier.

extern "C" void BKSTerminateApplicationForReasonAndReportWithDescription(NSString *app, int a, int b, NSString *description);
...
BKSTerminateApplicationForReasonAndReportWithDescription(@"com.apple.mobilesafari", 5, 0, NULL);

The last two arguments are used for the description, where the first is an unknown integer (use 1), and the second is your reason. These two arguments are not compulsory, but are followed by good practice.

BKSTerminateApplicationForReasonAndReportWithDescription(@"com.apple.mobilesafari", 5, 1, @"Killed because X.");

Killing all applications

Again, it is not mandatory to specify a description but it is a good thing to consider doing.

extern "C" void BKSTerminateApplicationGroupForReasonAndReportWithDescription(int a, int b, int c, NSString *description);
...
BKSTerminateApplicationGroupForReasonAndReportWithDescription(1, 5, 21, @"Kill ALL the apps!");

Setting Backlight Level

The factor should be a number from 0.0 to 1.0, inclusive.

extern "C" void BKSHIDServicesSetBacklightFactorWithFadeDuration(float factor, int duration);
...
BKSHIDServicesSetBacklightFactorWithFadeDuration(0.5, 0);