开发指导
本文介绍了基于融云呼叫产品进行开发的必要信息。
开通服务
您在融云创建的应用默认不会启用音视频服务。在开始使用融云实时音视频呼叫产品前,请在控制台开通服务。
客户端 SDK | 开通方式 |
---|---|
CallLib SDK | 前往控制台音视频通话页面开通服务 |
CallPlus SDK | 前往控制台音视频通话页面开通服务 |
CallKit | 前往控制台音视频通话页面开通服务 |
呼叫流程
音视频通话(呼叫)业务是指含呼叫业务流程的音视频通话,主要包含信令通知和音视频传输两部分。其中信令通知利用融云的即时通讯能力(基于 IMLib SDK)。信令传输完成后,开始音视频传输(音视频传输基于融云音视频核心引擎 RTCLib SDK)。
流程图解析:
- 用户 A 调用呼叫方法,向用户 B 发起音视频通话请求。
- B 在线时,收到邀请通话的信息,CallLib SDK 内部自动回复响铃消息。
- A 收到响铃消息,得知 B 用户已响铃。
- B 用户接受通话邀请。
- A 收到 B 发送的邀请已接收信息。
- 成功建立音视频通话。
音视频通话(呼叫)业务中的实时音视频通信基于房间模型设计。主叫与被叫方需要进入同一个音视频房间才能实现音视频流的传输。CallLib 已实现的呼叫流程会自动实现与房间相关的逻辑,无需您额外进行处理。
客户端
平台兼容性
平台/框架 | 接口语种 | 支持架构 | 说明 |
---|---|---|---|
Android | Java | armeabi-v7a、arm64-v8a、x86、x86-64 | 系统版本 4.4 及以上 |
iOS | Objective-C | --- | 系统版本 9.0 及以上 |
Flutter | dart | --- | Flutter 2.0.0 及以上 |
uni-app | Javascript | --- | uni-app 2.8.1 及以上 |
React Native | Javascript | --- | React Native 0.65 及以上 |
Unity | C# | Android(armeabi-v7a、arm64-v8a) iOS(arm64,armv7) Windows(x86、x86-64) | --- |
Web | Javascript | --- | 详见客户端文档 Web 兼容性 |
Windows | Electron、C++ | x86、x86-64 | Windows 7 及以上。若有 C++ 接口需求,请咨询商务 |
Linux | Electron、C | --- | 推荐 Ubuntu 16.04 及以上;其他发行版,请咨询商务;若有 C++ 接口需求,请咨询商务。 |
MacOS | Electron | --- | 系统版本 10.10 及以上 |
版本支持
RTC 服务客户端 SDK 针对各平台/框架提供的最新版本如下(---
表示暂未支持):
SDK/平台 | Android | iOS | Web | Electron | Flutter | Unity | uni-app | 小程序 | React Native | Windows - C++ | Linux - C |
---|---|---|---|---|---|---|---|---|---|---|---|
CallLib | 5.6.x | 5.6.x | 5.0.x | 5.1.x | 5.1.x | --- | 5.1.x | 3.2.x | 5.1.x | 详询融云商务 | 详询融云商务 |
CallKit | 5.6.x | 5.6.x | --- | --- | --- | --- | --- | --- | --- | 详询融云商务 | 详询融云商务 |
CallPlus | 2.x | 2.x | 2.x | --- | --- | --- | --- | --- | --- | 详询融云商务 | 详询融云商务 |
SDK 体积对比
Android 端
以下数据基于 RTC 5.X 版本。
CPU 架构 | 集成 CallLib 增量 | 集成 CallKit 增量 |
---|---|---|
armeabi | 4.6MB | 7.4MB |
arm64-v8a | 5.1MB | 8.0MB |
x86 | 5.4MB | 8.3MB |
全平台 | 17.2MB | 20.1MB |
iOS 端
以下数据基于 RongCloudRTC 5.X 版本。
CPU 架构 | 集成 CallLib 增量 | 集成 CallKit 增量 |
---|---|---|
arm64 | 4.4M | 8.9M |
arm64 + armv7 | 8.9M | 14.8M |
服务端
集成实时音视频服务 API 时,请确保:
- 已在[控制台]创建应用,并获取了开发环境或者生产环境下有效的 App Key / App Secret。
- 由于音视频服务依赖即时通讯服务作为信令通道,因此客户端必须与融云服务器建立 IM 连接。因此,您的后端必须实现从融云获取 Token 的流程,即您的后端必须调用 IM Server API 的[获取 Token]接口,并将有效的 Token 分发至客户端。
- 已准备好自己的客户端,并已搭建相关的业务场景。例如,可以获得有效 Token,与融云建立 IM 连接。
部分高级扩展特性仅在 RTC Server API 中提供,例如云端截图、云播放器等。
音视频服务提供服务端回调(Webhook),支持将业务的数据、状态通知同步到您设置的回调地址。所有服务端回调均需要在控制台启用。
关键概念
应用
注册为融云控制台账号后,您可以创建融云应用。每个融云应用均区分开发环境与生产环境,提供不同的 App Key,两套环境之间数据隔离。
您可以在控制台 App Key 页面中查看应用在当前环境的详细信息。
如果您的应用存在多种角色的客户端(如教育类应用包括教师端和学生端)时,可通过设置多个应用标识,生成多种使用相同 App Key 的最终应用。
用户
在即时通讯服务中,您的后端应向融云服务端提供用户 ID(userId),以换取唯一用户 Token。对融云来说,这个以 userId 获取 Token 的步骤即注册用户,且必须通过调用 Server API 的 获取 Token 接口来完成。
用户必须持有有效 Token,才能通过 IM SDK 成功连接到融云服务端,使用融云即时通讯服务。
音视频房间
在音视频服务中,音视频房间指通过进行音视频通信的虚拟空间,同一房间内的用户可以互相收、发实时音视频媒体流。
音视频房间具有以下特点:
- 音视频房间是在服务端内部自动创建的,不支持由应用程序直接创建。
- 第一个用户在客户端发起加入音视频房间请求后,融云服务端会自动创建音视频房间。
- 服务端会根据客户端的请求,创建呼叫模式、会议模式,或直播模式的音视频房间。
- 服务端会为每一个音视频房间生成服务端唯一标识,称为 Session ID(Session ID 非音视频房间 ID)。Session ID 从第一个人进入房间时生成,到所有人退出房间销毁,也称为会话 ID。
- 一个用户同一时间只能在一个音视频房间内。如果要进入另一个房间,必须从前一个房间内退出。
- 考虑移动设备的带宽(主要是在多路视频情况下),建议单次通话或房间内,视频不超过 16 人,纯音频不超过 32 人。超过此上限可能影响通话效果。
呼叫
在音视频服务中,呼叫模式的音视频房间是区分主叫、被叫角色的音视频房间。对应的客户端 SDK 包括 CallLib SDK、CallPlus SDK 或 CallKit。
- 第一个用户(主叫用户)进入房间时,SDK 自动创建音视频房间的 Room ID,该 ID 等同于 Call ID。
- 接听时,被叫用户使用 Call ID 加入音视频房间。
- 每个房间在创建之初,融云服务生成一个全网唯一的 SessionId,可用于后台业务查询或与融云进行问题沟通。当房间内的所有人退出或被服务器判定掉线后,此 Session 结束。