4

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

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

2)没有越狱就没有办法使用SBUIController吗?

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

4

3 回答 3

4

应用程序与框架

GraphicServices 是框架。它专门设计用于链接到第 3 方应用程序并由其用户使用。我记得 SBUIController 是 Springboard 的一部分,它是独立的应用程序(不是设计为链接到的)

即使在这种情况下,如果您能够以某种方式从 Springboard 链接/加载代码,该代码也将无法工作,因为您缺少与其他服务交谈的权利。

权利

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

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

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

尝试启动应用程序

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

  • SBSLaunchApplicationWithIdentifier
  • SBReturnToPreviousAppAtSpecifiedTime
  • 尝试使用 BKSWorkspace

以及其他几种方法。

一些额外的想法

如果 3rd 方应用程序处理一些 URL 方案,您可以使用它来启动这个 3rd 方应用程序。

于 2013-05-06T23:50:07.140 回答
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

于 2015-11-16T02:42:52.920 回答
0

您可以尝试使用RTLD_LAZYobjc_getClass。我已经BluetoothManager在我的非越狱iPhone 5 上使用这两种方式访问​​。

于 2013-05-06T23:28:35.553 回答