iOS 8 第三方键盘“完全访问”的那些事


看到过有些用户去问搜狗和百度的输入法客服微博,为什么某某功能也需要“完全访问”,回答多半是技术原因或者说苹果的那个提示只是免责声明。这样的回答没错,也没用,消除不了用户的质疑,反倒觉得他们在推卸责任。

关于这个“完全访问”的讨论已经够多了,基本上都是骂搜狗、骂百度。“换个皮肤用得着完全访问吗?” “我只是想开启模糊拼音,用不着联网吧?” “想偷上传用户数据就直说!” 到处都是这样的骂声。我在这里不是想跳出来为搜狗百度正名,只是想就“完全访问”说说自己不大一样的看法。

关于什么是“完全访问”,请看少数派的这篇文章,要第三方输入法,还是要你的个人隐私:「完全访问」到底该不该开?,是为数不多的比较客观的介绍。

首先,开启“完全访问”意味着什么。你用这个第三方输入法输入的所有信息,都有可能被上传到这个输入法的服务器上,甚至包括一部分并没有用该输入法输入的文字,因为第三方输入法可以通过苹果提供的一个功能获得当前光标位置前后的一部分文字。更严重的是,即便你之前没有开启“完全访问”,有一天因为想尝试某个新功能忍不住开启了“完全访问”,这时候你之前用这个输入法输入的内容也有可能被上传。因为你之前的输入可能被输入法存在了本地,但是由于没有“完全访问”权限,这些数据无法联网上传,一旦你开启了“完全访问”,输入法就有了上传这些数据的能力。

当然,以上只是最坏的情形,我不断地强调“有可能”,就是想说,实际情况可能没有这么糟糕。为了让用户清楚地了解到这个最坏的情形,苹果在用户开启“允许完全访问”选项时给出了一个非常具有引导性的提示(我认为算得上警告),

allow full access

我相信稍有些安全意识的用户第一次看到这个提示都会点下“不允许”。这条提示只提到开启“完全访问”的坏处,至于第三方键盘为什么要获取“完全访问”只字不提,这基本上就是在告诉用户,“这个第三方键盘可能要上传你的数据,要小心了!”

细心的用户可能会看到,设置 > 通用 > 键盘 > 键盘 中有一行小字“这些键盘在使用时可以访问您键入的所有数据”,随后给出了一个详细解释“关于第三方键盘与隐私…”,就这样一个看起来就像在网上注册各类账号时必须同意的那个“协议”,如果不是各大第三方输入法都要求开启“完全访问”,恐怕很少有人会去看这个说明。

about third party keyboard & privacy third party keyboards

这个说明里确实提到了“完全访问”的好处,在第一段最后一行的后半句, “这些信息对改进自动更正功能卓有帮助”,仅此一句。就是这句话,造成了大家对“完全访问”的误解。可能你需要的功能和“自动更正”完全没有关系,那为什么还要开启“完全访问”?

首先需要了解一个概念,在“关于第三方键盘与隐私…”中提到了“附带键盘的第三方应用程序”,也就是开发文档中的containing app。说白了就是某某输入法的那个应用程序图标。输入文字时弹出的某某输入法的键盘必须用一个containing app把它包裹起来才能够发布到应用商店。

表面上看,既然都包裹起来了,键盘和containing app应该是关系非常紧密的,实际上,如果不开启“完全访问”,它们之间的关系就像两个独立的app,被苹果的沙盒技术隔离开来。不仅如此,没有开启“完全访问”的键盘比一般的app“更低一等”,不仅没法联网,就连本就非常有限的app间的通讯手段也被掐断。就好比每个应用都被关在一个个独立的牢房里,日子虽然不好过,但大家还可以互相挥挥手喊喊话,这个没有开启“完全访问”的键盘就好比是被关了禁闭,只有那一个小窗口,别人看不到他,他看不到别人。

这也就是说,如果没有“完全访问”,你点击某某输入法的应用程序图标并随后进行的设置是不会在键盘中生效的,因为键盘看不到。对于这个问题,输入法的开发团队有两个解决方案,让用户开启“完全访问”或者把设置挪到键盘里。选择前者就是被骂,如果选择后者,所有的设置都要在弹出的键盘中显示,虽然键盘大小可调,但是仍然非常影响用户体验,不符合用户的正常思维。有意思的是,如果你在键盘中的某个设置本身需要调用键盘输入文字,而这个设置项本身就在键盘内部,那该怎样输入。

另一方面,非常重视输入效率的用户会期待输入法有一个“用户自造词”的功能。正如前面所提到的,如果不开启“完全访问”,怎样在键盘内部用键盘输入用户自造词,就算能够输入,那该怎样备份这些自造词,就算能够备份,没有办法导入也是白搭。

从以上两方面来看,就不难理解某些看似不相关的功能也需要“完全访问”了。

我并不是说第三方输入法要求“完全访问”理所当然,也没有说它们拿了“完全访问”的权限不会做恶,我只是想让大家看到“完全访问”普通用户看不到的一面。