uni-app nvue中使用live-pusher在IOS中netstatus不执行
uni-app nvue中使用live-pusher在IOS中netstatus不执行
详细问题描述
(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)
[nvue中使用live-pusher 在IOS中 netstatus 不执行,start 回调不执行
Android一切正常]
重现步骤
[n步骤]
[n结果]
[期望]
netstatus 返回网络状态信息
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]
IDE运行环境说明
IDE | 版本号 |
---|---|
HBuilderX | 2.3.7 |
uni-app运行环境说明
运行端 | 版本号 |
---|---|
app |
项目创建方式 | |
---|---|
HBuilderX |
App运行环境说明
Android版本号 | iOS版本号 | 手机型号 |
---|---|---|
12.4.2 | 6p |
附件
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
netstatus:function(e) {
console.log(e);
var info = e.detail.info;
if(info.videoFPS<=15){
this.addChatMsg({
nickname:'系统',
message:'帧率太低,影响流畅度'
});
}
var bitrate = info.videoBitrate + info.audioBitrate;
if(bitrate >= info.netSpeed){
this.addChatMsg({
nickname:'系统',
message:'上行带宽不足,数据发送不及时'
});
}
}
更多关于uni-app nvue中使用live-pusher在IOS中netstatus不执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
netstatus是事件 不是方法,应该这么写:netstatus(e) {
console.log(e.detail);
var info = e.detail.message;
},
iOS的netstatus事件和安卓的netstatus时间的返回值不一样,返回的参数只有message和code
更多关于uni-app nvue中使用live-pusher在IOS中netstatus不执行的实战教程也可以访问 https://www.itying.com/category-93-b0.html
测试过了,这么写也不行,还是没有执行,statechange 事件不管怎哪种写法都会执行 netstatus 事件两种写法都没执行
Android 的测试都没问题,IOS的就没执行
回复 cabin: 你是怎么操作让netstatus 事件执行的
回复 cabin: 我是问你怎么操作,使得触发netstatus事件,比如,把手机断网,或者切换差的网络是吗?
回复 CLP: 像Android大概每2秒左右会触发一次,返回视频、网络等的相关信息,我主要是用于提示主播当前的直播是否会影响用户观看体验,比如帧率太低,网络环境不好等会造成用户观看直播时卡顿、模糊等
回复 cabin: iOS的推流库和安卓的不一样,目前iOS 的不会每2秒左右会触发一次,返回的信息也和安卓不一样。不过下一版本会优化iOS的statechange事件的返回信息
回复 CLP: 目前的IOS推流会比安卓模糊很多,用了 FHD 好像比 HD 更模糊,特别是在移动的时候会有很多小方块,这个是我哪里没设置好,还是说IOS的推流库本身就会这样
回复 CLP: 那下个版本大概什么时候会出
回复 cabin: max-bitrate和min-bitrate 这2个属性你设置了吗? 码率的属性
回复 CLP: 没有,文档上没看到这两个参数的相关说明
回复 cabin: 你设置下,其实已经支持了
回复 CLP: 设置测试了,也没什么变化,还是很模糊,netstatus事件始终没有触发,网络断开、重连也没触发,statechange事件倒是会触发执行
回复 CLP: 后来解决了吗?我使用nvue在ios也不触发statechange,netstatus,error事件,触发条件是拒绝摄像头拍照时,安卓会触发,ios不会触发。live-pusher不管有没有开启摄像头权限都会走success,有什么办法判断用户点击了拒绝呢?permission.js判断完了以后,用户才点的拒绝
关于uni-app nvue中live-pusher在iOS上netstatus不执行的问题,这是一个已知的iOS平台限制。以下是关键点说明:
- iOS平台限制:
- iOS的live-pusher组件确实存在netstatus回调不触发的情况
- start回调在iOS上也可能不会执行
- 替代方案:
- 可以使用状态监听代替:
this.livePusher = uni.createLivePusherContext('pusher')
this.livePusher.on('statechange', (res) => {
console.log('状态变化:', res)
})
- 建议处理方式:
- 对于网络状态监控,可以考虑使用uni.getNetworkType API
- 对于推流状态,通过error事件和statechange事件组合监听
- 已知版本问题:
- 在HBuilderX 2.3.7版本确实存在此问题
- 建议升级到最新稳定版测试
- 临时解决方案:
// 添加错误监听作为补充
error: function(e) {
console.log('推流错误:', e)
}