用户通过交互和产品对话,好的交互非常重要。“错误提醒”在产品交互中也是非常重要的一部分,所以某些情况下 app 的错误提醒不能只依赖框架的回调。
如果错误提醒只依赖框架回调,在 normandie 中有一个设计会影响到错误提醒的交互。这个机制在底层拉取数据某些指定报错后 (不是普通的重试,普通重试是没有数据返回但不报错),且缓存中还有数据时,会去重试拉取数据,目的是防止网络非常不稳定的情况造成的播放断开。如果重试拉取数据持续报错就会将错误报告附加在缓存数据的末尾,待缓存数据消耗到末尾,错误被上报。这里的问题是,这个错误上报会有延迟,延迟的时间就是缓存数据播放的时间。
在一些场景下需要 app 干预提早报告。比如同时开着 wifi 和 4g,播放,然后断开 wifi。这种情况下,播放当时选择的数据链路是 wifi(系统里 wifi 优先),虽然有 4g alive 但是播放仍然会断掉,但是因为框架的重试机制报错会延迟通知到用户。所以这里 app 要干预,监听到 wifi 断开,有所提示,并为用户做好在 4g 下重新发起播放的准备。