前言
最近使用了一下腾讯云的实时音视频trtc小程序端sdk,测试过程中发现了一些安卓和ios端的不同表现,大多是因为系统问题和sdk底层导致的表现不一致的问题,通过阅读代码和查看GitHub上的issue大概解决,整理记录了一下。
以下表现皆以微信最新版本为准,不同微信版本和公共库版本可能有不同的表现(很坑……),建议更新到最新微信版本,一些比较旧的iOS系统还有可能会出现不兼容的问题
点击右上小圆点
iOS端:远端会收到本地(点小圆点)用户的退房通知。
点击小圆点后触发5000挂起事件,代码中并没有退房,底层sdk处理退房,返回前台后自动进房。
Android端:本地最小化为浮窗,用户仍在房内,音频保持采集发布,视频停止采集和发布,远端看到本地用户画面黑屏。
点击小圆点触发onHide事件,sdk底层停止视频采集,如果关闭悬浮窗则会触发5001事件,小程序底层会退房,恢复需重新进房,trtc组件已经做好了重新进房的逻辑。
点击home键/点击锁屏
这两种情况下表现相同,以点击home键为例
iOS端:
本地可接收远端音频,一定时间内(约36s),远端仍在订阅本地用户的stream,不接收该用户音频,画面定格在用户点击home键时刻的画面。
点击home键触发onHide事件,本地停止推音频流,远端收到REMOTE_AUDIO_REMOVE,sdk底层停止采集视频流,画面定格。一定时间后本地停止推视频流,远端收到REMOTE_VIDEO_REMOVE。音视频均停止推流。
点击home键后,画面定格
一定时间后
、
Android端:本地点击home键后,本地可接收音频,远端继续订阅该用户的流,可接受该用户音频,画面黑屏。
原理是点击home键触发onHide事件,本地音视频推流仍在继续,sdk底层停止视频采集。
取消发布音/视频流
同时取消发布音频和视频流触发退房,远端收到退房通知。
iOS端:本地显示该用户画面为黑屏
本地
远端
Android端:本地显示该用户画面为用户取消发布视频流最后的画面
本地
小窗模式(不建议使用)
另外我还测试了一下live-player里新增的小窗模式(画中画),iOS端问题比较大,影响使用
在live-player标签中添加picture-in-picture-mode属性实现小窗模式
iOS端:小窗模式下会黑屏,触发5000挂起,onHide事件,远端退房,点进小窗无法重新进房,需要退出小程序重新进入。
向右滑动时可以看到小窗,远端画面显示决定小窗横竖屏
小窗黑屏,显示调试参数(调试模式下)
触发5000,hide,无法点击小窗重新进房
远端显示该用户退房
Android端:
小窗不会触发退房,本地显示远端用户画面
远端画面黑屏
需要注意的是频繁切换小窗模式(大概来回切换四五次)可能会导致灰屏或者无法再次进入房间以及闪退等问题,需要退出小程序重新进入
其他问题
1.iPhone11等高版本的iPhone机型全屏模式中向下滑动会出现黑屏,这个应该是小程序那边的问题,用iPhone6就不会出现这种情况
2.一些较低版本的iOS系统无法正常显示多人会议界面,建议升级微信版本和系统版本
3.小程序暂不支持本地音量变更,只能接收到远端音量变更