iOS Private API - 按包ID启动应用程序

时间:2013-05-06 23:26:03

标签: ios iphone-privateapi

一组三个问题,最后一个是期望的目标:

1)可以使用GraphicsServices方法并从私有框架链接二进制文件。为什么不可能与SpringBoard SBUIController类似?

2)如果没有越狱,是否无法使用SBUIController?

3)如何在iOS 6上通过捆绑ID(通过私有API但没有越狱)启动应用程序?

3 个答案:

答案 0 :(得分:4)

应用程序与框架

GraphicServices是框架。它专门设计为与第三方应用程序链接和用户。我记得SBUIController是Springboard的一部分,它是独立应用程序(不是为了链接而设计的)

即使在这种情况下,如果您能够以某种方式链接/加载Springboard中的代码,代码将无法运行,因为您缺少与其他服务进行通信的权利。

<强>享权利

Jailbreak允许您将代码注入第三方应用程序(包括Springboard),这样代码在Springboard中执行并具有适当的权利。

实际上,对于越狱设备,您可以为代码添加权利并对其进行签名。但是,对于非越狱设备,您将无法执行此操作。

所以,我想说,你应该放弃针对非越狱设备的SBUIController方法。

尝试启动应用

半年前我有同样的问题,我花了很多时间。我尝试过没有成功的事情:

  • SBSLaunchApplicationWithIdentifier
  • SBReturnToPreviousAppAtSpecifiedTime
  • 尝试使用BKSWorkspace

以及其他几种方法。

一些额外的想法

如果第三方应用程序处理某些URL方案,您可以使用它来启动此第三方应用程序。

答案 1 :(得分:3)

据我所知,只有私人api可以做到这一点。

@interface PrivateApi_LSApplicationWorkspace
- (bool)openApplicationWithBundleID:(id)arg1;
@end

PrivateApi_LSApplicationWorkspace* _workspace;
_workspace = [NSClassFromString(@"LSApplicationWorkspace") new];
[_workspace openApplicationWithBundleID:bundleIdentifier];

您可以查看https://github.com/wujianguo/iOSAppsInfo

答案 2 :(得分:0)

您可以尝试使用RTLD_LAZYobjc_getClass。我已经使用两者来访问我的非越狱 iPhone 5上的BluetoothManager