前言

<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显然不太符合规范。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐