IOS Private API - launch an application using a package identifier

In fact, his set of three subparagraphs

1) You can use the GraphicsServices method and link the binary from a private structure. Why is this impossible to do with SpringBoard SBUIController?

2) Is there no way to use SBUIController without hacking in jail?

3) All I want is to launch the application using the package identifier (through a private API, but without jailbreak) on iOS 6, but could not find a single answer that works.

Any help was appreciated.

Regards, Vishal.

+4
source share
3 answers

Application vs Framework

GraphicServices is a structure. It is specifically designed to communicate with third-party users and third-party applications. Since I remember that SBUIController is part of Springboard, which is a standalone application (which is not intended to be bound)

Even if you can somehow connect / download the code with Springboard, the code will not work, because you do not have enough rights to communicate with other services.

Entitments

Jailbreak allows you to enter code in third-party applications (including Springboard), and thus the code is executed in Springboard and has the appropriate rights.

Actually, for the jailbreak device, you can add rights to your code and sign it. However, you cannot do this for a device without hacking.

So, I would say that you should abandon the SBUIController approach for invulnerable devices.

Attempts to launch the application

I had the same question about six months ago, and I spend a lot of time on it. I tried the following things without success:

  • SBSLaunchApplicationWithIdentifier
  • SBReturnToPreviousAppAtSpecifiedTime
  • Tried to use BKSWorkspace

and a couple of other approaches.

Some additional thoughts

If a third-party application processes some URL scheme, you can use it to run this third-party application.

+4
source

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 .

+2
source

You can try using RTLD_LAZY or objc_getClass . I used both to access the BluetoothManager on my non-jailbroken iPhone 5.

0
source

Source: https://habr.com/ru/post/1479450/


All Articles