跳到主要内容

初始化

在使用 SDK 其他功能前,必须先完成初始化。本文将详细介绍 IM 客户端、RTC 客户端及 CallLib 客户端的初始化方法。

准备 App Key

您必须拥有正确的 App Key,才能进行初始化。

您可前往融云控制台,查看已创建应用的 App Key。

如您拥有多个应用,请注意选择对应的应用名称(下图标注 1)。此外,融云每个应用均提供用于隔离生产和开发环境的两套独立 App Key / Secret。获取 App Key 时,请务必区分环境(生产 / 开发,下图标注 2)。

提示
  • 若您非应用创建者,建议在获取 App Key 时确认页面显示的数据中心是否符合预期。
  • 未申请应用上线前,仅可使用开发环境。

appkey

初始化前的准备

部分配置需在初始化前完成,否则 SDK 功能将无法正常使用。

  • 开通音视频服务:音视频服务需手动开通。请根据实际业务类型,开通相应音视频服务。详见开通音视频服务
  • 海外数据中心:音视频业务依赖 IMLib 提供信令通道,若您的应用使用海外数据中心,必须在初始化前将 IMLib SDK 默认服务地址修改为海外数据中心地址,否则将默认连接中国大陆数据中心。详见配置海外数据中心服务地址

初始化 IM、RTC、CallLib 客户端

CallLib 可与 IMLib 5.X、2.X 配合使用。不同 IMLib 版本下,IM 客户端、RTC 客户端及 CallLib 客户端的初始化方式有所不同。请根据实际安装的 IMLib 版本选择对应的初始化方法。

CallLib 配合 IMLib 5.X

音视频通话依赖 IMLib 作为信令通道,因此需先调用 IMLib 的 init 方法初始化 IM 客户端,再调用 IMLib 的 installPlugin 方法分别初始化 RTCLib 客户端和 CallLib 客户端。

appkey 即您的融云应用 App Key。

步骤 1:IMLib 初始化

详情请参阅:RongIMLib.init 接口

JavaScript
RongIMLib.init({
appkey: '<your-app-key>',
});

步骤 2:RTCLib 初始化

JavaScript
RongIMLib.installPlugin(rtcInstaller, options)

参数说明

参数类型必填说明
rtcInstallerinstallerRTC 插件生成器,从 RTCLib SDK 中获取
optionsIRCRTCInitOptions配置项

示例代码

typescript
// 引入 RTCLib SDK 示例
import { installer as rtcInstaller, RCRTCClient, RCTrack } from "@rongcloud/plugin-rtc";

const rtcClient: RCRTCClient = RongIMLib.installPlugin(rtcInstaller, {
logLevel: 2, // 日志等级
timeout: 5000, // 与 MediaServer 的 http 请求超时时间
})

步骤 3:CallLib 初始化

接口

JavaScript
RongIMLib.installPlugin(callInstaller, options)

参数说明

参数类型必填说明
callInstallerinstallerCallLib 插件生成器,从 CallLib SDK 中获取
optionsIRCCallInitOptions配置项

示例代码

typescript
// 引入 CallLib SDK 示例
import { installer as callInstaller, RCCallClient, RCCallSession, ISenderInfo, RCCallEndReason, IEndSummary, IEndSummary, IOfflineRecord } from "@rongcloud/plugin-call";

const callClient: RCCallClient = RongIMLib.installPlugin(callInstaller, {
// rtcClient 实例,RTCLib 初始化时生成的(必填)
rtcClient,
/**
* 被动收到邀请(收到远端发起的新会话),会产生新的 session 对象(必填)
*/
onSession(session: RCCallSession){
/**
* **收到新 session 后需立即注册事件监听**
*/
session.registerSessionListener({
/**
* 远端用户已开始响铃,表示对方已收到呼叫请求
* @param sender 已响铃用户
* @param session 当前 session 对象
*/
onRinging(sender: ISenderInfo, session: RCCallSession){
const { userId } = sender;
},
/**
* 远端用户同意接听
* @param sender 远端用户
* @param session 当前 session 对象
*/
onAccept(sender: ISenderInfo, session: RCCallSession){
const { userId } = sender;
},
/**
* 有远端用户挂断
* @param sender 远端用户
* @param reason 挂断原因
* @param session 当前 session 对象
*/
onHungup(sender: ISenderInfo, reason: RCCallEndReason, session: RCCallSession){
const { userId } = sender;
},
/**
* 本端或远端资源已获取
* @param track 本端或远端资源,track 不可设置为 Vue 响应式数据
* @param session 当前 session 对象
*/
onTrackReady(track: RCTrack, session?: RCCallSession){
// track.isLocalTrack() 是否为本地资源
// track.isAudioTrack() 是否为音频
// track.isVideoTrack() 是否为视频
// track.getUserId() 产生该 track 的用户 ID

// 播放音频。远端音频建议直接播放,本端音频建议不播放以减少回音。
if (track.isAudioTrack() && !track.isLocalTrack()) {
track.play();
}

// 视频在对应容器播放
if (track.isVideoTrack()) {
const video = document.getElementById(
"video" + user.userId
) as HTMLVideoElement;
track.play(video);
}
},
});
},
/**
* 满足以下任一条件将触发 onSessionClose:
* 1. 本端用户主动挂断
* 2. 服务端将本端用户踢出 RTC 房间
* 3. 房间人数少于 2 人
*
* @param {RCCallSession} session 被结束的 session 对象
* @param summaryInfo 结束 session 后的汇总信息
*/
onSessionClose(session: RCCallSession, summaryInfo?: IEndSummary){

},
/**
* 接收 IM 离线期间收到的呼叫记录(按需监听)
*/
onOfflineRecord(record: IOfflineRecord){

},
})

CallLib 配合 IMLib 2.X

音视频通话依赖 IMLib 作为信令通道,因此需先调用 IMLib 的 init 方法初始化 IM 客户端,再调用 IMClientinstall 方法初始化 RTC 客户端和 CallLib 客户端。

appkey 即您的融云应用 App Key。

步骤 1:IMLib 初始化

详情请参阅:RongIMClient.init 接口

JavaScript
RongIMClient.init('<your-app-key>');

步骤 2:RTCLib 初始化

JavaScript
RongIMClient.getInstance().install(rtcInstaller, options)

参数说明

参数类型必填说明
rtcInstallerinstallerRTC 插件生成器,从 RTCLib SDK 中获取
optionsIRCRTCInitOptions配置项

示例代码

typescript
// 引入 RTCLib SDK 示例
import { installer as rtcInstaller, RCRTCClient, RCTrack } from "@rongcloud/plugin-rtc";

const rtcClient: RCRTCClient = RongIMClient.getInstance().install(rtcInstaller, {
logLevel: 2, // 日志等级
timeout: 5000, // 与 MediaServer 的 http 请求超时时间
})

步骤 3:CallLib 初始化

接口

JavaScript
RongIMClient.getInstance().install(callInstaller, options)

参数说明

参数类型必填说明
callInstallerinstallerCallLib 插件生成器,从 CallLib SDK 中获取
optionsIRCCallInitOptions配置项

示例代码

typescript
RongIMClient.getInstance().install(callInstaller, {
// rtcClient 实例(必填)
rtcClient,
/**
* 被动收到邀请(收到远端发起的新会话),会产生新的 session 对象(必填)
*/
onSession(session: RCCallSession){},
// .... 具体示例可参考上面 5.x 节
})