聊聊iOS 8的开放程度,对第三方输入法来说是一次真正意义上从零开始的机会?
编者按:在前几天的WWDC上,苹果iOS 8开放了用户呼吁已久的第三方输入法。本文作者是触宝输入法PM周兆文(@ DravenZ ),他对iOS 8在输入法方面的开放性和局限性谈了自己的看法。在文末,他也从开发者的角度整体评估了一下这次iOS 8的开放性。
库克在 WWDC 2014 宣布了iOS 8一系列令人兴奋的新特性。其中一个特性,对于英语和其他语言国家的用户来说,可能不太受关注,但它却是中文用户企盼已久的事儿——这就是, 开放了第三方输入法 。
刚忙活完锤子发布会的老罗也在直播过程发 微博 :“输入法这个牛逼!”
是的,这是一个特牛逼的事儿。技术上要开放输入法并不能算是一件很牛逼的“高科技”,真正牛逼的,是给iOS系统的输入体验带来了无限的可能性。
iOS自带的输入法一直是被人诟病的一大短板,无论是英语输入中时常上演搞笑镜头的自动纠错功能,还是让中文用户痛苦不堪的拼音输入。“为了安装第三方输入法”,这几乎成了iOS设备用户越狱的第一大理由。
而现在,苹果终于愿意向开发者放开限制,最终得益的将是iOS的终端用户。用户将能使用上更安全、更漂亮、功能更强大的输入法。而许多以前iOS系统输入法所不支持的小语种也将能用上真正意义上的自己语言的”输入法”。
同时,对于开发者来说,iOS平台第三方输入法市场将是一次真正意义上的从零开始的机会。无论你在Android上是巨头还是小众,在App Store大家都是零起点,而且iOS平台上的无法通过预装进行推广,用户也能随时随地轻松卸载任何第三方应用。对于各家输入法来说,真正地将所有精力和资源放在用户体验上才是占据榜单前排、占据用户桌面的最好途径。从技术上来说,苹果这次开放的程度较为有限,但已足够开发一个功能完整的智能输入法。
【开放,体现在哪里】
这次在iOS 8中开放的主要接口包括 :
insertText 插入字符串
deleteBackward 向前删除
documentContextAfterInput 获取光标之后的内容
documentContextBeforeInput 获取光标之前的内容
通过InsertText和deleteBackward,即可实现输入法基本的输入和删除等功能。
同时还能通过documentContextAfterInput和documentContextBeforeInput获取上下文接口,实现触宝的上下文预测功能(通过上下文语义优化候选词预测)。
此外,苹果还开放了一系列其他的接口,比如UITextInputDelegate,可用于绑定当前输入框中的选区变动和内容变动事件。这可以帮助输入法实时地跟踪光标位置和选区的变化,从而及时根据新的内容和光标位置进行语义学习和语义预测。
另外一个对于开发者非常方便的接口是UILexicon,苹果的文档中这样解释UILexicon:
The UILexicon object contains words from various sources, including:
• Unpaired first names and last names from the user’s Address Book database
• Text shortcuts defined in the Settings > General > Keyboard > Shortcuts list
• A common words dictionary that includes the names of Apple products
第三方输入法可以简单地导入通信录中的联系人姓名、快捷词条、一个系统内置的苹果产品相关词语的词库。*
以往在Android上,这可能都需要额外声明权限,并自己从头开始实现,而苹果这次则提供了一个更加统一发布的途径。当然,联系人姓名是以名和姓分开成为两个词的形式导入,这也体现了苹果一如既往对用户隐私的关注。
同样的,一些创新的输入方式,比如滑行输入、手势输入等方式也没有被限制。
【开放的同时,也有局限】
不过,苹果终究是苹果,不会一次性将一个系统核心的部分完全没有保留的开放出来。为了保证体验的一致性和隐私安全,目前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.”
第三方输入法将不允许移动光标位置,不允许选中输入框中的文字。这将直接导致目前在Android输入法中被广泛使用的光标快捷移动功能,以及剪切、复制、粘贴等功能无法使用。
再比如,默认情况下输入法是没有Network access联网权限的,这将导致在线语音输入、云输入等功能无法使用。但相对的,对于离线云输入、离线语音技术来说算是一个机遇。
另外,苹果强制要求所有的第三方输入法必须在键盘上放置“切换输入法”按键,而如今的Android第三方输入法几乎都没有、也不愿意放置这个按键,毕竟,开发者谁会希望提供用户一个“方便地切换到别家产品”的入口呢?
【限制,是把双刃剑】
这些限制和规定都聚焦到苹果在Programming Guide(开发向导)中反复提到一个关键字 ——“Trust” 信任。
“Your first consideration when creating a custom keyboard must be how you will establish and maintain user trust.”
“在开发第三方输入法时,第一个必需考虑的事就是如何建立和维护用户信任。”
苹果提出了三个具体的方面:
1、“Safety of keystroke data.”
用户只希望输入的信息能进入输入框或文档中,而不是被保存或上传。
2、“Appropriate and minimized use of other user data.”
如果你记录或请求了其他的用户数据,比如通信录数据和地理位置信息,你就要负担起向用户解释你需要获取这些信息的原因。
3、“Accuracy.”
上屏内容需要精确反应用户的点击,这点和隐私无关,而是用户能通过使用感受到你产品的精准能力。
的确,作为输入法产品,能紧密接触许多用户的隐私内容和安全信息。前一阵子的百度日文输入法被爆出偷偷上传用户资料,老牌输入法 Swype 被爆出私自记录和上传用户位置信息。而苹果正是吸取了这些前车之鉴,给第三方输入法划定了一个严格,但又相对合理的权限范围和行为准则,既保证了用户的信息安全,也使得iOS第三方输入法的开发有了一定之规。基本来说,iOS 8只是将之前的私有接口开放了出来,可以认为 iOS 8的第三方输入法的能力不会超越以往的越狱版输入法,更不可能超越系统自带输入法。
总而言之,这次开放第三方输入法会在全球相关行业和开发者中掀起一阵骚动,在新的平台上,渠道的优势被削弱到最低,比拼的就是产品本身。最终胜出的,既可能是坐拥几亿用户的老牌巨头,也有可能是某些对了苹果用户的口味,能在用户体验上独辟蹊径的黑马,用户将用脚投票……
【整体看iOS 8的开放程度】
最后,如果跳脱“开放第三方输入法”这个细分的点,从开发者的角度整体看这次iOS 8的开放性,有三点蛮值得一提:
1、在垂直领域利用开发者完善用户体验,强调本地化的服务
凡是与数据相关的业务,苹果似乎都不是很擅长,你看地图和输入法都是用户的吐槽点,不过你会发现苹果是有开放的迹象。地图方面,早期iOS 里面的地区,就中国地区来看,香港和台湾的数据TOMTOM提供的,而大陆地区的数据则是高德提供的,到后期更是与社交新浪微博打通。拿这次开放输入法为例,输入法本身是一个体现用户个性化的应用,苹果系统的封闭是为了保持一致性,肯定是会牺牲掉一部分的用户体验。现在,苹果将这些“脏活累活”交给第三方做,这样在本地化体验上会更加好,最起码不会输给Android。
2、坚固并且完善iOS平台化
苹果由于多年的封闭,本身就搭建了非常良好的平台,就好像一个女子非常注意饮食,所以她的身材保持的非常好,但是如果想要变的漂亮就需要衣服的点缀,对于iOS来说一样,从Healthkit看,无论是Nike还是其他的服务供应商,苹果都希望借助这个平台打通用户,未来实现更多商业化,通过数据以及合作方强化自身平台的服务。同时苹果也在树立标准。
3、降低开发者的成本
Swift语言的出现与多设备之间的打通本身就是开发者的福利, Swift语言本身学习成本较低,对于开发者来说需要兼顾至少三个系统平台,未来Swift也可以帮助开发者将自身应用转移至其他平台。
其实,iOS和Android的开放和封闭都是相对的,相信未来二者都会越来越成功,只不过走的路线不同罢了,而近两年Android趋向于封闭,iOS趋向于开放,路线明显相反。对于iOS 来说,本身基础打得好,这次开放我觉得苹果越来越在移动平台上重视开发者的能力,我认为他们希望借助在某些领域里的开发者帮助苹果搭建并且完善自己的生态链,并且未来开发者也是帮助苹果搭建与Android生态链竞争的壁垒。
[本文来自读者的投稿,不代表 36氪 立场]