跳转至

快速集成

快速集成

使用融云通话之前,必须先初始化 SDK 和连接服务器,详细内容可以参考 IMKit SDK 集成文档。

发起通话

使用 CallKit 可以通过两种方式发起通话:

  1. 在聊天界面输入扩展的加号内,点击音频通话/视频通话按钮直接发送通话。
这个功能在 SDK 中已经默认实现了,您不需要做什么额外的操作。
  1. 调用 RCCall 类中的以下方法发起通话。

  2. 发起单人通话

// RCCall Class

/*!
 发起单人通话

 @param targetId  对方的用户ID
 @param mediaType 使用的媒体类型
 */
- (void)startSingleCall:(NSString *)targetId
              mediaType:(RCCallMediaType)mediaType;
  • 选择成员并发起多人通话
// RCCall Class

/*!
 选择成员并发起多人通话

 @param conversationType 会话类型
 @param targetId         会话目标ID
 @param mediaType        使用的媒体类型

 @discussion 此方法会先弹出选择成员界面,选择完成后再会发起通话。目前支持的会话类型有群组。

 @warning 如果您需要在群组中调用此接口发起多人会话,需要设置并实现groupMemberDataSource。
 */
- (void)startMultiCall:(RCConversationType)conversationType
              targetId:(NSString *)targetId
             mediaType:(RCCallMediaType)mediaType;
需要注意的是,如果您需要在群组中调用此接口发起多人会话,需要设置并实现 `groupMemberDataSource` 。
SDK 在选择群组成员的时候,会调用 `getAllMembersOfGroup:result:` 接口获取群成员列表并显示。
  • 直接发起多人通话
// RCCall Class

/*!
 直接发起多人通话

 @param conversationType 会话类型
 @param targetId         会话目标ID
 @param mediaType        使用的媒体类型
 @param userIdList       邀请的用户ID列表

 @discussion 此方法会直接发起通话。目前支持的会话类型有群组。

 @warning 您需要设置并实现groupMemberDataSource才能加人。
 */
- (void)startMultiCallViewController:(RCConversationType)conversationType
                            targetId:(NSString *)targetId
                           mediaType:(RCCallMediaType)mediaType
                          userIdList:(NSArray *)userIdList;

通话接听

当收到一个通话呼叫的时候, 1. 当 App 处于前台状态的时候,SDK 会自动弹出通话界面。

  1. 当 App 处于后台活动状态的时候,SDK 会弹出本地通知并播放铃声。

  2. 当 App 处于后台暂停状态的时候,如果您的 App 开启了实时音视频后台运行模式并在开发者后台上传了 VoIP 推送证书,这时候 App 会在后台启动并弹出本地通知;否则,App 会收到远程推送提醒,VoIP Push 设置请参考 VoIP 推送设置文档

关于 App 运行状态的更多信息,您可以参考 SDK 的运行状态文档。

会话是否支持发起通话

目前,SDK 支持在单聊发起单人通话,在群聊中发起多人通话。

您可以通过 RCCall 类的以下接口查询当前会话的通话能力。

// RCCall Class

/*!
 当前会话类型是否支持音频通话

 @param conversationType 会话类型

 @return 是否支持音频通话
 */
- (BOOL)isAudioCallEnabled:(RCConversationType)conversationType;

/*!
 当前会话类型是否支持视频通话

 @param conversationType 会话类型

 @return 是否支持视频通话
 */
- (BOOL)isVideoCallEnabled:(RCConversationType)conversationType;

设置多人通话人数限制

CallKit 默认音频通话最大人数为 20 人,视频通话最大人数为 7 人。

如果不符合您的需求,您可以通过 RCCall 以下接口设置最大人数。

// RCCall Class

/*!
 音频通话支持的最大通话人数
 */
@property (nonatomic, assign) int maxMultiAudioCallUserNumber;

/*!
 视频通话支持的最大通话人数
 */
@property (nonatomic, assign) int maxMultiVideoCallUserNumber;
建议您在设置最大人数的时候,考虑移动设备的带宽(主要是多路视频通话)和UI交互友好。
`CallLib` 的话音频和视频人数默认均没有限制。

来电显示的应用名称

// RCCall Class

/**
来电显示的应用名字
*/
@property(nonatomic, copy) NSString *appLocalizedName;

UI 界面说明

CallKit 中默认实现了一套较为通用的通话 UI,包含单人音视频通话界面 RCCallSingleCallViewController 、多人音频通话界面 RCCallAudioMultiCallViewController 、多人视频通话界面 RCCallVideoMultiCallViewController、最小化的通话界面 RCCallFloatingBoard、聊天界面的通话提示 RCCallDetailMessageCellRCCallTipMessageCell等。

如果能满足您的需求,您可以基于 CallKit 直接开发,如果您的需求较为特殊,可以直接使用 CallLib 并实现相关的界面UI,您也可以向我们商务索取 CallKit 源码以供参考。