短信验证码:iOS 和安卓端系统的设计方案差异和最优选择

登录动作往往伴随着验证码,这在 iOS 和安卓端的实现上存在差异,笔者以此为题进行了分析并提出了相应建议。

大家好,我是 chamon,本期的研究社主要研究一下验证码系统在 iOS 和安卓端的实现差异,还有如何选择设计方案比较合理。

越来越好用的 iOS 验证码系统

去年 6 月 iOS12 发布,苹果系统支持了一键填充验证码的功能。而这个功能在之前的安卓系统就已经存在。

安卓甚至可以实现更方便的“自动读取短信并填充验证码”,不用点击“一键复制验证码”,但是这个实现需要获取短信授权。这个授权其实是一个高风险的授权,涉及信息安全和个人隐私问题(第三方应用可以通过短信授权访问你的短信内容,包括一些隐私和涉及财产安全的短信,所以我自己一般是不允许的)。

经过亲测,几乎很少应用会需要获取我的短信授权,量级比较大的应用仅仅只有百度贴吧。

超级产品经理

可能是这也跟 2017 年 6 月 1 日实施的《网络安全法》41 条上面规定的“网络运营者不得收集与其提供的服务无关的个人信息”也有一定的关系。

对于 iOS12 新出的一键填充验证码功能,我个人是觉得非常方便的。先来分析一下用户的操作路径,传统的获取短信验证码需要经过:

切换程序 > 点击收到的短信 > 复制/记住验证码 > 切换程序 >5 输入/黏贴验证码

而优化后的 iOS 系统操作路径,只需要做 1 步:点击系统键盘上面“From Message”的验证码。

超级产品经理

相对来说,安卓系统反而没那么便捷(基于不对短信进行第三方授权基础上)。

操作路径如下:

点击收到短信的“一键复制按钮”(3-5 秒有效)> 点击输入框 > 长按/双击 > 点击粘贴选项

其实很多安卓手机都默认用自带的第三方输入法,例如百度输入法、搜狗输入法。这些输入法都有粘贴板,所以上面的路径“长按/双击”就可以替换成“点击输入法的粘贴板一键粘贴”(粘贴板的体验各异,搜狗输入法没有时间限制、百度输入法有 3 秒左右限制)。

超级产品经理

为什么 iOS 会更便捷好用呢?

因为 iOS 在收到验证码之后,会弹出系统的键盘,并且获取短信。系统获取短信就不用担心第三方应用嗅探短信造成个人隐私或财产安全漏洞。而且无论用什么第三方应用,用什么第三方输入法,体验都是一致的。

安卓则会因为手机品牌不同,输入法不同的原因造成不一致的体验。

设计一小步,体验一大步

不知道从什么时候开始,一些 App 就把填写手机号码和填写验证码拆开分成两步。

超级产品经理

再然后就是把验证码的输入框按数位拆分,拆成独立的下划线或者是独立的格子。

超级产品经理

虽然只是很简单的改变,但是里面包含的体验却是有了很大的提升。分两步填写的设计相比起同一个页面填写有以下这些好处:

  1. 减少单个页面内需要填写的内容,让用户更专注于当前要填写的内容;
  2. 在输入手机后需要点击下一步按钮进行确认,这个时候会下意识进行检查;
  3. 因为上面两点,大大降低输错手机号所造成的企业短信成本。

而把验证码的输入框按数位拆分,在显示上变得更清晰,更容易校对,减少出错率。

新的填写设计在体验上的优势:

  1. 能提前让用户对于验证码的位数有心理预期,体验更舒适;
  2. 从位数上限制了输入错误,错误后会自动清空,让用户重新填写,减少校对的耗时。

会变化的体验

但是随着系统层级上的交互改变,原本体验极好的设计方案,体验也会有所变化。

按数位拆分的设计方案早期常见于银行卡号和支付密码的填写。注意,这里是填写,填写需要的是清晰、准确、有填入感。所以,在填写验证码系统用拆分数位的设计方案简直就是再好不过的体验。

超级产品经理

但当 iOS 系统的一键复制粘贴验证码出来之后,之前的清晰、准确、有填入感的优势基本上就消失了。

而在安卓系统上,由于一键复制粘贴验证码因授权问题受到限制的时候,拆分数位的设计方案很可能会让用户崩溃。

下面举几个我个人经常碰到的场景:

场景 1

辛辛苦苦复制了一串 6 位的验证码字符,最后却只给了我一个的格子进行粘贴,这很反人类,还有点便秘的感觉。

超级产品经理

场景 2

部分 App 在点击第一格的时候,App 并不给我显示点击反馈,我都不知道自己是否已经点中并开始触发长按。

超级产品经理

场景 3

当我习惯了这种手动粘贴体验之后,App 最后竟然让我只能复制第一个字符到第一个格子;剩下的我又要重新去切换程序到短信内容,重新看一遍,记住并填写(当时真的很想卸载 App,某些 App 的体验 Bug,图找不到了)。

场景 4

有些 App 可以通过系统粘贴进行粘贴,有些 App 则完全没有反应(在关闭了系统的验证码的高级安全设置前提下)。

超级产品经理

超级产品经理

也许有人会问:我们平时使用安卓系统是有一键复制和一键粘贴,为什么要去手动粘贴这么 low?

上面说过了这跟授权问题有关,我去查过 meterial design 的规范,并没有找到一键粘贴的,只找到了复制和粘贴。也请教过安卓朋友,确认原生系统是没有所谓的一键粘贴的。你

看到的只不过是第三方输入法弹出的粘贴板贴心功能。在默认的系统输入法,只能通过双击或者长按进行粘贴。

设计应该怎么做?

那么我们应该怎么做这个验证码系统的设计呢?

个人给出的建议如下:

1. 分步填写页面会更好

不但用户能更聚焦,降低出错率。而且能减少企业成本。

至于用户修改需要返回上一步耗费的时间成本,既然是用户在降低出错率都能粗心造成的错误,由用户承担一定的修改时间成本也是理所当然的,而且最重要的是,修改并不是高频的行为。

超级产品经理

2. 按数位拆分不适用于安卓

iOS 当然还是用拆分数位设计比较好,虽然一键粘贴之后,这种方案变得鸡肋。但是当需要去填写的时候,拆分数位的设计方案还是最优的。

而安卓由于太多限制,包括上面提到过的短信授权,还有信息设置里面的验证码安全设置,都能够让你不能顺利好好粘贴验证码。但是我体验了大部分采用不拆分数位设计方案的 App,都没有上面无法粘贴的问题。

超级产品经理

既然有好的方案,我们为什么还要自找崩溃呢?

不拆分数位不代表不能变大变清晰,可以通过间距和字号大小来做达到拆分数位的效果(下图仅供参考)。

超级产品经理

作者 Chamon