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

2012-02-13 12:54:24來源:CSDN作者:

2月9日,有網友爆料,奇虎360旗下的iOS應用調用私有API,并且涉及讀取用戶數據,并懷疑360應用是因此而遭蘋果商店下架。時隔一天,又有網友針鋒相對的提出一些對比,表示360 瀏覽器調用的API主要用于瀏覽器加速,也

2月9日,有網友爆料,奇虎360旗下的iOS應用調用私有API,并且涉及讀取用戶數據,并懷疑360應用是因此而遭蘋果商店下架。時隔一天,又有網友針鋒相對的提出一些對比,表示360 瀏覽器調用的API主要用于瀏覽器加速,也就是上網時使網頁在瀏覽器里顯示得更快,而且通過反編譯發(fā)現,多個國內外iPad瀏覽器應用都在調用這個接口。由于我們掌握的事實依據并不充分,這里并不做過多的判斷。

什么是私有API

iPhone中的API除了公開的API:Published API外(或者Documented API),還有兩類:私有API:Private API和未公開API:UnPublished API(或者Undocumented API)。

私有API是指放在PrivateFrameworks框架中的API,未公開的API是指雖然放在Frameworks框架中,但是卻沒有在蘋果的官方文檔中有使用說明、代碼介紹等記錄的API。

按蘋果的說法,未公開的API是還不夠成熟,可能還會變動的API,等完全成型了后會變成公開的API,但是目前不對其提供承諾,就是系統(tǒng)版本升級后可能會失效。而私有API是蘋果明確不能使用的API。雖然兩者有所區(qū)別,但是在具體使用方法上是類似的。

私有API也曾逃過審核

因為調用私有API而在審核中遭到拒絕的現象并不少見,甚至是在#ifdef DEBUG下,也有被檢測出來的。當然,也有很多應用都調用了私有 API但依然獲得了通過,或者是在被警告的同時得到通過。由于蘋果的審核機制,并未透露更多的信息給開發(fā)者,我們也不能確認蘋果到底是如何進行判斷。

但可以確認的是,蘋果并不是完全禁止私有API。在Apple官方的開發(fā)者論壇中曾公布允許開發(fā)者使用UIGetScreenImage() 這個私有API函數,還表示并在今后公布的SDK中,可能會公布跟這個函數等效的公開API函數。

Tumblr 和 Instapaper 的程序員 Marco Arment 還曾經“揭露”,蘋果在 iBooks 中使用了大量私有 API,致使第三方應用無法實現亮度控制和調用字典等類似的功能。

甚至是Google Voice這樣的應用,一樣調用了私有API,并且獲得了通過上架。Google曾承認在開發(fā)iPhone版Google Mobile應用的時違反Apple的iPhone軟件開放包的規(guī)則,使用了未發(fā)布的API來使用iPhone的接近感應器方便用戶進行語音搜索。

\
圖:Google Voice

私有API的不足

使用未發(fā)布的API有可能造成在Apple升級軟件時應用程序代碼可能會損壞。但是很多開發(fā)者愿意冒這個險來開發(fā)自認為更強力的應用,同時,也有很多開發(fā)者認為自己的應用不需要多次升級。以Google語音搜索感應識別為例,在原始的SDK使用規(guī)范中,使用這些技術的應用程序將無法通過Apple Store的審核。而事實上,如果嚴格遵守SDK規(guī)則的話,開發(fā)者是無法開發(fā)出Google Voice的。

贊助商鏈接: