分享

私有API:不能用?还是不能不用?

 没原创_去搜索 2015-07-27

29日,有网友爆料,奇虎360旗下的iOS应用调用私有API,并且涉及读取用户数据,并怀疑360应用是因此而遭苹果商店下架。时隔一天,又有网友针锋相对的提出一些对比,表示360 浏览器调用的API主要用于浏览器加速,也就是上网时使网页在浏览器里显示得更快,而且通过反编译发现,多个国内外iPad浏览器应用都在调用这个接口。由于我们掌握的事实依据并不充分,这里并不做过多的判断。

图:网友进行对比的某iPad浏览器调用私有API截图

什么是私有API

 

iPhone中的API除了公开的APIPublished API外(或者Documented API),还有两类:私有APIPrivate API和未公开APIUnPublished API(或者Undocumented API)

私有API是指放在PrivateFrameworks框架中的API,未公开的API是指虽然放在Frameworks框架中,但是却没有在苹果的官方文档中有使用说明、代码介绍等记录的API

按苹果的说法,未公开的API是还不够成熟,可能还会变动的API,等完全成型了后会变成公开的API,但是目前不对其提供承诺,就是系统版本升级后可能会失效。而私有API是苹果明确不能使用的API。虽然两者有所区别,但是在具体使用方法上是类似的。

 

私有API也曾逃过审核

 

因为调用私有API而在审核中遭到拒绝的现象并不少见,甚至是在#ifdef DEBUG下,也有被检测出来的。当然,也有很多应用都调用了私有API但依然获得了通过,或者是在被警告的同时得到通过。由于苹果的审核机制,并未透露更多的信息给开发者,我们也不能确认苹果到底是如何进行判断。

但可以确认的是,苹果并不是完全禁止私有API。在Apple官方的开发者论坛中公布允许开发者使用UIGetScreenImage() 这个私有API函数,还表示并在今后公布的SDK中,可能会公布跟这个函数等效的公开API函数

Tumblr 和 Instapaper 的程序员 Marco Arment 还曾经“揭露”,苹果在 iBooks 中使用了大量私有 API,致使第三方应用无法实现亮度控制和调用字典等类似的功能。

甚至是Google Voice这样的应用,一样调用了私有API,并且获得了通过上架。Google承认在开发iPhoneGoogle Mobile应用的时违反AppleiPhone软件开放包的规则使用了未发布的API来使用iPhone的接近感应器方便用户进行语音搜索

图:Google Voice

私有API的不足

使用未发布的API有可能造成Apple升级软件应用程序代码可能会损坏但是很多开发者愿意冒这个险来开发自认为更强力的应用,同时,也有很多开发者认为自己的应用不需要多次升级。以Google语音搜索感应识别为例,在原始的SDK使用规范中使用这些技术的应用程序将无法通过Apple Store的审核而事实上如果严格遵守SDK规则的话开发者是无法开发出Google Voice


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多