既然公众知道App Store提交的内容正在使用私有API进行测试,那么我需要提出这个问题......究竟是一个私有API,以便我可以避免它们?苹果和私有API
苹果和私有API
回答
私有API是SDK中未记录的API。例如,框架类可能会声明一个不打算由外部开发人员使用的方法。无法保证私有API的行为。您甚至无法确定该方法将在平台的未来更新中出现。它的声明可能在公开发布的SDK头文件中不可用。如果你坚持在SDK文档中公开定义的东西,你会没事的。
通常由于缺少SDK头文件。苹果的惯例之一是用下划线引导ObjC方法名称。
您会发现偶然使用私有API很困难。它们没有记录在SDK文档中,并且它们不显示在XCode的代码完成建议中。
最近成为新闻的原因是多个应用程序使用私有API所使用的框架的创建者,所以当包含他的框架的开发人员更新他们的应用程序时,他们被拒绝(尽管THOSE开发人员没有使用私人API,他们添加到他们的应用程序的框架)。
这就是您可能偶然使用私有API的唯一方法。
哪个框架是? – 2012-01-09 19:07:51
这是在three20框架,但这个问题已经弥补了很长时间。这个答案已经两年多了。 – mmc 2012-01-09 22:43:48
被所谓的“使用私有API”拒绝是不难的。尝试使用以下内容作为核心数据的属性,它会被拒绝:
- colorIndex
- 发生
- ID
它显示了机器人如何扫描API。
这不只是私人的API,可能会导致您的应用程序被拒绝。使用公开API的未公开成员可能会导致您的应用程序被拒绝。例如,three20库(自固定)访问类别内的_phase和其他UITouch成员。
他们还可以检测呼叫通过performSelector 私人成员,下面还标记拒绝:
UIWindow* window = [UIApplication sharedApplication].keyWindow]
return !![window performSelector:@selector(firstResponder)];
更令人不安的,如果您在3.1和3.0在3.0运行你的应用程序的工作你不使用任何3.1的东西,你的应用程序仍然可以被拒绝。一个例子可能是的UIImagePickerController
(见here)。这有点令人费解。
在您提交您的应用程序之前使用的一个很棒的工具是App Scanner。它会扫描你的.app文件的私有API的使用,并告诉您什么方法签名匹配起来,这些方法是什么类
看起来像这个网站要么关闭。任何人都知道任何其他执行类似功能的应用程序? – rvijay007 2013-04-15 23:13:58
我的应用程序被苹果,因为使用私有API的拒绝。这里是代码,
Class UIKeyboardImpl = NSClassFromString(@"UIKeyboardImpl");
id activeInstance = [UIKeyboardImpl performSelector:@selector(activeInstance)];
[activeInstance performSelector:@selector(dismissKeyboard)];
- 1. 苹果为什么不让私人API无法访问?
- 2. 的Dropbox API,OAuth的苹果
- 3. 苹果iCloud日历API
- 4. 私有REST API
- 5. iPhone私有API
- 6. Android的私有API
- 7. 检测私有API
- 8. 苹果iPad和PDF支持
- 9. 蛇和苹果不对齐
- 10. 苹果地图和MapKit使用相同的API吗?
- 11. 如何在iOS中使用bzip2格式?苹果告诉我bzBuffToBuffDecompress是私有的API
- 12. 苹果核心电话公共或私人
- 13. 苹果商店拒绝5. 1.5法律:隐私 - 定位服务
- 14. 磁盘故障后丢失的苹果私钥
- 15. 注册苹果
- 16. 苹果iPad HIG?
- 17. 私有API的安全性
- 18. 如何使Web API私有
- 19. iOS私有API文档
- 20. 什么是私有API
- 21. Xcode编译器自定义编译器vs苹果llvm 8.0和苹果审查
- 22. MFMailComposeViewController使用和苹果aproval过程
- 23. 苹果推送通知和表情符
- 24. Three20和苹果应用商店提交
- 25. 苹果Healthkit和iOS7部署目标
- 26. 苹果的.bash_profile双引号(直和曲)
- 27. 返回3为tableView:editingStyleForRowAtIndexPath:和苹果
- 28. 没有苹果的开发者ID
- 29. C++地图EXC_BAD_ACCESS(只有苹果)
- 30. 这是否有意义(苹果文档)?
好的很酷。感谢所有的快速反应! – RyJ 2009-11-20 22:54:42
因此,不是在私有API中调用方法,而是创建自己的方法来做同样的事情,这有什么不同?我是否正确地说过,这不是调用某些API方法的问题,而是你试图做一些他们不希望你做的事情? – 2011-08-06 08:22:01
@Nick不一定。对于获得Apple许可的应用程序,您应该拥有以下两项内容:1.只做自己没有限制的事情,不管方法如何。 2.通过有效的机制来完成。一般情况下可以做些事情,但是你不能直接调用私有API来完成它们。该仪式是一个私人API可能在未来的版本中改变,并打破你的应用程序,而编写一个公共API的自定义方法不应该与iOS升级。 – 2011-08-06 10:29:05