库克在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用户的口味,能在用户体验上独辟蹊径的黑马,用户将用脚投票。