一组三个问题,最后一个是期望的目标:
1)可以使用GraphicsServices方法并从私有框架链接二进制文件。为什么不可能与SpringBoard SBUIController类似?
2)如果没有越狱,是否无法使用SBUIController?
3)如何在iOS 6上通过捆绑ID(通过私有API但没有越狱)启动应用程序?
答案 0 :(得分:4)
应用程序与框架
GraphicServices是框架。它专门设计为与第三方应用程序链接和用户。我记得SBUIController是Springboard的一部分,它是独立应用程序(不是为了链接而设计的)
即使在这种情况下,如果您能够以某种方式链接/加载Springboard中的代码,代码将无法运行,因为您缺少与其他服务进行通信的权利。
<强>享权利强>
Jailbreak允许您将代码注入第三方应用程序(包括Springboard),这样代码在Springboard中执行并具有适当的权利。
实际上,对于越狱设备,您可以为代码添加权利并对其进行签名。但是,对于非越狱设备,您将无法执行此操作。
所以,我想说,你应该放弃针对非越狱设备的SBUIController方法。
尝试启动应用
半年前我有同样的问题,我花了很多时间。我尝试过没有成功的事情:
以及其他几种方法。
一些额外的想法
如果第三方应用程序处理某些URL方案,您可以使用它来启动此第三方应用程序。
答案 1 :(得分:3)
据我所知,只有私人api可以做到这一点。
@interface PrivateApi_LSApplicationWorkspace
- (bool)openApplicationWithBundleID:(id)arg1;
@end
PrivateApi_LSApplicationWorkspace* _workspace;
_workspace = [NSClassFromString(@"LSApplicationWorkspace") new];
[_workspace openApplicationWithBundleID:bundleIdentifier];
答案 2 :(得分:0)
您可以尝试使用RTLD_LAZY
或objc_getClass
。我已经使用两者来访问我的非越狱 iPhone 5上的BluetoothManager
。