前言
全部课程
上周末聚餐,我的朋友小明,跟我们分享了,一次糟糕的购物经历。
那天,他去超市购物,买了一周要用的东西,装满了整个购物车。当到达收银台时,他发现已经有好多人在排队了。于是他加入到队伍中,经过漫长的等待,终于轮到小明结算了。当他启动手机支付APP,准备支付时,才发现,这个支付软件发布了新版本,并且需要强制用户升级后,才可以使用。
小明点击下载按钮后,发现新版本的升级包很大,加之超市网络环境一般,所以,他估算一下,这个升级过程会很漫长。望着后面等待结算的顾客,投来关注的目光,小明的内心非常着急。于是他果断放弃了结算,等软件更新完毕后,又重新排队完成了购物。
可以说,这种动辄打断用户正常购物行为的升级策略,非常不友好,他将用户置于非常尴尬的购物环境中。

帮倒忙的设计
如果你用的是iPhone手机,那么你一定有这样的体验,当你在某个陌生的地点,唤醒手机,执行某些操作时,系统界面上,有时会突然弹出来一个WiFi对话框。这个对话框中罗列了周围环境中,可被侦测到的,所有WiFi信号源。大多数情况下,这种突然的弹出框,会中断你的某些操作。你不得不在这个弹窗出现后,做出选择,是连接其中某个WiFi源,还是要关闭这个弹窗。

对于大多数用户而言,置身于陌生环境下,很少有连接某个陌生WiFi的需求。所以这种弹出框看似贴心设计,实则用途不大。这个突然跳出的弹出框,有时候不只是中断了,用户某些正在执行的任务。在某些条件下,甚至还会给用户操作,造成损失。
比如说,我正在使用微信,和一个朋友聊一些要紧的话题。此时,这个弹出框突然出现,那些位于输入面板中,待上屏区域的文字(还未真正提交的拼写文字),因得不到保存,会被打乱成字母格式,或者被直接清空掉。而我和朋友的紧急对话,也被迫终止。
更糟糕的情况是,我的手指因为输入惯性,在窗口弹出的一瞬间,并没有停下来输入,而是误触到,其中某条WiFi源上,于是我会完全错误的进入到,另一个任务流程里,一个密码输入框需要我来填写。

而想要退出这个任务流程,也不一件容易的事情,我需要连续执行两次退出操作,一次是退出密码输入界面,回到WiFi弹窗界面。然后再退出这个弹窗界面,回到聊天界面。我需要再次重新吊起键盘,才能回到对话中去。这一顿折腾,显然会让我非常恼火,因为,我很着急去对话,而目前我所做的一切,都与我的主线任务无关。
为用户提供一个,看似贴心的功能,结果确为用户制造了麻烦。苹果系统的设计者可能也意识到了这个问题,所以新版系统中,他们进行了优化,将两次退出操作,才能离开WiFi源弹窗,合并为一次。也就是说,当用户选择退出密码输入时,可以直接离开弹窗状态。但是这种优化,只是提升了用户的退出效率,并未从根本上解决问题。
有目的的打断
如果不考虑这个WiFi弹窗,对用户行为的打断,以及可能造成的“输入事故”,苹果系统的设计者,肯定是站在用户一方的,他们希望为用户连接WiFi提供便利。但也有的产品是站在“利己”一方的。比如,我们玩的一些免费游戏,往往是在你即将通关时,插入一条广告,这种中断会让你很不爽。于是,为了去掉这讨厌的广告,你可能会乖乖的,转化成付费用户了。
模态弹窗乱用
模态弹窗的不当应用,往往是打断用户的“第一元凶”。很多设计者,尤其是新人设计师,特别喜欢模态弹窗,只要和用户相关的信息,都喜欢用模态弹窗来呈现。比如,用户执行收藏,点赞等任务,提交成功后,反馈提示用模态弹窗。用户收到新的回复消息,消息提示用模态弹窗。发送简单消息推送,推送内容用模态弹窗...结果就是,用户在使用这些产品时,会经常性的,遭受各种弹窗的”攻击“。

有经验的设计师,在设计方案中,会很慎重的使用模态窗口。除非是强调性极高,需要用户仔细确认的内容。比方说,你在执行删除操作,这可能会带来数据损失。这时候,设计者会给你,提供一个模态的对话框。注明删除的危险性,以及希望你做出慎重的选择。
在模态窗口下,页面内除了窗口内容外,所有的界面元素都将被冻结。用户无法与之交互。只有退出窗口后,才能恢复交互。为了向用户传达,底层元素已经被冻结,一般模态窗口,会使用一个半透明的深色背景层。
为了减少打断用户事件的发生,一些强调级别较低的操作反馈,设计人员通常会选用SnackBar这类控件,来完成设计。这是一种非模态的消息控件,由Android系统提出,为了防止这类控件,被设计者乱改,破坏体验性。Android系统还专门制定了,严格的规范(可参见SnackBar用法), 但遗憾的是,在实际产品设计中,控件乱用,还是时有发生。
最后
在本文的最后,我们再回到开头的故事里。软件升级策略制定,应该避免打断用户的主线任务,即便是升级需要,也应该给到用户,选择是否立刻升级的权利。但遗憾的是,在实际的产品设计中,存在着大量打断用户主线任务的行为。
支付类软件,有时候强制用户升级,可能是处于安全性考虑。比如,旧版软件可能存在某些安全漏洞。这时候,合适的升级策略制定就非常重要。鼓励用户开启自动升级功能,在闲时,网络状况好的情况下,为用户自动升级软件。或是控制安装包的大小,将和漏洞相关的修复文件,打包推送给用户。当然,如果软件升级,仅仅是不想兼容,或是无法兼容旧版本数据,而做出强制升级的决定,那么这个升级时机的选定,就需要仔细的评估。