-
Notifications
You must be signed in to change notification settings - Fork 144
networkChange
shixuemei edited this page May 25, 2017
·
7 revisions
在实际播放过程中,设备网络会不可避免的发生变化,由此导致出现播放进入缓冲,播放结束等影响用户体验的现象。针对这种情况,给出以下建议,供APP开发参考。
通常的变化类型分为以下几种:
- wifi A切换到wifi B
- wifi切换到3G/4G
- 3G/4G切换到wifi,且关闭3G/4G
- 3G/4G切换到wifi,未关闭3G/4G
- 短时间断网后又重连上
-
在1、2、3这三种情况下,由于网络发生了变换,播放SDK内部拉流使用的原有连接失效,此时画面停止,如果不及时通知播放器采取重连机制,则播放SDK会一直等待读超时(具体时间可通过setTimeout配置)后上报播放结束。建议APP检测到网络发生以上情况时,立刻触发播放器立刻进行重连,提升用户体验
-
第4种情况,开始播放时使用的是3G/4G,打开wifi后,由于没有关闭3G/4G,此时播放正常,也就是在这种情况下,播放SDK依然使用的是3G/4G的网络。如果APP不希望用户由此产生高额的流量费用,建议及时触发播放器进行重连
-
第5种情况,如果断网时间小于读超时时间,播放器会自动恢复播放(前提是断网期间不可以有seek动作);如果断网时间大于读超时时间,播放器会在超时结束后上报播放结束消息。APP可根据实际业务情况进行处理
直播场景下可直接使用reload方法进行重连
在点播场景下,重连后应从切换网络前停止播放的时间点开始播放,此时建议通过一个播放实例使用点播续播功能来完成重连
v2.1.1及以上版本支持
- 探测网络连通性使用的地址networkDetectURL,默认为www.kingsoft.com。支持用户自定义,自定义的地址需为真实有效的网络地址;如果设置为nil,则表示不需要开启网络连通性的探测
@property (nonatomic, readwrite) NSString* networkDetectURL;
- 网络连通状态networkStatus。如果该值为不等于KSYNetworkStatus枚举中的任意值,则表明当前尚未监测到网络状态;或者是networkDetectURL设置为了nil
@property (nonatomic, readonly) KSYNetworkStatus networkStatus;
- 网络连通状态发送变化时发送的通知
MPMoviePlayerNetworkStatusChangeNotification
-
如果开启了网络连通性的探测,那么在断网的情况下调用prepareToPlay方法,SDK上报的错误码为KSYMPErrorNetworkUnReachable
-
如果没有开启网络连通性的探测,那么在断网情况下调用prepareToPlay方法,SDK上报的错误码为KSYMPErrorCodeDNSParseFailed