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

17 回复

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事件倒是会触发执行

回复 cabin: 你能提供下推拉流地址测试下吗

回复 CLP: 推流拉流地址私信给你了,有效期到30号

回复 CLP: 后来解决了吗?我使用nvue在ios也不触发statechange,netstatus,error事件,触发条件是拒绝摄像头拍照时,安卓会触发,ios不会触发。live-pusher不管有没有开启摄像头权限都会走success,有什么办法判断用户点击了拒绝呢?permission.js判断完了以后,用户才点的拒绝

关于uni-app nvue中live-pusher在iOS上netstatus不执行的问题,这是一个已知的iOS平台限制。以下是关键点说明:

  1. iOS平台限制:
  • iOS的live-pusher组件确实存在netstatus回调不触发的情况
  • start回调在iOS上也可能不会执行
  1. 替代方案:
  • 可以使用状态监听代替:
this.livePusher = uni.createLivePusherContext('pusher')
this.livePusher.on('statechange', (res) => {
  console.log('状态变化:', res)
})
  1. 建议处理方式:
  • 对于网络状态监控,可以考虑使用uni.getNetworkType API
  • 对于推流状态,通过error事件和statechange事件组合监听
  1. 已知版本问题:
  • 在HBuilderX 2.3.7版本确实存在此问题
  • 建议升级到最新稳定版测试
  1. 临时解决方案:
// 添加错误监听作为补充
error: function(e) {
  console.log('推流错误:', e)
}
回到顶部