在集成GoEasy 实时音视频通话 GRTC 的过程中常见的错误与解决方案。
- 拨打失败: error: RTC unavailable. Please confirm if your GoEasy application supports RTC or contact GoEasy team.
错误原因:当前正在使用的GoEasy套餐不支持实时音视频通话
解决方案:首先确保当前使用的应用为增强型应用; 其次如果是付费应用的话,需要确保已经开通了音视频通话服务;最后,如果前面这两个条件都满足,将app进程杀掉重新打开试试,目前sdk只在建立GoEasy连接之后获取是否支持音视频通话,对于已经建立了GoEasy连接的app,如果开通了音视频通话功能是没有实时更新的,所以需要重新连接GoEasy。
- 来电响铃失败:Ring failed, [Object] {"resultCode":401,"content":"Please upgrade your application to support RTC first"
错误原因:当前正在使用的GoEasy套餐不支持实时音视频通话
解决方案:同上。首先确保当前使用的应用为增强型应用; 其次如果是付费应用的话,需要确保已经开通了音视频通话服务;最后,如果前面这两个条件都满足,将app进程杀掉重新打开试试,目前sdk只在建立GoEasy连接之后获取是否支持音视频通话,对于已经建立了GoEasy连接的app,如果开通了音视频通话功能是没有实时更新的,所以需要重新连接GoEasy。
- 拨打失败:accepte failed:, [Object] {"code":400,"content":"Execute ACCEPT failed"}
错误原因:接听方多次点击接听,也就是调用GRTC.accept()接口,导致接听方这边出现这个错误 “e, The call has already been accepted”, 当拨打方挂断时,在拨打方这边则会出现这个错误
解决方案:可以在点击接听按钮时,自己做一下判断,避免多次点击多次调用accept接口
- 拨打失败:Call failed, [Object] {"code":400,"content":"The caller:xxxxx is busy"}
错误原因:两种可能,一种是接听方由于多次执行accept接口并得到错误“accepte failed:, [Object]{"code":400,"content":"Execute ACCEPT failed"}” 的并发问题; 另一种拨打方在未结束上个通话前,拨打方又尝试发起第二个通话请求
解决方案:如果是第一种,可以在点击接听按钮时,自己做一下判断,避免多次点击多次调用accept接口,避免带来这个并发错误; 如果是第二种,可以优化前端用户提示信息,给用户友好的提醒
- 拨打失败:{"code":400,"content":"All callees are busy"}
错误原因:拨打方状态正常,但是接听方在通话中或者响铃中
解决方案:正常状态返回,可以优化前端消息提醒,比如提示 “对方正忙”
- GoEasy连接成功,但是拨打时仍然失败,报 Error: Please connect GoEasy first.
错误原因: 运行平台可能不兼容
解决方案: 目前GoEasy的音视频通话,暂时只支持uniapp编译的APP, 其它平台暂不支持,如果运行在其它平台,可能会出现该问题
- 拨打失败: Another call is in progress
错误原因: 可能是没有添加GoEasy的GRTC原生插件打包成自定义基座
解决方案: 根据开发文档添加下载GRTC的原生插件,将原生插件解压后,放到根目录下的nativeplugins
文件夹内(如没有,请自行创建),打开项目的manifest.json
文件,在App原生插件配置
栏选择本地插件
,勾选我们导入的GoEasy原生插件。 最后再打自定义基座测试
没有报错信息返回的一些“怪异”情况的排查
除了上述的一些有具体报错的原因外,我们在平时协助排查过程中还遇到了一些因为其它代码影响了GoEasy 接口执行的情况。
- 拨打方成功拨打也展示正在响铃中(打印GRTC.currentCall(), caller的状态是Dialing, callees是Ringing),但是接听方始终没有响铃
问题原因:GRTC.on(GRTC.EVENT.RING, onRing)监听器的回调函数onRing中有报错,导致监听器不工作, 比如常见的有, onRing中的页面跳转不工作,或者跳转页面有报错等
- 待更新中