更新记录
1.0.1(2026-04-30) 下载此版本
1
Changelog
1.0.0(2026-04-30) 下载此版本
- 初始市场包。
- 添加了用于阿戈拉 RTC 音视频通话的 JS 适配器。
- 添加了鸿蒙操作系统 UTS 驱动程序,并捆绑了
AgoraRtcSdk.har文件。 - 在
android/目录下添加了 Android 原生源代码桥接。 - 在
ios/目录下添加了 iOS 原生源代码桥接。 - 为保持与原生插件的兼容性,保留了
uni_modules中的原始 Android/iOS 原生插件桥接名称。 - 对
uni_modules的拆分发布流程以及原生二进制插件打包进行了文档说明。
平台兼容性
uni-app(5.0)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| × | √ | × | × | × | × | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | - | × | × |
Agora RTC JS Plus
agora-rtc-js-plus 是一个面向 uni-app 的声网 Agora RTC 音视频通话插件,支持 Android、iOS 和 HarmonyOS。插件提供 JS SDK 适配层、HarmonyOS UTS 驱动、Android/iOS 原生桥接支持,可用于语音通话、视频通话、频道加入/离开、音视频开关、摄像头切换、本地预览、远端用户事件监听等场景。
功能特性
- 创建和销毁 RTC Engine
- 加入和离开频道
- 使用 userAccount 加入频道
- 本地音频开启、关闭、静音、取消静音
- 本地视频开启、关闭、静音、取消静音
- 扬声器和听筒切换
- 前后摄像头切换
- 本地视频预览
- 远端用户加入、离线事件监听
RtcSurfaceView视频渲染组件- HarmonyOS 本地/远端视频视图绑定
- Android/iOS 原生插件桥接源码和二进制打包模板
支持平台
| 平台 | 支持情况 | 说明 |
|---|---|---|
| App Android | 支持 | 需要集成 Android 原生插件包 |
| App iOS | 支持 | 需要集成 iOS 原生插件包 |
| App HarmonyOS | 支持 | 使用插件内置 UTS/Har 驱动 |
| H5 | 不支持 | RTC 原生能力仅面向 App |
| 小程序 | 不支持 | 当前版本未提供小程序实现 |
安装方式
将插件放入 uni-app 项目的以下目录:
uni_modules/agora-rtc-js-plus
从插件市场导入时,HBuilderX 会自动放到 uni_modules/agora-rtc-js-plus。
Android/iOS 运行时还需要在项目中配置对应的 App 原生插件包。HarmonyOS 运行时使用本插件内置的 utssdk/app-harmony/libs/AgoraRtcSdk.har。
UTS 插件入口文件为:
utssdk/index.uts
HarmonyOS 平台实现位于:
utssdk/app-harmony/index.uts
导入路径
JS SDK
import RtcEngine, { getAgoraRuntimeInfo } from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus'
import RtcSurfaceView from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus/RtcSurfaceView.nvue'
import { ClientRole, ChannelProfile } from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus/common/Enums'
import { ChannelMediaOptions } from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus/common/Classes'
HarmonyOS UTS 辅助方法
import {
requestHarmonyRtcPermissions,
openHarmonyRtcPermissionSettings,
getHarmonyRtcDriverInfo
} from '@/uni_modules/agora-rtc-js-plus'
基础语音通话示例
import RtcEngine from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus'
import { ChannelProfile, ClientRole } from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus/common/Enums'
const engine = await RtcEngine.create(APP_ID)
await engine.enableAudio()
await engine.enableLocalAudio(true)
await engine.setChannelProfile(ChannelProfile.LiveBroadcasting)
await engine.setClientRole(ClientRole.Broadcaster)
await engine.joinChannelWithUserAccount(TOKEN, CHANNEL_NAME, USER_ACCOUNT)
engine.addListener('JoinChannelSuccess', (channel, uid, elapsed) => {
console.log('JoinChannelSuccess', channel, uid, elapsed)
})
engine.addListener('UserJoined', (uid, elapsed) => {
console.log('UserJoined', uid, elapsed)
})
engine.addListener('UserOffline', (uid, reason) => {
console.log('UserOffline', uid, reason)
})
参数说明:
APP_ID:声网控制台创建项目后获得的 App IDTOKEN:频道 Token,测试模式可按声网项目配置留空,生产环境建议使用服务端生成 TokenCHANNEL_NAME:频道名USER_ACCOUNT:用户账号,建议每个用户使用不同值
基础视频通话示例
<template>
<view class="page">
<RtcSurfaceView
class="remote"
:uid="remoteUid"
:channelId="channelName"
:zOrderOnTop="false"
:zOrderMediaOverlay="false"
/>
<RtcSurfaceView
class="local"
:uid="0"
:channelId="channelName"
:zOrderOnTop="true"
:zOrderMediaOverlay="true"
/>
</view>
</template>
<script setup lang="ts">
import RtcEngine from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus'
import RtcSurfaceView from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus/RtcSurfaceView.nvue'
import { ChannelProfile, ClientRole } from '@/uni_modules/agora-rtc-js-plus/js_sdk/agora-rtc-js-plus/common/Enums'
const appId = 'YOUR_AGORA_APP_ID'
const token = ''
const channelName = 'demo'
const userAccount = 'user_001'
const remoteUid = ref(0)
const engine = await RtcEngine.create(appId)
await engine.enableAudio()
await engine.enableVideo()
await engine.setChannelProfile(ChannelProfile.LiveBroadcasting)
await engine.setClientRole(ClientRole.Broadcaster)
await engine.startPreview()
engine.addListener('UserJoined', (uid) => {
remoteUid.value = uid
})
engine.addListener('UserOffline', (uid) => {
if (uid === remoteUid.value) {
remoteUid.value = 0
}
})
await engine.joinChannelWithUserAccount(token, channelName, userAccount)
</script>
<style scoped>
.page {
flex: 1;
}
.remote {
width: 750rpx;
height: 900rpx;
}
.local {
position: absolute;
right: 24rpx;
top: 24rpx;
width: 220rpx;
height: 300rpx;
}
</style>
常用控制方法
// 静音/取消静音本地麦克风
await engine.muteLocalAudioStream(true)
await engine.muteLocalAudioStream(false)
// 关闭/打开本地视频发送
await engine.muteLocalVideoStream(true)
await engine.muteLocalVideoStream(false)
// 切换前后摄像头
await engine.switchCamera()
// 切换扬声器
await engine.setEnableSpeakerphone(true)
// 离开频道
await engine.leaveChannel()
// 页面销毁时释放 Engine
await engine.destroy()
事件监听
当前版本已接入以下核心事件:
JoinChannelSuccess:本地用户成功加入频道UserJoined:远端用户加入频道UserOffline:远端用户离开或掉线LeaveChannel:本地用户离开频道Warning:SDK 警告ConnectionStateChanged:连接状态变化Error:SDK 错误
示例:
const subscriptions = [
engine.addListener('JoinChannelSuccess', (channel, uid, elapsed) => {
console.log('joined', channel, uid, elapsed)
}),
engine.addListener('Error', (err) => {
console.log('rtc error', err)
})
]
// 页面卸载时移除监听
subscriptions.forEach((item) => item.remove())
HarmonyOS 使用说明
HarmonyOS 使用插件内置的 UTS/Har 驱动。进入音视频页面前,请先申请麦克风和摄像头权限:
import { requestHarmonyRtcPermissions } from '@/uni_modules/agora-rtc-js-plus'
const granted = await requestHarmonyRtcPermissions([
'ohos.permission.MICROPHONE',
'ohos.permission.CAMERA'
])
if (!granted) {
uni.showToast({
title: '请授予麦克风和摄像头权限',
icon: 'none'
})
}
HarmonyOS 工程的 module.json5 仍需要声明权限,例如:
"requestPermissions": [
{
"name": "ohos.permission.MICROPHONE",
"reason": "$string:agora_rtc_microphone_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
},
{
"name": "ohos.permission.CAMERA",
"reason": "$string:agora_rtc_camera_reason",
"usedScene": {
"abilities": ["EntryAbility"],
"when": "inuse"
}
}
]
Android/iOS 使用说明
Android 和 iOS 使用 uni-app App 原生插件桥接。插件桥接名称保持与旧版 uni-app Agora 插件一致:
Agora-RTC-EngineModuleAgora-RTC-ChannelModuleAgora-RTC-SurfaceViewAgora-RTC-TextureViewglobalEvent
Android/iOS 原生插件包位于:
nativeplugin-package/agora-rtc-nativeplugin
该目录已经包含:
package.jsonandroid/agora-rtc-nativeplugin-release.aarios/AgoraRtcUniPlugin.framework- iOS 依赖的多个 Agora
.xcframework
在 DCloud 插件市场中,Agora-RTC 原生插件包需要作为 App 原生插件单独上传或配置。
Android/iOS 桥接范围
当前 Android/iOS 桥接覆盖本插件示例和常见音视频通话所需的核心能力:
createdestroygetSdkVersiongetErrorDescriptionsetChannelProfilesetClientRolejoinChanneljoinChannelWithUserAccountleaveChannelenableAudiodisableAudioenableLocalAudiomuteLocalAudioStreamenableVideodisableVideoenableLocalVideomuteLocalVideoStreamsetDefaultMuteAllRemoteVideoStreamsmuteAllRemoteVideoStreamsstartPreviewstopPreviewswitchCamerasetDefaultAudioRoutetoSpeakerphonesetEnableSpeakerphone
RtcChannel 在当前版本中保留为兼容占位,暂未提供完整多频道实现。
原生依赖版本
当前原生桥接目标版本为 Agora Native SDK 3.7.3.4:
- Android:
io.agora.rtc:agora-special-full:3.7.3.4 - iOS:
AgoraRtcEngine_Special_iOS 3.7.3.4
该版本用于保持与旧版 uni-app Agora 原生桥接风格兼容。
示例工程
本仓库提供了示例工程:
examples/agora-rtc-demo
打包发布后,也会生成可直接上传到插件市场的示例工程:
dist/agora-rtc-js-plus-1.0.0-demo-project.zip
示例工程包含:
- App ID / Token / 频道名 / 用户账号输入
- 加入频道、离开频道
- 麦克风开关
- 摄像头开关
- 摄像头切换
- 扬声器/听筒切换
- 本地和远端视频渲染
- SDK 事件日志
发布和打包
生成插件市场上传包:
powershell -ExecutionPolicy Bypass -File .\scripts\package-marketplace.ps1
生成文件位于:
dist/agora-rtc-js-plus-1.0.0-uni_modules.zip
dist/agora-rtc-js-plus-1.0.0-demo-project.zip
dist/Agora-RTC-3.7.3.4.zip
dist/hbuilderx-publish-project
注意:agora-rtc-js-plus-1.0.0-uni_modules.zip 的 zip 根目录会直接包含 package.json、utssdk、js_sdk 等文件和目录,避免插件市场提示“插件根目录需要存在 utssdk 目录”。
上架前检查
- 从干净 uni-app 项目导入插件后,导入路径可正常解析
- HarmonyOS 构建可以识别内置
AgoraRtcSdk.har - Android 原生插件包包含
Agora-RTC-EngineModule、Agora-RTC-ChannelModule、Agora-RTC-SurfaceView、Agora-RTC-TextureView - iOS 原生插件包包含
Agora-RTC-EngineModule、Agora-RTC-ChannelModule、Agora-RTC-SurfaceView、Agora-RTC-TextureView - Android/iOS 项目已配置对应 App 原生插件
- 两台真机加入同一频道后,可以完成语音通话
- 两台真机加入同一频道后,可以看到本地和远端视频
常见问题
插件市场提示“插件根目录需要存在 utssdk 目录”
请确认上传的是 dist/agora-rtc-js-plus-1.0.0-uni_modules.zip,并且 zip 第一层直接包含:
package.json
utssdk/
js_sdk/
不要上传外面再套一层目录的 zip。
示例工程的 manifest.json 无法解析
请使用 dist/agora-rtc-js-plus-1.0.0-demo-project.zip 或 dist/hbuilderx-publish-project。示例工程的 manifest.json 已按标准 JSON 格式生成。
Android/iOS 无法找到原生插件
请确认已经配置并上传/绑定 Agora-RTC App 原生插件包。Android/iOS 不是只依赖 JS 文件即可运行,仍需要原生插件桥接。
生产环境是否可以留空 Token
不建议。测试模式可以根据声网项目配置临时留空,生产环境建议由业务服务端签发 Token。

收藏人数:
下载插件并导入HBuilderX
下载示例项目ZIP
赞赏(0)
下载 3
赞赏 0
下载 11757816
赞赏 1911
赞赏
京公网安备:11010802035340号