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

評論
評論

隨著 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 選擇再度的迴避這個話題,選擇不了了之?

相關文章

評論