快速入门音频通话

最近更新时间:2022-09-20 05:17:40

本文主要介绍如何将 anyRTC uni-app 音视频 Demo 集成到你的项目中以及相关注意事项。

开发环境要求

  • 下载最新版本 HBuilderX
  • 下载示例 Demo 的压缩包。
  • 一个有效的 开发者账号

快速集成

本小节介绍如何获取 AppID 以及如何快速将 SDK 集成到项目中。

获取 AppID

参考以下步骤获取一个 AppID。若已经拥有 AppID,请跳过当前步骤,直接查看快速集成

  • 1. 创建项目

    首先我们需要在开发者控制台创建一个「项目」

  • 2. 获取 APP ID

    获取项目的「APP ID」

导入 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 方法。