浏览 SDKs · Android
SDKsAndroid商业版

发起单聊通话

使用 Android SDK 发起单聊音视频通话。

复制

signalingInvite() 发起单聊通话。Android SDK 负责通话信令,应用仍需使用返回的房间凭据接入实时音视频媒体引擎。

参数说明

调用方法:

signalingInvite(OnBase<SignalingCertificate> callback, SignalingInfo info)

下表字段均为 Android SignalingInfo 及其嵌套对象的公开属性。发起通话时主要填写 invitation 和可选的 offlinePushInfoparticipant 与顶层 userID 由接收信令等场景携带,发起方通常不需要设置。

参数类型是否必填说明
invitationSignalingInvitationInfo本次通话邀请。
invitation.inviterUserIDString邀请者,传入当前登录用户 ID。
invitation.inviteeUserIDListList<String>被邀请用户列表;单聊只填写对方一个用户。
invitation.groupIDString群ID,单聊固定传空字符串。
invitation.roomIDString本次通话的唯一房间标识,后续状态按它合并。
invitation.timeoutlong邀请等待时长,单位为秒。
invitation.mediaTypeString媒体类型,业务通常约定为 audiovideo
invitation.sessionTypeint单聊使用 ConversationType.SINGLE_CHAT,群聊使用 ConversationType.SUPER_GROUP_CHAT
invitation.platformIDint当前客户端平台,固定传入 Platform.ANDROID
invitation.customDataString随邀请携带的业务扩展字符串。
invitation.initiateTimelong邀请发起时间。通常由信令链路维护,无需手动填写。
offlinePushInfoOfflinePushInfo被邀请人离线时使用的推送内容。
offlinePushInfo.titleString条件必填推送标题,提供 offlinePushInfo 时必填
offlinePushInfo.descString条件必填推送正文,提供 offlinePushInfo 时必填
offlinePushInfo.exString条件必填推送扩展字符串,没有内容时传空字符串。
offlinePushInfo.iOSPushSoundString条件必填iOS 推送声音,提供 offlinePushInfo 时必填
offlinePushInfo.iOSBadgeCountboolean条件必填是否更新 iOS 角标,提供 offlinePushInfo 时必填
participantParticipantMeta通话参与者的用户、群组或群成员资料;发起邀请时通常不设置。
userIDString当前信令操作关联的用户 ID;发起邀请时通常不设置。
SignalingInvitationInfo invitation = new SignalingInvitationInfo();
invitation.setInviterUserID(currentUserID);
invitation.setInviteeUserIDList(Collections.singletonList(peerUserID));
invitation.setGroupID("");
invitation.setRoomID(roomID);
invitation.setTimeout(30);
invitation.setMediaType("video");
invitation.setSessionType(ConversationType.SINGLE_CHAT);
invitation.setPlatformID(Platform.ANDROID);
invitation.setCustomData("{\"source\":\"contact-card\"}");

SignalingInfo info = new SignalingInfo();
info.setInvitation(invitation);
info.setOfflinePushInfo(offlinePushInfo);

OpenIMClient.getInstance().signalingManager.signalingInvite(
    new OnBase<SignalingCertificate>() {
        @Override
        public void onSuccess(SignalingCertificate credentials) {
            // credentials 提供 roomID、token 和 liveURL,用于接入媒体房间。
        }

        @Override
        public void onError(int code, String error) {
            // code 和 error 说明失败原因。
        }
    },
    info
);

成功回调返回 SignalingCertificate。其中 roomID 是媒体房间 ID,token 是加入房间使用的短期凭据,liveURL 是媒体服务提供的连接地址,busyLineUserIDList 是忙线用户列表。

只有取得有效的 tokenroomID 后才能连接媒体房间。API 成功不表示对方已经接听;后续状态见处理通话事件