快速实现音视频通话
更新时间: 2024/09/27 10:50:00
IM uni-app Demo 是基于网易云信即时通讯 SDK(简称 NIM SDK)为 uni-app 开发者提供的一款 Demo,它提供了一些通用的功能,包含会话、聊天、群组等,您可以基于源码搭建自己的 IM 业务逻辑。自 V1.5.0 起,uni-app Demo 引入呼叫组件,您可以在 Demo 中集成呼叫组件,实现音视频通话能力。
本文主要介绍如何在 uni-app Demo 中快速实现音视频通话。
平台支持
当前 IM uni-app Demo 的音视频通话功能仅支持 Android、iOS 平台。
前提条件
在引入呼叫组件之前,请确保:
-
已完成 IM uni-app 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
目录下。
JavaScript// #ifdef APP-PLUS
// 音视频通话插件
const nimCallKit = uni.requireNativePlugin('netease-CallKit'))
// #endif
步骤 2:初始化呼叫组件
在实现音视频通话前,需要先初始化呼叫组件。
JavaScriptnimCallKit.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:登录呼叫组件
呼叫组件初始化完成后才能进行登录,您可以将登录信息写入初始化接口的完成回调中,可参考以下示例:
JavaScriptnimCallKit.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:发起音视频通话
JavaScriptnimCallKit.toCallPage({
calledAccount:'123456',
type:2
}, function(ret) {
if (ret.code != 200) {
var msg = '呼叫失败\n 错误码:' + ret.code + '\n 错误信息:' + ret.message;
uni.showToast({
title: msg,
icon: 'none',
})
} else {
uni.showToast({
title: '呼叫成功',
icon: 'none',
})
}
})
步骤 5:退出登录
JavaScriptnimCallKit.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 Picture
和 Voice over IP
两项即可。
iOS 退出登录崩溃
严格按照 logout
接口的要求传递参数,第二个参数为 callback
,如果只传递一个参数,会造成崩溃。
同时集成呼叫组件和推送插件,制定自定义基座打包报错
在 nativeplugin/netease-CallKit/package.json 目录下,添加 excludeDependencies
,请参考以下示例代码:
JSON"excludeDependencies": [
"com.netease.nimlib:basesdk",
"com.netease.nimlib:push"
],
此文档是否对你有帮助?