Home » iPhone App開發

不公平的競爭?淺談iPhone平台的Private API

Richard 8 April 2010 10:24 pm

隨著iPad的上市,官方的電子書應用軟體也在美國的App Store上架了,擁有美國帳號的使用者已經可以透過iBooks軟體購買、閱讀電子書,而Amazon的Kindle也隨之推出iPad的版本,正當電子書內容商在iPad紛紛推出軟體的同時,美國知名開發者卻出來抨擊Apple大量的在官方的iBooks軟體中使用了大量Private API,使得競爭對手不能與之公平競爭,這是怎麼一回事呢?

什麼是Private API

曾經看過筆者的CS193P心得筆記的讀者,或許還記得在第十八回的連載中,我們曾經談過關於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尚未有任何回應。

我們可以猜測,Apple是否會在iPhone OS 4.0版將這些Private API開放使用,以平息開發者的怒火?或者是Apple選擇再度的迴避這個話題,選擇不了了之?

Richard

平日關注於社群媒體以及行動上網的相關話題,熱愛技術。近日主要工作為開發iOS的應用程式,歡迎各位讀者與我交流。Twitter/Facebook: @dlackty、Email: dlackty@gmail.com。

More Posts - Website

  • http://www.qmedia.mobi David Hsu

    Private API 之所以被禁止,只有一個原因:

    因為這些 API 還會更動,甚至可能消失或改名。

    如果第三方程式使用這些API ,那OS 的升級就可能造成舊款的應用軟體無法使用。
    這種問題在過去的 OS 與開發者之間都存在,也都引起很多問題。
    但是,過去從來沒有軟這麼多數量的第三方軟體存在,
    當應用軟體數量已經突破二十萬個,
    當iphone /ipod touch 已經接近一億支的時候,
    OS必須向前相容舊版的應用軟體這就是個很嚴重的挑戰。

    身唯一名軟體開發者,我們當然希望平台業者提供的 documented API 越多越好
    但是也會感謝平台業者提醒我們有那些API 還屬於未定案的狀態

  • Pingback: 如何透過XCode在上架前替程式進行檢查? - Inside