快速实现音视频通话

更新时间: 2024/05/09 14:54:00

IM uni-app Demo 是基于网易云信 NIM SDK 的一款 uniapp Demo,它提供了一些通用的功能,包含会话、聊天、群组等,您可以基于源码搭建自己的 IM 业务逻辑。

自 V1.5.0 起,uni-app Demo 引入呼叫组件,您可以在 Demo 中集成呼叫组件,实现音视频通话能力。

本文主要介绍如何在 uni-app Demo 中快速实现音视频通话。

平台支持

当前 IM uni-app Demo 仅支持 Android、iOS、H5、和微信小程序。

前提条件

在引入呼叫组件之前,请确保:

  • 在云信控制台创建的应用(AppKey)已开通音视频功能。若未开通,请参考开通音视频能力进行开通。

  • 在云信控制台创建的应用(AppKey)已设置多端登录。若未开通,请参考配置多端登录

  • 已完成 IM uniapp Demo 的引入和初始化,具体请参考初始化

  • 已完成自定义基座的制作,具体请参考自定义基座

  • 开发环境满足如下要求:

    • HBuilderX
    • sass(sass-loader 版本 <= 10.1.1)
    • node(16.0.0 <= node 版本 <= 17.0.0, 推荐使用 Node.js 官方 LTS 版本 16.17.0)
    • npm(版本请与 node 版本匹配)

实现音视频通话

步骤1:引入呼叫组件

前往 DCloud 下载呼叫组件,将下载的组件放置项目工程的 nativeplugin 目录下。

// #ifdef APP-PLUS
// 音视频通话插件
const nimCallKit = uni.requireNativePlugin('netease-CallKit'))
// #endif

步骤2:初始化呼叫组件

在实现音视频通话前,需要先初始化呼叫组件。

nimCallKit.initConfig(
    {
        appKey: '', // 请填写你的appkey
        account: '', // 请填写你的account
        token: '', // 请填写你的token
        apnsCername: '',
        pkCername: '',
    },
    (ret: any) => {
        if (ret.code != 200) {
        uni.showToast({
            title: '音视频通话插件初始化失败',
            icon: 'none',
        })
        console.log(
            '-------------callkit init失败\n错误码:' +
            ret.code +
            '\n错误信息:' +
            ret.msg
        )
        } else {
        uni.showToast({
            title: '音视频通话插件初始化成功',
            icon: 'none',
        })
        console.log('-------------callkit 开始登录------------')
        }
    }
    )

步骤3:登录呼叫组件

呼叫组件初始化完成后才能进行登录,您可以将登录信息写入初始化接口的完成回调中,可参考以下示例:

nimCallKit.initConfig(
    {
        appKey: '', // 请填写你的appkey
        account: '', // 请填写你的account
        token: '', // 请填写你的token
        apnsCername: '',
        pkCername: '',
    },
    (ret: any) => {
        if (ret.code != 200) {
        uni.showToast({
            title: '音视频通话插件初始化失败',
            icon: 'none',
        })
        } else {
        uni.showToast({
            title: '音视频通话插件初始化成功',
            icon: 'none',
        })
        nimCallKit.login(
            {
            account: opts.account,
            token: opts.token,
            },
            function (ret: any) {
            if (ret.code != 200) {
                uni.showToast({
                title: '音视频通话插件登录失败',
                icon: 'none',
                })
            } else {
                uni.showToast({
                title: '音视频通话插件登录成功',
                icon: 'none',
                })
            }
            }
        )
        }
    }
    )

步骤4:发起音视频通话

nimCallKit.toCallPage({
      remoteUserAccid: '',
      currentUserAccid: '',
      type:  '',
      remoteShowName:  '',
    })

步骤5:退出登录

nimCallKit.logout({}, (ret) => {
          if (ret.code != 200) {
            uni.showToast({
              title: '登出失败',
              icon: 'none',
            })
          } else {
            uni.showToast({
              title: '登出成功',
              icon: 'none',
            })
          }
        })

相关参考

API 参考

呼叫组件相关 API 详情请参见插件接口

常见问题

iOS 离线打包,退出后台听不见声音

在 XCode 中打开工程,勾选 Audio, AirPlay, and Picture in PictureVoice over IP 两项即可。

Xcode选项.png

iOS 退出登录崩溃

严格按照 logout 接口的要求传递参数,第二个参数为 callback,如果只传递一个参数,会造成崩溃。

同时集成呼叫组件和推送插件,制定自定义基座打包报错

在 “nativeplugin/netease-CallKit/package.json” 目录下,添加 excludeDependencies,请参考以下示例代码:

"excludeDependencies": [
        "com.netease.nimlib:basesdk",
        "com.netease.nimlib:push"
      ],

打包出错.png

此文档是否对你有帮助?
有帮助
去反馈
  • 平台支持
  • 前提条件
  • 实现音视频通话
  • 步骤1:引入呼叫组件
  • 步骤2:初始化呼叫组件
  • 步骤3:登录呼叫组件
  • 步骤4:发起音视频通话
  • 步骤5:退出登录
  • 相关参考
  • API 参考
  • 常见问题
  • iOS 离线打包,退出后台听不见声音
  • iOS 退出登录崩溃
  • 同时集成呼叫组件和推送插件,制定自定义基座打包报错