uni-app 接入腾讯云实时音视频必须使用原生插件(如tencentcloud-tuiroomengine),不可依赖纯JS SDK;否则真机将黑屏、无声、进房失败,因TRTC JS SDK仅支持Web环境,不兼容App端WebView+原生容器架构。

直接上结论:uni-app 接入腾讯云实时音视频,**不能靠纯前端 JS SDK 实现真机音视频通话**,必须走原生插件路线;否则在 iOS/Android 真机上会黑屏、无声、进房失败,或提示 TRTCErrorNotSupported。
为什么 TrtcCloud.createInstance() 在真机上不工作
TRTC 官方 JS SDK 仅支持 Web 浏览器环境(如 H5),不支持 uni-app 的 App 或小程序端运行时。uni-app 的 App 端使用的是 WebView + 原生容器混合架构,摄像头/麦克风权限、编解码、推流等能力必须由原生层提供。
常见错误现象:
- 调用
trtcCloud.enterRoom()后无响应,控制台静默 - 本地预览
startLocalPreview()显示空白 div,viewId元素存在但无画面 - Android 真机报错
java.lang.ClassNotFoundException: com.tencent.trtc.TRTCCloud - iOS 真机闪退,Xcode 控制台提示
Missing required capability: camera
根本原因:你没接入 tencentcloud-tuiroomengine 原生插件,也没制作自定义调试基座。
必须完成的三步原生准备
跳过任意一步,真机必挂:
腾讯云跨账号资源迁移工具,支持将账号A的VPC、CLB、NAT、CVM、安全组等资源迁移至账号B,通过CCN云联网实现跨账号网络互通,提供自动扫描、配置生成、Terraform部署功能。
- 在
manifest.json → App原生插件配置 → 选择云端插件中,勾选已购买的tencentcloud-tuiroomengine插件(注意:需用正确appid购买,且绑定包名) - 用 HBuilderX 制作「自定义调试基座」:菜单栏 → 发行 → 原生App-制作自定义调试基座 → 选择「传统打包方式」(不能选「uts 插件方式」,后者在 HBuilderX 4.64+ 存在兼容问题)
- 真机运行时,必须使用该自定义基座启动,而非默认基座;H5 和微信开发者工具里一切正常,是假象
补充提醒:tuiroomkit 是 UI 框架,tuiroomengine 才是底层音视频引擎——两者缺一不可,但插件市场只卖后者。
basic-info-config.js 里填错 sdkAppId 或 userSig 的后果
这两个值不是随便写字符串就能过,它们决定能否进房、是否被服务端拒绝:
-
sdkAppId必须是腾讯云 TRTC 控制台创建应用后分配的数字 ID(如1400XXXXXX),填错直接报TRTCErrorInvalidParameter -
userSig必须由服务端生成,有效期建议设为 24 小时;前端硬编码临时 sig(比如用 demo 里带的测试 sig)最多撑 2 小时,超时后所有用户进房失败,错误信息为TRTCErrorAuthFailed -
roomId类型必须是number,传字符串(如"12345")会导致进房卡住,无报错但无回调
验证方法:把 userSig 拿到腾讯云官网的 UserSig 解析工具 里粘贴,看是否能正确解析出 sdkAppId 和 userId。
微信小程序端额外踩坑点
小程序不是“换个平台跑就行”,有强限制:
- 必须是企业类小程序,个人号无法开通
live-pusher/live-player权限,调用即报permission denied - 微信开发者工具完全不可用——
<live-pusher>标签在模拟器里不渲染,也不触发任何生命周期,必须真机扫码调试 - 基础库版本不能低于
2.10.0,iOS 微信客户端不能低于8.0.40,否则bindstatechange等事件不触发 - 域名必须在小程序后台显式配置:
https://qcloud.trtc.io和https://cloud.tencent.com加入 request 合法域名
最容易被忽略的是:小程序里 enterRoom 的 scene 参数不能传 TRTCAppSceneVideoCall,得用 TRTCAppSceneLIVE(小程序推流模式固定为直播场景)。

















