SDKsAndroid商业版
发起单聊通话
使用 Android SDK 发起单聊音视频通话。
发起单聊音视频通话。Android SDK 负责音视频呼叫信令的建立与同步,应用获取到返回的房间凭据后需接入实时音视频媒体引擎。
参数说明
调用方法:
signalingInvite(OnBase<SignalingCertificate> callback, SignalingInfo info)下表字段均为 Android SignalingInfo 及其嵌套对象的公开属性。发起通话时主要填写 invitation 和可选的 offlinePushInfo;participant 与顶层 userID 由接收信令等场景携带,发起方通常不需要设置。
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
invitation | SignalingInvitationInfo | 是 | 本次通话邀请。 |
invitation.inviterUserID | String | 是 | 邀请者,传入当前登录用户 ID。 |
invitation.inviteeUserIDList | List<String> | 是 | 被邀请用户列表;单聊只填写对方一个用户。 |
invitation.groupID | String | 是 | 群ID,单聊固定传空字符串。 |
invitation.roomID | String | 是 | 本次通话的唯一房间标识,后续状态按它合并。 |
invitation.timeout | long | 是 | 邀请等待时长,单位为秒。 |
invitation.mediaType | String | 是 | 媒体类型,业务通常约定为 audio 或 video。 |
invitation.sessionType | int | 是 | 单聊使用 ConversationType.SINGLE_CHAT,群聊使用 ConversationType.SUPER_GROUP_CHAT。 |
invitation.platformID | int | 是 | 当前客户端平台,固定传入 Platform.ANDROID。 |
invitation.customData | String | 否 | 随邀请携带的业务扩展字符串。 |
invitation.initiateTime | long | 否 | 邀请发起时间。通常由信令链路维护,无需手动填写。 |
offlinePushInfo | OfflinePushInfo | 否 | 被邀请人离线时使用的推送内容。 |
offlinePushInfo.title | String | 条件必填 | 推送标题,提供 offlinePushInfo 时必填 |
offlinePushInfo.desc | String | 条件必填 | 推送正文,提供 offlinePushInfo 时必填 |
offlinePushInfo.ex | String | 条件必填 | 推送扩展字符串,没有内容时传空字符串。 |
offlinePushInfo.iOSPushSound | String | 条件必填 | iOS 推送声音,提供 offlinePushInfo 时必填 |
offlinePushInfo.iOSBadgeCount | boolean | 条件必填 | 是否更新 iOS 角标,提供 offlinePushInfo 时必填 |
participant | ParticipantMeta | 否 | 通话参与者的用户、群组或群成员资料;发起邀请时通常不设置。 |
userID | String | 否 | 当前信令操作关联的用户 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:当前通话房间的全局唯一标识。token:进入实时音视频房间的鉴权凭据。liveURL:媒体服务器连接地址。busyLineUserIDList:忙线用户列表(若对方正在通话中,该列表将包含对应用户 ID)。
主叫端成功获取凭据后即可连接媒体房间并等待对端应答。接口调用成功仅代表呼叫信令已成功发出,不代表对方已接听。客户端需以 roomID 为通话全局标识、以 roomID:userID 跟踪对端状态,后续实时事件请参考处理通话事件。
这个页面有帮助吗?