开发中遇到问题及解决建议

一、弱网下下载压缩资源包和播放音频的问题

1.资源包下载问题:之前绘本出现过一个问题,就是用户明明下载完成了一本绘本,点击去后发现图片和音频资源却是没有的。

复现过程:用Charles搭建弱网环境,并打断点调试,发现请求过程并无异常,没有出现请求过程中的错误,正确的走了下载完成的回调方法,并且没有出现错误码

下载完成的回调方法

然后发现下载完成后还有个解压的操作,发现数据解压失败了,只是之前没有加入解压是否成功的判断

结论:无论是下载库的原因还是其他得原因,成功的走了下载完成可能并不代表资源下载成功,最好加一个判断,以确认资源没有损坏,特别是压缩包

2.弱网下AVPlayer音频播放问题:之前在单词、随堂测等播放在线音频的时候,群里不少反馈说点击播放没有声音,具体过程是点击播放按钮后出现加载动画,然后加载动画很快就消失了,就是播放不出声音,也没有播放失败的提示

复现过程:搭建弱网环境,发现音频是可以播放的,只不过要等一会儿,而用户比较着急,当时的播放按钮没有做是否是同一个资源链接的判断,所以用户每次点击都是重新开始加载,但问题是加载动画为何在没有播放出声音前就消失了,后来发现是状态监控的一个问题,就是AVPlayer在哪个状态下才算真正开始播放音频,一般都认为是在AVPlayerStatusReadyToPlay这个状态时开始播放,所以在这个时候做了开始播放的回调或通知,但在网络比较弱的时候这样是不准确的,还需要做其他的处理

AVPlayerStatusReadyToPlay

结论:其实AVPlayer在AVPlayerStatusReadyToPlay这个状态的时候的确开始了播放,这个状态也确实是开始播放的状态,之所以在网络不好的情况下进入这个状态的时候不能播放出声音是因为缓冲不足而暂停了播放,之后就是一直在加载,直到缓冲达到能够播放的状态才能继续播放

image.png

而网络环境好的情况下一个几分钟的音频完全缓冲完毕基本也就是2、3秒的事,咱们的音频一般都是十几秒,基本很快就加载完了,所以不会出现上述的问题,但在弱网下最好做下如下处理

image.png

监听缓冲状态(监听loadedTimeRanges属性,AVPlayerItemPlaybackStalledNotification无效),缓冲中判断一下是否达到了播放状态
如果达到了就播放,并通知开始播放
如果达不到就继续回调或通知外部执行加载状态

关于AVPlayer的疑问
1.有些服务器获取不到资源时长
2.如果音频还没有缓冲完毕,此时断网重连,会走播放完成的通知,但此时音频并没有播放结束

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2017年5月2日刚刚读完上面这本书有一些干货分享给大家。 1.买房贷款 等额本金方式优于等额本息还款 2.cpa...
    花朵小恬阅读 3,276评论 9 3
  • 干锅菜因干香味浓而广受好评,而且因其香味浓郁,材料入味而让我们只吃一口不过瘾。但是干锅菜平时我们一般只是在外面的餐...
    每周微课阅读 1,252评论 0 1
  • 2018年伊始,我成功完成了生命中的又一个第一次——两天一夜广汉研学活动。 第一次没有爸妈、朋友...
    萌萌_Doris阅读 5,718评论 1 1
  • 又想起雪花落下那刹那 仿佛见我一点点长大 想学剪窗花 却剪成了废纸吧 凌乱了最美好的年华 还没有心思就变傻 迷恋那...
    淡雅的小书生阅读 1,693评论 0 6

友情链接更多精彩内容