虎瀾集: iPhone 4.0 的授權策略改變
April 21st, 2010
Apple 最近發表了 iPhone 4.0 SDK,除了加入多工的功能之外,它的授權策略也改變了。原先的 iPhone 開發授權 3.3.1 節是這樣的
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs.
新的授權則改為
3.3.1 — Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
這基本上就是說,你要是用 Flash 或 Mono 的話,就別想在 iPhone 上混下去了,及早回頭改用 Cocoa 吧。這很奇怪,現在不是什麼東西都講究把餅做大嗎?為何 Apple 要採取這樣的措施去限制呢?這其實不會太難理解。
Flash 和 Mono 對 iPhone 而言最大的威脅在於他們在未來會走向同時支援 iPhone, Android, Blackberry 甚至 Windows Phone 等大的平台,這會吸引許多軟體開發者棄原生 SDK 不用,原因無他,對軟體開發者而言,以最小的代價支援最多的客戶是個理性的選擇。但換個角度看,以 Apple 的立場來講,最好是全世界每個人都用 iPhone,全世界的軟體商都只支援 iPhone,這樣 iPhone 的餅就可以真的做大,而不必擔心 Android, Blackberry 甚或微軟來分一杯羹。反正現在 iPhone 市佔率高,Apple 有本錢這麼做。
以這個思維,我們也可很容易解釋為何微軟在市佔不斷流失的情形下,仍然硬推 C#/Silverlight/XNA 為 Windows Phone 7 的唯一開發工具,捨棄以往 Windows Mobile 下可選用任意程式語言開發的彈性。微軟的策略也是一樣的,把所有人綁牢在 Windows Phone 上,捨棄彈性後開發商就必須選邊站了。微軟的市佔遠不如 iPhone,它可以這麼做的底氣在哪裡呢?在於它的 Azure 雲端服務,C#/Silverlight 是 Azure 的原生開發環境,商用系統可以很輕易的同時推出手機與 Web Service 共用的程式,這對於企業應用是很具有吸引力的。
對軟體開發者而言,有兩個理性的選擇,一個是把程式以 native port 的方式 port 到各個平台,或是乾脆把自己丟到網路上改用 HTML5。對於寫單機程式 (如接龍等小遊戲) 的人而言,前者是比較合理的方案,畢竟你不能冀望所有 iPod 的客人都有 network connectivity,而這些程式的獲利模式也不適合轉換成位於雲端的 HTML5 (玩個接龍要先付錢取得密碼,每次玩還得先登入網路後再輸入密碼認證身份?別鬧了 …)。