本文主要介绍如何将 anyRTC uni-app 音视频 Demo 集成到你的项目中以及相关注意事项。
开发环境要求
- 下载最新版本 HBuilderX
- 下载示例 Demo 的压缩包。
- 一个有效的 开发者账号。
快速集成
本小节介绍如何获取 AppID 以及如何快速将 SDK 集成到项目中。
获取 AppID
参考以下步骤获取一个 AppID。若已经拥有 AppID,请跳过当前步骤,直接查看快速集成。
导入 SDK
请参考 一分钟跑通 Demo
操作流程
本节内容主要介绍如何实现 uni-app 音视频通话,提供相关示例代码。
初始化
在创建实例前,请确保你已完成环境准备,安装包获取等步骤。
创建实例需要填入准备好的 App ID
, 只有 App ID
相同的应用才能互通。
//callback 接收
callbackFn() {
RtcModule.setCallBack((res) => {
switch (res.engineEvent) {
case "onWarning": //警告回调
break;
case "onError": //错误回调
break;
case "onJoinChannelSuccess": //用户加入成功
break;
case "onLeaveChannel": //离开频道回调
break;
case "onUserJoined": //远端用户加入当前频道回调。
break;
case "onUserOffline": //远端用户离开当前频道回调。
break;
case "onFirstLocalAudioFrame": //已发送本地音频首帧的回调。(页面上添加音频)
break;
case "onFirstLocalVideoFrame": //已显示本地视频首帧的回调。(页面添加本地视频)
// this.promptFn("error", "已显示本地视频首帧的回调");
break;
case "onFirstRemoteVideoDecoded": //已完成远端视频首帧解码回调。(页面添加远端视频)
break;
}
})
},
// 初始化
init() {
if (uni.getSystemInfoSync().platform === 'android') {
//查看相机权限
await this.requestAndroidPermission("android.permission.CAMERA", 'android');
//查看录音权限
await this.requestAndroidPermission("android.permission.RECORD_AUDIO", 'android');
}
await RtcModule.create({
//anyRTC 为 App 开发者签发的 App ID。
"appId": "YOUR APP ID"
}, (res) => {
});
}
在 YOUR APP ID
填入你申请的 APP ID 才能通信。
加入频道
完成初始化后,你就可以调用 joinChannel
方法加入频道。你需要在该方法中传入如下参数:
-
token:传入能标识用户角色和权限的 Token。可设为如下一个值:
-
临时 Token。临时 Token 服务有效期为 15小时、24 小时、3天、15天不等。你可以在控制台里生成一个临时 Token。
-
在你的服务器端生成的 Token。在安全要求高的场景下,我们推荐你使用此种方式生成的 Token,详见生成 Token。
-
若项目已启用 权限密钥,请使用 Token,请勿将
token
设为 ""。
-
-
channelName:传入能标识频道的频道 ID。App ID 相同、频道 ID 相同的用户会进入同一个频道。
-
uid: 本地用户的 ID。数据类型为整型,且频道内每个用户的 uid 必须是唯一的。若将 uid 设为 0,则 SDK 会自动分配一个 uid,并在
onJoinChannelSuccess
回调中报告。
用户成功加入频道后,会默认订阅频道内其他所有用户的音频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
更多的参数设置注意事项请参考 joinChannel 接口中的参数描述。
//加入频道 跳转到视频
join() {
//加入房间
await RtcModule.joinChannel({
"token": "",
"channelId": this.channel,
"uid": this.uid
}, (res) => {})
},
离开频道
根据场景需要,如结束通话、关闭 App 或 App 切换至后台时,调用 leaveChannel 离开当前通话频道。
// 挂断 离开
phoneFn() {
//离开频道
RtcModule.leaveChannel((res) => {})
},
开发注意事项
创建实例之前,需要先进行 setCallBack 初始化回调,然后才进行创建实例 create 方法。