SDKsAndroid商业版
发起单聊通话
使用 Android SDK 发起单聊音视频通话。
signalingInvite() 发起单聊通话。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 是媒体房间 ID,token 是加入房间使用的短期凭据,liveURL 是媒体服务提供的连接地址,busyLineUserIDList 是忙线用户列表。
只有取得有效的 token 和 roomID 后才能连接媒体房间。API 成功不表示对方已经接听;后续状态见处理通话事件。
这个页面有帮助吗?