一、使用场景
在腾讯云官网TRTC文档中心下载实时音视频(TRTC)Demo,通过开发工具Android Studio打开,修改配置
编译运行demo.
注意:两台手机同时运行 Demo,确保登录时候两个 UserID不一致。两台手机登录后分别进入视频互动直播模块,
一台手机用作主播端开启直播,另一台用作观众端观看直播。可以看到下图两个画面:
主播端:
观众端:
然后在观众端点击发出连麦请求的,下图如图:
观察主播端手机界面,发现主播端没有收到连麦请求提示,过了30秒发现客户端手机弹出连麦请求失败提醒,如下图:
二、问题排查
思考:是什么原因导致主播端没有收到连麦请求?是观众端连麦请求没有发出?还是主播端连麦请求没有收到或者收到但是没有正确处理?
解决步骤:因为观众端手机做了错误提醒,主播端没有任何反馈,所以先从观众端手机开始排查问题,如若没有,再进一步排查主播端,排查问题最直观端方法是查看控制台日志输出。
用Android studio连接观众端手机,观察日志输出,如下图:
可以发现IMSDK打印了发送端和接收端不是好友关系,错误码为20009的错误描述。由此可以得出结论,观众端和主播端没有好友关系导致连麦请求失败。
三、解决方法
因为错误是从IMSDK发出的,所以我们可以查阅IMSDK相关文档,在好友管理相关接口找到添加好友接口addfriend。
点击查看接口详细使用
为了代码逻辑的严谨,我们可以在观众端调用添加好友方法之前,先做一次观众和主播关系的检测,可以用到好友关系管理接口 checkFriend
点击查看接口详细使用
四、代码演示
1.在类TRTCLiveRoom里面添加两个抽象方法checkFollowState和followAnchor.
2.在类TRTCLiveRoomCallback添加回调方法。
3.在类TRTCLiveRoomImpl实现抽象方法checkFollowState和followAnchor.
4.在观众类TCAudienceActivity里面调用前面实现的方法。
因为笔者时间比较仓促,上面代码可以进一步优化为观众端在进入直播间时候进行检查和主播的好友关系,添加关系标志位,在后续观众进行连麦请求时候直接使用,这里就不再展示。
五、结果验证
观众端进入直播间后点击连麦,主播端收到连麦提醒
观众端:
主播端:
六、总结
在使用实时音视频和即时通信服务端时候,为了在使用上更加灵活,我们可以考虑通过源码引入SDK服务,根据
我们项目自身的需求,进行个性化修改定制,满足项目需要。