跳到主要内容

CallLib 5.X 升级到 CallPlus

安装依赖

为便于开发者从 CallLib 向 CallPlus 升级,融云自 CallPlus 2.1.4 版本开始,在 CallPlus 包中提供子包 @rongcloud/plugin-call-plus/wrapper 以用于开发者集成替换。

使用包管理器方式集成

# 移除旧版本 CallLib
npm rm @rongcloud/plugin-call

# 安装 CallPlus,自 2.1.4 版本后,包内将携带 wrapper 子包
npm i @rongcloud/plugin-call-plus

使用 CDN 方式集成

注意:使用 CDN 方式引入 CallPlus 与 CallPlusWrapper 包时,需确保两个包的版本号一致。

<script src="https://cdn.ronghub.com/RongIMLib-5.9.5.prod.js"></script>
<script src="https://cdn.ronghub.com/RCRTC-5.7.1.prod.js"></script>
<script src="https://cdn.ronghub.com/CallPlus-2.1.4.prod.js"></script>
<script src=" https://cdn.ronghub.com/CallPlusWrapper-2.1.4.prod.js"></script>

集成代码变动

初始化

旧方式:

import { installer as callInstaller, RCCallClient } from '@rongcloud/plugin-call';

const caller: RCCallClient = RongIMLib.installPlugin(callInstaller, {
rtcClient,
onSession: (session: RCCallSession) => {},
onSessionClose: (session: RCCallSession, summaryInfo?: IEndSummary) => {},
}

需替换为:

// 包名引用注意变更
import { installer as callPlusInstaller, RCCallPlusClient } from '@rongcloud/plugin-call-plus';
import { installer as wrapperInstaller, RCCallClient } from '@rongcloud/plugin-callplus/wrapper';

// 需要先初始化 CallPlus,RTCClient 初始化方式不变
const callPlusClient = RongIMLib.installPlugin(callPlusInstaller, { rtcClient });

// 初始化 CallPlusWrapper,以替换原 CallLib 的 CallClient
const caller = RongIMLib.installPlugin(wrapperInstaller, {
callPlusClient,
onSession: (session: RCCallSession) => {},
onSessionClose: (session: RCCallSession, summaryInfo?: IEndSummary) => {},
});

视频媒体标签

原 CallLib 在播放视频时,需要使用 track.play() 传入 <video> 标签元素;在 CallPlusWrapper 中,进行视频通话,需开发者通过调 setVideoView 设置房间人员与视频元素的绑定关系。

<video id="local_video_element_id"></video>
<video id="remote_video_element_id"></video>
callPlusClient.setVideoView([
{
userId: '<local-userId>',
videoElement: document.getElementById('local_video_element_id')
},
{
userId: '<remote-userId>',
videoElement: document.getElementById('remote_video_element_id')
},
]);

onTrackReady 通知

CallPlusWrapper 中的 onTrackReady 回调接口变更,不再对外回调 track 实例,因此业务层无法继续调用 track.play() 方法进行媒体播放,需要改为使用 CallPlus 客户端实例 callPlusClientplayMedia 方法播放。

注意,由于 CallPlusWrapper 需要尽量保持兼容 CallLib,因此,CallPlusWrapper 中的 RCCallMediaType 枚举值与 CallPlus 的 RCCallPlusMediaType 并不相同,需要注意在播放前进行类型转换。

{
onTrackReady(userId: string, mediaType: RCCallMediaType, session?: RCCallSession) {
// 枚举类型转换
const playMediaType = mediaType === RCCallMediaType.AUDIO
? RCCallPlusMediaType.AUDIO
: RCCallPlusMediaType.VIDEO;
// 使用 CallPlus 播放媒体
// 播放视频前,请确保已经调用 `setVideoView` 方法为其设置视频视图
callPlusClient.playMedia(userId, playMediaType);
}
}

质量数据

由于 CallPlus 中的质量数据接口变更,无法与既有 CallLib 兼容,因此 CallPlusWrapper 暂时不支持质量数据监听,onRTCStateReport 接口废弃;

后续版本中将在 CallPlusWrapper 中提供新的质量数据接口以满足业务对质量数据的需求。

其他

  • IRCCallInitOptions 声明中部分字段废弃,详情请查阅 IRCCallInitOptions
  • 废弃 registerUserInfo 方法,CallPlus Wrapper 中不支持注册用户信息和信息透传。
  • ISessionListener 监听器中废弃包括质量数据 onRTCStateReport 在内的部分事件回调,详情请查阅 ISessionListener