「Agora 小程序 SDK」FAQ 大汇总

小程序 常见FAQ


更多 Agora 小程序 SDK 相关链接:

Agora 小程序 官网FAQ
Agora GitHub 链接1: 可下载demo
Agora GitHub 链接2: 可下载demo
Agora GitHub 社区


论坛内常见FAQ相关链接:

RTC 常见FAQ:论坛链接
RTM 常见FAQ:论坛链接
Web 常见FAQ:论坛链接
小知识 常见FAQ:论坛链接
云端录制 常见FAQ:论坛链接
本地录制 常见FAQ:论坛链接
灵动课堂 常见FAQ:论坛链接
Vue 常见FAQ:论坛链接


点击问题展开答案


Q1. 小程序编译阶段出现错误?

集成小程序SDK或者使用demo时,在编译阶段出现各式各样的报错,例如:

  • 【appservice生成错误】
  • 控制台提示mini-app-sdk-production.js TypeError: Function(…) is not a function
  • Error: module “utils/lib/rtm.miniapp.js” is not defined
  • agora-rtm-miniapp-1.1.0.js: Unexpected token

该类型错误都可以通过开启增强编译模式尝试解决


Q2. 集成小程序 SDK 时,如何打开和保存日志?

调用如下 API 实现保存和打开日志:

  • 保存日志:
AgoraMiniappSDK.LOG.onlog = (text) => {
Utils.log(text);
};
  • 打开日志:
    AgoraMiniappSDK.LOG.setLogLevel(-1) ;

Q3. 推流/拉流处理

推流/拉流处理可以参考或直接使用 GitHub 上开源代码


Q4. 退后台处理

可以通过设置小程序的 live-pusher 组件中的 waiting-image 属性来处理。设置后,推流端退到后台时,可以推送静态图片来维持推流,其他端会收到本端预设的 waiting-image 图片来代替视频流。 除非通过一些方式 (例如后台播放背景音乐),小程序会在某些场景下断开 websocket 或者 rtmp 连接,例如点击右上角按钮将程序退到后台。这种情况下,若回到前台后收到 error code 904 或 501,则应使用 SDK 进行重连,具体方法请参考 重新加入频道 rejoin 中的描述。


Q5. 闪退

这个问题可能是因为启用了其它 Websocket,但没有开启验证 Https 引起的。如需启用其它的 Websocket,请查看 本地设置 ,不要勾选“不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”。


Q6. 只启用小程序的音频功能,不需要发送视频,应该如何设置?

直接使用微信小程序的接口处理即可。在小程序的 live-pusher 组件中,通过设置 enable-camera 来实现开启/关闭摄像头。详见 小程序 live-pusher 组件文档


Q7. 小程序和 Native 互通有问题?

频道中有小程序 SDK 和 Native SDK 时,可以选择如下一种方式实现互通:

  • Native 端在直播模式下,将用户角色设置为 AgoraClientRoleBroadcaster = 1:主播,实现互通
  • Native 端在直播模式下,不设置用户角色为主播,也可以接收到小程序端的流,实现互通

Q8. 小程序和 Native 互通时,Native 端视频画面为什么上下颠倒?

该问题可能是由于 Native SDK 中的 setVideoEncoderConfiguration 设置的方向模式 orientationModeORIENTATION_MODE.ORIENTATION_MODE_ADAPTIVE 导致的。解决方法是,将方向模式改成 ORIENTATION_MODE.ORIENTATION_MODE_FIXED_PORTRAIT 就可以解决问题。


Q9. 小程序和 Web 互通时,Web 端可以看到小程序的视频,但小程序看不到 Web 端的视频?

Web 与小程序互通时,Web 端只支持 H264 模式的编码,不支持 VP8。将 Web SDK 的 index.html 文件修改为如下设置即可:
client = AgoraRtc.createClient({mode: "live", codec: "h264"})


Q10. 小程序的 live-pusher 组件里的 src 应该写什么?

客户端调用 client.publish 方法后,会回调一个以 rtmp 开头的临时地址,这个地址就分别是 live-player 和 live-pusher 组件中的 rtmp 播放地址 和 rtmp 推流地址。


Q11. 出现客户端初始化失败之后,该如何做?

通常,客户端初始化失败,会伴随着错误码 901 或 903,处理方法如下:

  • 901:出现错误码 901 绝大部分原因是没开小程序的服务权限,或没有配置域名,或 uid 参数格式不正确(uid 必须为整型)。请参考快速开始中的开发环境要求完成设置后再尝试;
  • 903:这个错误通常是网络原因引起的;也可能是因为鉴权失败,如没有填 Token,或 Token 无效导致的。请检查并填入有效的 Token 进行尝试。

Q12. 出现错误码

Agora Miniapp SDK for WeChat 在调用 API 或运行时,可能会返回一个错误码对象,也可能会返回一个错误码。详细可以参考 错误码和警告码 进行排查。


Q13. 微信小程序可以在 WebView 网页中调用 Agora Web SDK 的接口吗?

微信小程序目前不支持在 WebView 网页中调用 Agora Web SDK 的接口。

要在微信小程序中快速实现实时音视频功能,你可以在小程序项目中集成 Agora 微信小程序 SDK。详见集成微信小程序 SDK


Q14. 在某些社交娱乐场景中,小程序会需要播放背景音乐,Agora 微信小程序 SDK 是否支持播放背景音乐?

微信小程序的背景音频需要用微信小程序的原生 API 来集成实现,Agora 微信小程序 SDK 无法建立音频播放器。

你可以通过 wx.getBackgroundAudioManager() 接口获取全局唯一的背景音频管理器,并调用 BackgroundAudioManager 类提供的接口来管理背景音频。


Q15. 小程序编译报错 TypeError: Function(...)is not a function

你可以尝试在微信开发者工具中开启增强编译


Q16. 小程序页面一直显示“加载中”

请确认有正确完成以下步骤:
1、请确保你的微信小程序基础库支持 live-pusher 及 live-player 组件,且这两个组件在微信开发者工具中打开。只有特定行业的认证企业账号才可使用这两个组件。详情请参考:https://developers.weixin.qq.com/miniprogram/dev/component/live-player.html

2、请在 微信开发者工具 中查看,是否有开启音视频功能?

3、在微信公众平台账号的开发设置中,给予以下域名请求权限:
https://miniapp.agoraio.cn
https://miniapp-1.agoraio.cn
https://miniapp-2.agoraio.cn
https://miniapp-3.agoraio.cn
https://miniapp-4.agoraio.cn
https://uni-webcollector.agora.io
wss://miniapp.agoraio.cn


Q17. 小程序 SDK 可以检测到谁在说话吗?

小程序因端上受限于小程序音视频组件,故目前还不支持该功能。


Q18. 如何在频道内切换角色?观众如何上麦?
  • v2.3.2 之前:不支持在频道内直接切换角色,需要 leave --> destroy --> new client --> setrole --> join or rejoin(如果想保留现有的 UI 情况,切换角色后可以用 rejoin 再加入)
  • v2.3.2 之后,可以直接在频道中切换角色。观众切主播,setRole --> publish ;主播切观众,unpublish --> setRole。建议参考我们 demo 的 API 调用时序。

Q19. 小程序端作为观众不发流的处理方法

增加角色判断,如果是观众就不用执行 meeting.js 里的 publish 方法。


Q20. 如果小程序断线重连,SDK 会有重连的机制吗?
  • sdk 不会自动重连,需要用户自己重连。
  • 如果调用 join 重连,频道里的所有其他用户都会重新触发 stream-added 回调;如果调用 rejoin 重连,并附上断线前频道内的 Uid 列表,就只有断线期间加入频道的用户的 stream-added 回调。可以参考我们的 demo

Q21. 小程序支持大小流模式吗?

目前不行,如果频道内有大小流的用户,小程序默认就是拉大流。


Q22. 小程序配置域名的方法:

开发工具里面:设置-》开发设置-》域名信息: