庫克在WWDC 2014宣布了iOS 8一系列令人興奮的新特性。其中一個對于英語和其他語言國家用戶來說不太關注,但是中文用戶企盼已久的事兒就是開放了第三方輸入法。
剛忙活完錘子發布會的老羅也在直播過程發微博:“ 輸入法這個牛逼!”
是的,這是一個特牛逼的事兒。技術上要開放輸入法并不能算是一件很牛逼的”高科技”,真正牛逼的是給iOS系統的輸入體驗帶來了無限的可能性。
iOS自帶的輸入法一直是被人詬病的一大短板,無論是英語輸入中時常上演搞笑鏡頭的自動糾錯功能,還是讓中文用戶痛苦不堪的拼音輸入。“為了安裝第三方輸入法”,這幾乎成了iOS設備用戶越獄的第一大理由。
而現在,蘋果終于愿意向開發者放開限制,最終得益的將是iOS的終端用戶。用戶將能使用上更安全,更漂亮,功能更強大的輸入法。而許多以前iOS系統輸入法所不支持的小語種也將能用上真正意義上的自己語言的“輸入法”。
同時,對于開發者來說,iOS平臺第三方輸入法市場將是一次真正意義上的從零開始的機會。無論你在安卓上是巨頭還是小眾,在App Store大家都是零起點。而且iOS平臺上的無法通過預裝進行推廣,用戶也能隨時隨地輕松卸載任何第三方應用。對于各家輸入法來說,真正地將所有精力和資源放在用戶體驗上才是占據榜單前排,占據用戶桌面的最好途徑。從技術上來說,Apple這次開放的程度較為有限,但已足夠開發一個功能完整的智能輸入法。
這次在iOS 8中開放的主要接口包括 :
通過InsertText和deleteBackward,即可實現輸入法基本的輸入和刪除等功能。
同時還能通過documentContextAfterInput和documentContextBeforeInput獲取上下文接口,實現觸寶的上下文預測功能(通過上下文語義優化候選詞預測)
此外Apple還開放了一系列其他的接口,比如UITextInputDelegate,可用于綁定當前輸入框中的選區變動和內容變動事件。這可以幫助輸入法實時地跟蹤光標位置和選區的變化,從而及時根據新的內容和光標位置進行語義學習和語義預測。
另外一個對于開發者非常方便的接口是UILexicon,Apple的文檔中這樣解釋UILexicon:
The UILexicon object contains words from various sources,including:
輸入法可以簡單地導入通信錄中的聯系人姓名,快捷詞條,一個系統內置的蘋果產品相關詞語的詞庫。以往在安卓上這可能都需要額外聲明權限,并自己從頭開始實現,而Apple則提供了一個更加統一發布的途徑。當然,聯系人姓名是以名和姓分開成為兩個詞的形式導入,這也體現了Apple一如既往對用戶隱私的關注。
同樣的,一些創新的輸入方式,比如滑行輸入,手勢輸入等方式也沒有被限制,后續用戶們可以在iOS 8上體驗觸寶的中文滑行輸入和英文整句滑行輸入方式。
不過蘋果終究是蘋果,不會一次性將一個系統核心的部分完全沒有保留的開放出來。為了保證體驗的一致性和隱私安全,目前iOS 8開放的輸入法相關端口還相當有限。
首先在secureTextEntry屬性為YES的輸入框內,比如密碼框,iOS系統將強行調用系統默認輸入法,以保證用戶的信息安全,這一點在UIKeyboardTypePhonePad和UIKeyboardTypeNamePhonePad類型的輸入框(數字輸入框,比如電話號碼框)中亦是如此。
此外還有一些比較令人遺憾的限制:
“Because a custom keyboard can draw only within the primary view of its UIInputViewController object,it cannot select text or control cursor position。These operations are
under the control of the text input app that is using the keyboard。If that app provides an editing menu interface (such as for Cut,Copy,and Paste),the keyboard has no
access to it。A custom keyboard cannot offer inline autocorrection controls near the insertion point。”
第三方輸入法將不允許移動光標位置,不允許選中輸入框中的文字。這將直接導致目前在安卓輸入法中被廣泛使用的光標快捷移動功能,以及剪切、復制、粘貼等功能無法使用。
再比如默認情況下輸入法是沒有Network access聯網權限的,這將導致在線語音輸入,云輸入等功能無法使用。但相對的,對于離線云輸入,離線語音技術來說也是一個機遇。
另外Apple強制要求所有的第三方輸入法必須在鍵盤上放置”切換輸入法”按鍵,而如今的安卓第三方輸入法幾乎都沒有,也不愿意放置這個按鍵。畢竟開發者誰會希望提供用戶一個”方便地切換到別家產品”的入口呢。
這些限制和規定都聚焦到Apple在Programming Guide(開發向導)中反復提到一個關鍵字 “Trust” 信任。
“Your first consideration when creating a custom keyboard must be how you will establish and maintain user trust。”
“在開發第三方輸入法時,第一個必需考慮的事就是如何建立和維護用戶信任。”
Apple提出了三個具體的方面:
1、“Safety of keystroke data。”
用戶只希望輸入的信息能進入輸入框或文檔中,而不是被保存或上傳
2、“Appropriate and minimized use of other user data。”
如果你記錄或請求了其他的用戶數據,比如通信錄數據和地理位置信息,你就要負擔起向用戶解釋你需要獲取這些信息的原因。
3、“Accuracy。”
上屏內容需要精確反應用戶的點擊,這點和隱私無關,而是用戶能通過使用感受到你產品的精準能力。
的確,作為輸入法產品,能緊密接觸許多用戶的隱私內容和安全信息。 前一陣子的百度日文輸入法被爆出偷偷上傳用戶資料,老牌輸入法Swype被爆出私自記錄和上傳用戶位置信息。而Apple正是吸取了這些前車之鑒,給第三方輸入法劃定了一個嚴格,但又相對合理的權限范圍和行為準則。既保證了用戶的信息安全,也使得iOS第三方輸入法的開發有了一定之規。基本來說,iOS 8只是將之前的私有接口開放了出來,可以認為 iOS 8的第三方輸入法的能力不會超越以往的越獄版輸入法。更不可能超越系統自帶輸入法。
總而言之,這次開放第三方輸入法必然將在全球相關行業和開發者中掀起一陣騷動,在新的平臺上,渠道的優勢被削弱到最低,比拼的就是產品本身。最終勝出的既可能是坐擁幾億用戶的老牌巨頭,有可能是某些對了apple用戶的口味,能在用戶體驗上獨辟蹊徑的黑馬,用戶將用腳投票。