实现群组通话
更新时间: 2025/10/11 11:12:08
本文介绍了如何通过网易云信呼叫组件(CallKit)提供的 API 进行群组通话功能开发的详细步骤和代码示例。
群组通话功能目前在 Beta 测试阶段,若需要使用,请联系您的网易云信商务经理开通。
适用场景
群组通话功能是现代通信应用的核心功能之一,它允许多个用户同时进行实时的视频和音频交流。无论是企业会议、在线教育、社交互动还是远程医疗咨询,这一功能都能提供高效的沟通手段,增强团队协作和信息共享。
- 在线教育:教师和学生可以通过多人视频通话进行实时互动,共享屏幕和文档,提升在线学习体验。
- 企业会议:团队成员无论身处何地,都能通过视频会议进行有效的远程协作和决策讨论。
- 社交互动:朋友和家人可以通过群视频通话保持联系,共享生活瞬间。
- 远程医疗咨询:医生和患者可以进行远程视频咨询,进行初步诊断和健康建议。
- 紧急服务:紧急服务人员可以与现场人员进行实时视频通话,快速响应紧急情况。
前提条件
根据本文操作前,请确保您已经完成了以下设置:
- 在 网易云信控制台 上创建至少一个应用。详细步骤请参考 创建应用并获取 AppKey。
- 集成呼叫组件到示例项目。详细步骤请参考 实现 1 对 1 呼叫(含 UI 集成 V3)。
初始化
以下示例代码介绍如何在 Android 应用中初始化群组通话功能,包括设置 SDK 选项和启动通话界面。
JavaCallKitUIOptions options = new CallKitUIOptions();
options....
options.enableGroup = true;
CallKitUI.init(getApplicationContext(), options);
开始群呼
以下示例代码提供了开始一个群组通话的代码示例,包括创建通话参数和启动通话。
JavaGroupCallParam param =
new GroupCallParam.Builder()
.callId(UUID.randomUUID().toString())
.callees(userArray)
.extraInfo(extraInfo.toString())
.build();
CallKitUI.startGroupCall(this, param);
加入群呼
以下示例代码展示了如何加入一个正在进行的多人通话。
JavaGroupJoinParam param = new GroupJoinParam(callId);
CallKitUI.joinGroupCall(GroupSettingActivity.this, param);
通话中添加成员
以下示例代码说明了如何在通话中邀请其他成员加入通话。
JavaCallKitUIOptions options =
new CallKitUIOptions.Builder()
// 音视频通话 sdk appKey,用于通话中使用
.rtcAppKey(ConfigCenter.getAppKey())
// 当前用户 accId
.currentUserAccId(AuthManager.getInstance().getUserModel().imAccid)
.currentUserRtcUId(SettingActivity.RTC_CHANNEL_UID)
// 通话接听成功的超时时间单位 毫秒,默认 30s
.timeOutMillisecond(30 * 1000L)
// 当系统版本为 Android Q 及以上时,若应用在后台系统限制不直接展示页面
// 而是展示 notification,通过单击 notification 跳转呼叫页面
// 此处为 notification 相关配置,如图标,提示语等。
.notificationConfigFetcher(new DemoSelfNotificationConfigFetcher<>())
.notificationConfigFetcherForGroup(
new DemoSelfNotificationConfigFetcher<>())
// 收到被叫时若 app 在后台,在恢复到前台时是否自动唤起被叫页面,默认为 true
.resumeBGInvitation(true)
.enableGroup(true)
.enableAutoJoinWhenCalled(SettingActivity.ENABLE_AUTO_JOIN)
// 设置用户信息
.userInfoHelper(new SelfUserInfoHelper())
// rtc 初始化模式
.initRtcMode(SettingActivity.RTC_INIT_MODE)
// 主叫加入 rtc 的时机
.joinRtcWhenCall(SettingActivity.ENABLE_JOIN_RTC_WHEN_CALL)
.contactSelector(
(context, groupId, strings, listNEResultObserver) -> {
if (listNEResultObserver == null) {
return null;
}
TransHelper.launchTask(
context,
CODE_REQUEST_INVITE_USERS,
(innerContext, code) -> {
NERTCSelectCallUserActivity.startSelectUser(
innerContext,
CODE_REQUEST_INVITE_USERS,
CallModeType.RTC_GROUP_INVITE,
strings);
return null;
},
intentResultInfo -> {
if (intentResultInfo == null
|| intentResultInfo.getValue() == null) {
return null;
}
Intent data = intentResultInfo.getValue();
if (intentResultInfo.getSuccess()) {
ArrayList<String> selectorList =
data.getStringArrayListExtra(
NERTCSelectCallUserActivity.KEY_CALL_USER_LIST);
listNEResultObserver.onResult(selectorList);
}
return null;
});
return null;
})
.language(NECallUILanguage.AUTO)
.build();
此文档是否对你有帮助?





