什么是非公共API?

时间:2012-12-25 09:58:41

标签: iphone ios ipad

在App Store审核指南中,它表示非公开应用将被拒绝。这是什么意思?

私人APIs和非公开APIs之间有什么区别?

我正在使用我的客户的API来获取我的应用中UIWebview的数据,这是非公开的API吗?

帮助我。

4 个答案:

答案 0 :(得分:21)

非公共API指的是没有记录并提供给程序员的Apple API方法。

Apple不保证API的这一部分可以在将来的升级中使用。他们可以自由改变这一部分。

他们禁止使用,以便您的应用不会破坏iOS更新,从而保护您的应用的未来用户/买家!

网络服务是外部的,因此不属于非公开范围。这部分你需要保证,而不是Apple。

答案 1 :(得分:8)

没有区别。它们都是指未记录的任何iOS API。

外部API不计算在内,因为它们与iOS本身无关,因此只要您不在Objective-C代码中使用未记录的调用,您就是安全的。

答案 2 :(得分:1)

在iOS的发展过程中,Apple通常首先启用API,直到它被完善并记录在案,以便开发人员可以使用它。

iOS上的方法和类比你有的标题或文档要多得多。例如,有一个类将NSAttributedString转换为HTML,名为NSHTMLWriter。这没有记录,也没有公开,但是由UITextView在内部使用。

私有API的其他示例包括直接访问蜂窝网络信息,低级硬件访问或与确切的电池负载百分比一样良好的东西(公共API仅返回5%的增量)

不使API不公开允许Apple进一步改进它,甚至可能更改名称,这会破坏依赖于先前命名的软件。 Apple可以这样做,因为它们控制着所有的系统软件。要在已发布的API中更改某些内容,他们必须通过弃用来实现这一目标。

App Store Review团队有一个扫描仪应用程序,可以查看您提交的应用程序并标记对未记录的方法和类的所有调用。有一些方法可以规避那些使用混淆方法选择器的方法,但通常你想要与Apple玩得很好,因为如果你违反规则他们不喜欢它。

有一些非常罕见的例子,其中私有API是追溯公开的。即iOS中已经存在的一种方法,Apple允许我们使用它,即使没有文档,只有技术说明。

摘要:仅使用您在官方Apple文档中记录的类和方法。

PS:有一些方法可以通过官方渠道从UIWebViews获取数据。这里更详细的技术答案完全取决于您要做的事情。

答案 3 :(得分:0)

Objective C允许以不同方式使用内部(私有)方法。 Apple要求的不是使用其框架中未设计用于“客户端”代码的方法。 因此,当您访问私有方法时,属性并不好。