如何使用私有系统API?

4
我想使用一个私有/隐藏的iOS方法,例如来自SpringBoard类的clearIdleTimer(此处示例)。 我该怎么做? 很多信息都引用了旧版本的iOS。 这只是为了进行实验,我知道私有API不被App Store批准。 此外,我的iOS设备已注册开发,但未越狱。 编辑:我找到了这些iOS-Runtime-Headers,但示例对我无效。

1
搜索任何文档,但通常你需要进行大量的实验... - Michael Dautermann
此外,最好指定您的目标iOS版本,如果您找到的文档对您来说太旧了。 iOS 7?iOS 6+? - Nate
1个回答

6

并非所有的私有API都相同。

其中一些你可以在任何应用程序中使用...但你无法获得App Store的批准。

有些可以使用,但只有在你的应用程序具备root权限时才能使用,这需要越狱手机(加上其他步骤)。

有些可以使用,但你需要授予你的应用程序一个entitlement,我认为这也需要越狱手机。

对于这个API:

@interface SpringBoard <UIApplicationDelegate, SBWiFiManagerDelegate>
{
}
- (void)clearIdleTimer;

您正在尝试直接调用SpringBoard应用程序中的方法。通常情况下,您无法直接调用其他应用程序的方法。
一种可以实现此操作的方法是使用Mobile Substrate(现在称为Cydia Substrate)。这是一个强大的代码注入平台,可以让您钩入SpringBoard应用程序并使用clearIdleTimer。但是,使用Mobile/Cydia substrate需要越狱您的手机。
某些类似于SpringBoard的功能旨在由其他应用程序调用,并且这些功能位于SpringBoardServices中,该服务与SpringBoard应用程序不同。您可以尝试搜索SpringBoardServices以寻找等效功能。这些API是私有的,但可能不需要越狱(我记不清了...我的手机已越狱,所以不必担心)。
我猜这不是您想要的答案 :(

不是我想要的答案,但很有信息量。你知道私有但非根可访问的API列表吗? - user924037
没有这样的列表。 - Nate
2
@user924037,你应该记住一个简单的规则 - 没有越狱,你只能访问公共和私有框架中的私有API,也就是你可以实际链接到你的应用程序的所有内容。在各种应用程序中定义的API,如SpringBoard或MobilePhone,如果不使用类似于移动基板的东西,就无法访问。这样,你可以缩小你应该检查的API列表。这并不意味着你可以使用你在框架中找到的所有内容。只是你至少可以调用这些API并检查它们是否工作。 - creker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接