移动端应用在现场使用时,信号时好时坏是常态。地下室、厂区深处、偏远地区、电梯里,这些地方都可能没有网络。如果应用没网就完全用不了,现场工作只能退回纸质。
离线支持不是全有或全无,是能做到什么程度的问题。
一、哪些场景值得做
现场采集类的场景最值得。比如巡检记录、设备点检、现场执法、货物清点。这类工作本身就是人在现场做,网络条件不受控。
网络本来就稳定的办公场景,做离线支持意义不大,投入和收益不成比例。
判断标准可以这样定,如果用户因为没网而无法完成一项必须现场完成的动作,那这个动作就值得支持离线。如果用户可以走到有信号的地方再做,那就不必。
二、离线时能做什么
基础数据要能提前下载。用户今天要去的地方、要检查的设备清单、要填写的表格模板,在有网的时候先存到本地。这样现场没网也能打开。
录入操作要能离线进行。用户填的内容先存在本地,界面正常反馈,用户感觉不到跟在线有什么差别。
有些功能离线确实做不了。比如实时查询别人的数据、提交后立刻要审批结果、需要联网校验的业务。这些要么明确告知用户暂时不可用,要么调整业务流程,让它不依赖实时结果。
照片和文件要能离线暂存。现场拍的照片先存本地,有网了再上传。这类数据量大,要做好本地的空间管理,避免占满手机存储。
三、数据怎么同步回来
核心是自动重试。用户不需要知道什么时候有网了,系统自己在合适的时机把本地数据传上去。可以在应用启动时、切换到前台时、检测到网络恢复时尝试。
上传要有状态提示。用户能看到哪些数据还没传上去,心里有数。如果他以为已经传了,实际没有,中间的记录就丢了。
上传要能区分成功失败。网络断在传输中间的情况,要能判断是没传上去还是传上去了没收到确认,避免重复提交。做法是给每条数据一个唯一标识,服务端按标识去重。
四、冲突怎么处理
同一条数据被两个人离线修改,之后都传上来,这就产生了冲突。
最常见的处理是先到的生效、后到的提示冲突。提示的时候要让用户看到两份内容的差别,由人决定保留哪个。系统自动合并容易出错,涉及业务数据的合并尤其要谨慎。
更好的办法是让冲突少发生。设计上尽量避免多人同时修改同一条数据。比如按区域或者按设备分配给不同的人,各自负责的范围不重叠。
还有一种做法是加时间戳或者版本号。提交时带上本地记录的版本,服务端发现版本不一致就拒绝,让用户重新拉取最新数据再操作。这个机制能防止用旧数据覆盖新数据。
上一篇业务系统的操作留痕与审计
下一篇数据大屏从需求到落地
