这个优化方案,实际已经过去了大约两年时间,也是日常输出各类文件前的进行思考的一小片段。
但这次有比较深刻的印象,是因为这次优化,让自己更深刻了解到,熟悉接口文档,与技术人员深入沟通的重要性。
自此养成了仔细阅读接口文档的习惯;到后面,能够根据产品/市场等需求,及未来可能拓展的需求,在后台技术人员制作接口文档时,一起去考虑接口的可用性和可扩展性。
需求背景
车队为了便于管理,通常会设置一位领队。在实际行车过程中,会有车辆掉队。我为此设计了一个‘查看领队位置’的功能。方便用户随时获取到领队的正确位置,进行跟车。
产品测试时发现,当领队关闭位置共享/网络中断,队员客户端没有做任何处理,始终显示最后一次读取到的位置。这会让队员误以为,领队始终在那个位置。这就违背了这个设计当初的意愿——让队员随时获取领队的正确位置。
来分析一下成员查看领队位置时,出现该异常的背后的原因——领队未能将数据发给后台
这里,我需要解决‘让用户获知自己查看到的领队位置是否为最新’的问题(真是有点绕口令)。
与安卓开发GG沟通,开发GG表示,“我拿到数据就展示,没拿到就展示最后一次拿到的,没有任何问题啊"听上去很有道理的样子。
“但是你拿到的数据可能不是最新的呀!”
开发GG表示:“我没办法知道我拿到的数据是不是最新的”
于是,拿出我滴谦卑,与开发GG深入沟通,对背后的逻辑做深入了解。
”领队发送GPS到后台——后台获取GPS,并会在接收到GPS后生成一个时间戳——后台将GPS+时间戳发给队员客户端“
成员客户端只要打开领队位置界面,即会立刻获取到领队最后一次上传的GPS,当然还有时间戳。
于是提议——客户端时间减去时间戳时间大于轮询时间,即可判断位置非最新,在界面做出提醒。
然而,客户端时间与后台时间可能不一致。
因此客户端在点击进入领队位置页面,在拿到GPS和时间戳后,无法得知这个位置是否确为刚刚(最新)获取的。
……
望闻问切完成,可以开始设计了!
在交互上做出以下设计:
成员客户端点击进入’领队位置‘页面,领队位置正常显示。
以获取到最后一次GPS的客户端时间为准,如10秒内,未收到位置信息,则客户端弹出层提示:
这里没有用常见的;‘确定’‘取消 ’或者 ‘我知道了‘
而是帮助用户选择下一步操作——当用户得知领队位置非最新的,他会有两个选择,继续查看领队位置,或者回到上一级的聊天页面。于是,我直接在button上为用户提供选择。
这次优化,进行了小范围的用户体验评审,大家都觉得很好用:)。
【结论】要多和开发GG沟通~一定要熟悉接口文档~一定要在做事之前,先花大量时间去了解背景,才能做出正确的决策。