iOS 7 私有(private) API 使用

标签 ios frameworks ios7 iphone-privateapi

昨天我尝试在 iOS 7 中使用私有(private) API,但它不起作用。 以下调用适用于 iOS 6:

1. NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/AppleAccount.framework"];
2. BOOL success = [b load];
3.
4. Class AADeviceInfo = NSClassFromString(@"AADeviceInfo");
6.
7. NSLog(@"-- serialNumber: %@", [AADeviceInfo serialNumber]);
8. NSLog(@"-- udid: %@", [AADeviceInfo udid]);

在 iOS 7 中使用此代码片段时,它会返回一个空指针。 框架、类和方法仍然存在(click me)。 对我的问题有什么想法吗?是否有额外的安全层使得不再可能在 iOS 7 中调用私有(private) API?

谢谢!

最佳答案

在大多数情况下,此类行为意味着此 API 受到授权保护。这是一种跨 iOS 使用的授权方法。大多数 API 的调用都是在进程服务器外进行的。并且该服务器可能会检查客户端是否具有某些特定的权利。权利仅适用于越狱 iOS 上的系统应用和第 3 方应用。

没有简单的方法来检查服务器是否需要授权。但是,有时它会在控制台中写入类似“嘿...您需要授权 X 才能调用 API Y”之类的内容。然而,大多数时候,它会悄无声息地失败。

如果你真的想检查这个,你将不得不反汇编框架以查看它使用哪个服务器并反汇编服务器并找到此 API 的实现。

关于iOS 7 私有(private) API 使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18810049/

相关文章:

ios7 - iAd正在测试应用程序上运行,但不在appstore上运行时

ios - Swift:使用 NSFetchedResultsController 应用谓词后重新加载 TableView 数据

ios - 在 swift 4.2 的表格 View 中保存勾选单元格的状态

ios - CoreData 按关系排序

php - 在 laravel 中使用 Assets 链接到 css 文件

ios - 使用 iOS Game Center Challenge 发送对象?

ios - 在 iOS 7 WebView 中嵌入 YouTube 时出现白屏

ios - 在整个应用程序上设置日历类型

java - 如何存储和管理大文件

ios - ld : framework not found FirebaseNanoPB