背景:
当网络不稳定或者服务端接口不稳定时, APP 发起业务接口请求数据, APP 端 会提示出底层的异常错误信息展示到界面上,对用户来说不太友好.
前因后果
1 一开始, APP 端对所有的 网络异常信息都统一 做 过滤和转义 , 输出了用户看得懂的异常提示文案.
2 后面,服务端人员说, 不要写死错误异常提示文案,根据后端输出的异常是什么,就展示什么..... (方便后端诊断问题)
3. 所以那么问题来了,一旦APP 端全量 放开所有的网络错误转义,就会导致 网络链路上的所有异常错误都原文展示出来 (就是用户看不懂的底层错误信息)
比如下面的网络异常提示:
因此: APP 端需要 做一个网络异常的捕获机制方案, 区分对待 不同链路的异常提示.
完整的网络请求 需要经过的网络链路:
APP端 (物理层) —> 链路层 —> 网络层 —>传输层 —>会话层(网关层) —> 服务端应用层(超时等)
网络层面的异常的原因有很多:
比如,用户自身手机信号不好,
手机飞行模式,
网络流量欠费,
或者WIFI 信号差,
还有就是 WIFI 连上了,但是外部网络中断等,
甚至是 网关层拦截,或者认证失败等,这些都不是服务端能够控制输出的
所以: 网络链路上中间出现的异常信息,是不受 服务端控制的, 需要APP 端接收之后在做转义输出
因此具体 方案如下:
所以: 最终实现的网络异常 转义提示 效果如下:
(全局网络异常 统一转义 提示: 网络异常哦,请检查网络,或者稍后重试)