原文:http://www.inside.com.tw/04/08/unfair-war-iphones-private-api
什么是Private API
所谓的Private API,就是那些iPhone OS中所隐藏的一些物件、方法,这些物件和方法并没有在官方的开发文件中被记载,主要使用在iPhone内建的应用程式当中。
像是iBooks软体中便提供让使用者自由调整萤幕亮度的功能,这样的功能在其他电子书软体中是看不到的,就因為它使用的是Private API。
Apple的态度根据苹果的官方说法,之所以不希望大家使用Private API,并非是要隐藏一些神奇功能不给开发者使用,大多的原因,是因為那些API还没有设计好、或者是那些API会造成系统的安全问题,所以不开放给开发者使用。而其他公开的API,则是有点像是与开发者之间的协议,对於这些API,Apple会负责确保在每次软体更新、系统升级后都能够正常运作。
而在App Store刚开放的那段时间,苹果对於开发者使用Private API并没有进行严格的审查,虽然有部份软体确实因為使用了这些API被拒绝上架,但一直到了去年年底,App Store开始採用自动的分析工具扫描所有提交上架的软体,凡是使用Private API的软体均会被拒绝上架。
换而言之,对於Private API的使用,Apple不仅不鼓励,甚至是强烈抵制。
开发者的状况或许你会想,这些Private API既然称之為Private,必定是隐藏的很好,很难被发现吧?事实上完全相反,许多的Private API就大辣辣的摊在iPhone SDK中,虽然没有详细的文件,不过相关的程式片段都可以轻易的找到,开发者很容易就能够发现不少文件上没有记载的API。而在网路上甚至也有开发者提供了现成工具能够快速的找出那些Private API。
而这些被找到Private API确实也可以在iPhone模拟器或是iPhone实机上面正常的运作,唯一的问题是:这些软体无法顺利上架。这对开发者来讲,简直就是一种「看得到吃不到」的感觉,相当的令人不快。
Google风波在2008年的时候,Google曾经发表了Google Mobile软体,其特别之处是使用者只需要在开启应用程式后,将iPhone拿到耳朵旁边,对麦克风说出想要搜寻的关键字,Google便会即时的开始搜寻。
而这样的功能使用到了iPhone硬体上的距离感应器,所谓的距离感应器,便是我们将手机拿到靠近耳朵的时候会自动关闭萤幕的感应装置,在当时,这项装置苹果只提供了开发者开啟跟关闭的选项,而其他的感应功能则没有被记载在官方的文件中,而这些隐藏的功能正是Private API。
虽然这件事情在被国外的知名部落客踢爆后在开发者界引起轩然大波,但后来仍然可以说是不了了之。
结论有趣的是,在iBooks之前,其他App Store上的官方应用程式,像是Mobile Me Gallery、Remote,甚至是最近iPad上的Pages、Number、Keynote等等,这些软体均遵守iPhone SDK的官方条文规定,并没有使用任何的Private API。
然而,对於电子书这个正当火热的市场,Apple却反常的使用了大量的Private API,儼然就是一种作弊的行為。这样的作法使得许多开发者忿忿不平,截至目前為止,Apple尚未有任何回应。