Set of three questions, last one is the desired goal:
1) It is possible to use a GraphicsServices method and link the binary from private framework. Why is it not possible to do similar with SpringBoard SBUIController?
2) Is there no way to use SBUIController without jail breaking?
3) How to launch an app by bundle ID (through private API but without jailbreaking) on iOS 6?
Application vs Framework
GraphicServices is framework. It's specifically designed to be linked to and user by 3rd party apps. As I remember SBUIController is part of Springboard, which is standalone app (which is not designed to be linked to)
Even in the case, if you somehow able to link/load the code from Springboard, the code won't work, because you are missing entitlements to talk to other services.
Entitlements
Jailbreak allows you to inject code into 3rd party apps (including Springboard) and this way the code is executed in Springboard and has proper entitlements.
Actually, for the jailbreak device you can add entitlements to your code and sign it. However, you won't be able to do this for non jailbroken device.
So, I would say, that you should drop SBUIController approach for non jailbroken devices.
Attempts to launch an app
I had the same question about half year ago and I spend a lot of time on it. I tried following things without success:
and couple of other approaches.
Some additional thoughts
If 3rd party application handles some URL scheme, you can use it to launch this 3rd party app.
As I know, only private api can do this.
@interface PrivateApi_LSApplicationWorkspace
- (bool)openApplicationWithBundleID:(id)arg1;
@end
PrivateApi_LSApplicationWorkspace* _workspace;
_workspace = [NSClassFromString(@"LSApplicationWorkspace") new];
[_workspace openApplicationWithBundleID:bundleIdentifier];
You can check https://github.com/wujianguo/iOSAppsInfo.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With