腾讯云<trtc-room>小程序组件踩坑记
前言<trtc-room>是基于 <live-pusher> 和 <live-player> 实现的用于 TRTC 互通的自定义组件,集成该组件后的小程序可拥有实时音视频和直播互动等功能。最近盘古项目有需要小程序完成音视频咨询通话的需求,故先简单尝新了一下。然而这个组件刚面世不久,文档的内容比较欠缺、不太完善,就连疑难解答也是少得可怜,甚至基本上看不到有比较完整
前言
<trtc-room> 是基于 <live-pusher> 和 <live-player> 实现的用于 TRTC 互通的自定义组件,集成该组件后的小程序可拥有实时音视频和直播互动等功能。
最近盘古项目有需要小程序完成音视频咨询通话的需求,故先简单尝新了一下。
然而这个组件刚面世不久,文档的内容比较欠缺、不太完善,就连疑难解答也是少得可怜,甚至基本上看不到有比较完整的官方解答...
下面将简单介绍本人在此次开发过程中所踩过的坑,版本基于TRTC SDK 7.3。
正文
第一记
roomID必须为Number
请确保在调用进房逻辑的时候,roomID一定要为Number类型,否则无法成功进房。
需要注意的是,如果是通过query带参(即路由跳转)的话,请一定要把从query解构出来的ID数值化,以确保roomID的数据类型是正确的。
简单做一下处理即可:
this.trtcComponent.enterRoom({ roomID: Number(params.roomID) })
第二记
userID 不能包含中文字符
先来说说如果使用了含有中文字符的ID作为userID会发生什么。
如果userID中含有中文字符,虽然进房是成功的,但是状态却一直处于等待中。打开调试面板,查看控制台输出会发现,推流和拉流都没有被触发。
将userID更换为非中文字符后,一切便都正常了。后面经过多次测试发现,该问题仅现于iOS端。
为什么userID不能包含中文字符?
我认为原因可能是:
iOS端在传递含有中文的userID给SDK的时候,做了某种微妙的处理(比如编码), 从而使得当前的userID与腾讯云服务器校验成功后返回的userID不一致,故SDK无法将两端建立连接,也就没有推拉流可言了。
p.s. 这个问题是由盘古项目遗留的不规范“旧账”所导致的,其实大多数情况下都可以避免,因为一个标准的ID一般都是符合标准的Sequence Type,而不会参杂non-ascii字符,以中文为例的编码字符作为ID显然不太符合规范。
更多推荐
所有评论(0)