如何使用私有系统 API?
Posted
技术标签:
【中文标题】如何使用私有系统 API?【英文标题】:How do I use private system API? 【发布时间】:2014-01-15 19:42:21 【问题描述】:我想使用私有/隐藏的 ios 方法,例如来自 SpringBoard
类 (example here) 的 clearIdleTimer
。我该怎么做呢?很多信息都参考了更旧的 iOS 版本。
这只是为了实验,我知道私有 API 未经 App Store 批准。此外,我的 iOS 设备已注册开发但未越狱。
编辑:我找到了这些 iOS-Runtime-Headers,但这些示例对我不起作用。
【问题讨论】:
google 可以找到任何文档,但一般情况下,您必须进行 很多 的实验... 另外,如果您找到的文档对您来说太旧,最好指定 哪个 您要定位的 iOS 版本。 IOS 7? iOS 6+? 【参考方案1】:并非所有私有 API 都是相同的。
其中一些您可以在任何应用程序中使用...您只是不会让它们批准进入 App Store。
您可以使用其中一些,但前提是您的应用以root
权限运行,这需要越狱手机 (plus other steps)。
其中一些你可以使用,但你需要grant your app an entitlement,我相信这也需要越狱的手机。
在这个 API 的情况下:
@interface SpringBoard <UIApplicationDelegate, SBWiFiManagerDelegate>
- (void)clearIdleTimer;
您正试图直接调用 SpringBoard 应用程序中的方法。您通常不能直接调用其他应用程序的方法。
您可以这样做的一种方法是使用Mobile Substrate (now called Cydia Substrate)。这是一个强大的代码注入平台,可让您连接到 SpringBoard 应用程序,并使用clearIdleTimer
。但是,使用 Mobile/Cydia 基板需要越狱您的手机。
一些 SpringBoard 类型的功能被设计为由其他应用程序调用,这些功能位于 SpringBoardServices
中,这与 SpringBoard 应用程序不同。您可以尝试在 SpringBoardServices 中搜索等效功能。这些 API 是私有的,但可能不需要越狱(我不记得了……我的手机已经越狱,所以我不必担心)。
我怀疑不是你想要的答案:(
【讨论】:
不是我想要的答案,但信息丰富。您知道私有但非 root 可访问的 API 列表吗? 没有这个列表,没有。 @user924037,你应该记住一个简单的规则——没有越狱,你只能从公共和私有框架访问私有 API,即你可以实际链接到你的应用程序的所有内容。在 SpringBoard 或 MobilePhone 等各种应用程序中定义的 API 无法访问,除非使用移动基板之类的东西,因此无法越狱。通过这种方式,您可以缩小应检查的 API 列表。这并不意味着您可以使用在框架中找到的所有内容。只是你至少可以调用这些 API 并检查它们是否正常工作。以上是关于如何使用私有系统 API?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 cloudformation 创建私有 AWS Api 网关?
如何使用 REST API 或 ARM 模板通过私有 GitHub 存储库在应用服务中部署应用?