如何使用私有系统 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 网关?

如何创建只能由前端访问的私有api?

如何使用 REST API 或 ARM 模板通过私有 GitHub 存储库在应用服务中部署应用?

如何保护私有移动 API 的“创建新用户”操作?

使用 AWS Amplify Auth 和 GraphQL API,您将如何进行一些公共和一些私有查询/突变调用?

如何使用 GitHub REST API 通过我的个人访问令牌访问组织拥有的私有存储库中的文件数据?