浏览 SDKs · React Native
SDKsReact Native商业版

处理通话事件

使用 OpenIM React Native SDK 监听通话事件。

复制

通话相关事件用于接收邀请状态、参与者状态和媒体流状态。邀请类事件从回调参数的 invitation 读取房间信息;媒体流变化直接提供 roomID。发送和接收自定义信令见发送自定义信令

事件参数

事件回调参数类型常用字段
OnReceiveNewInvitationOnReceiveNewInvitationPayloadinvitationuserIDparticipantofflinePushInfo
OnInviteeAcceptedOnInviteeAcceptedPayloadinvitationuserIDparticipantopUserPlatformID
OnInviteeRejectedOnInviteeRejectedPayloadinvitationuserIDparticipantopUserPlatformID
OnInvitationCancelledOnInvitationCancelledPayloadinvitationuserIDparticipantofflinePushInfo
OnInvitationTimeoutOnReceiveNewInvitationPayloadinvitationuserIDparticipantofflinePushInfo
OnInviteeAcceptedByOtherDeviceOnInviteeAcceptedPayloadinvitationuserIDparticipantopUserPlatformID
OnInviteeRejectedByOtherDeviceOnInviteeRejectedPayloadinvitationuserIDparticipantopUserPlatformID
OnHangUpOnHangUpPayloadinvitationuserIDofflinePushInfo
OnRoomParticipantConnectedOnRoomParticipantConnectedPayloadinvitationgroupIDparticipant
OnRoomParticipantDisconnectedOnRoomParticipantDisconnectedPayloadinvitationgroupIDparticipant
OnStreamChangeOnStreamChangePayloadroomIDstreamTypemute

使用 invitation.roomIDroomID 区分通话;参与者信息中使用 participant.userInfo.userID 区分用户。

function handleReceiveNewInvitation(payload: OnReceiveNewInvitationPayload) {
  // ...
}

function handleInviteeAccepted(payload: OnInviteeAcceptedPayload) {
  // ...
}

function handleInviteeRejected(payload: OnInviteeRejectedPayload) {
  // ...
}

function handleInvitationCancelled(payload: OnInvitationCancelledPayload) {
  // ...
}

function handleInvitationTimeout(payload: OnReceiveNewInvitationPayload) {
  // ...
}

function handleInviteeAcceptedByOtherDevice(payload: OnInviteeAcceptedPayload) {
  // ...
}

function handleInviteeRejectedByOtherDevice(payload: OnInviteeRejectedPayload) {
  // ...
}

function handleHangUp(payload: OnHangUpPayload) {
  // ...
}

function handleRoomParticipantConnected(payload: OnRoomParticipantConnectedPayload) {
  // ...
}

function handleRoomParticipantDisconnected(payload: OnRoomParticipantDisconnectedPayload) {
  // ...
}

function handleStreamChange(payload: OnStreamChangePayload) {
  // ...
}

// 设置监听
OpenIMSDK.on(OpenIMEvent.OnReceiveNewInvitation, handleReceiveNewInvitation);
OpenIMSDK.on(OpenIMEvent.OnInviteeAccepted, handleInviteeAccepted);
OpenIMSDK.on(OpenIMEvent.OnInviteeRejected, handleInviteeRejected);
OpenIMSDK.on(OpenIMEvent.OnInvitationCancelled, handleInvitationCancelled);
OpenIMSDK.on(OpenIMEvent.OnInvitationTimeout, handleInvitationTimeout);
OpenIMSDK.on(OpenIMEvent.OnInviteeAcceptedByOtherDevice, handleInviteeAcceptedByOtherDevice);
OpenIMSDK.on(OpenIMEvent.OnInviteeRejectedByOtherDevice, handleInviteeRejectedByOtherDevice);
OpenIMSDK.on(OpenIMEvent.OnHangUp, handleHangUp);
OpenIMSDK.on(OpenIMEvent.OnRoomParticipantConnected, handleRoomParticipantConnected);
OpenIMSDK.on(OpenIMEvent.OnRoomParticipantDisconnected, handleRoomParticipantDisconnected);
OpenIMSDK.on(OpenIMEvent.OnStreamChange, handleStreamChange);

// 取消监听
OpenIMSDK.off(OpenIMEvent.OnReceiveNewInvitation, handleReceiveNewInvitation);
OpenIMSDK.off(OpenIMEvent.OnInviteeAccepted, handleInviteeAccepted);
OpenIMSDK.off(OpenIMEvent.OnInviteeRejected, handleInviteeRejected);
OpenIMSDK.off(OpenIMEvent.OnInvitationCancelled, handleInvitationCancelled);
OpenIMSDK.off(OpenIMEvent.OnInvitationTimeout, handleInvitationTimeout);
OpenIMSDK.off(OpenIMEvent.OnInviteeAcceptedByOtherDevice, handleInviteeAcceptedByOtherDevice);
OpenIMSDK.off(OpenIMEvent.OnInviteeRejectedByOtherDevice, handleInviteeRejectedByOtherDevice);
OpenIMSDK.off(OpenIMEvent.OnHangUp, handleHangUp);
OpenIMSDK.off(OpenIMEvent.OnRoomParticipantConnected, handleRoomParticipantConnected);
OpenIMSDK.off(OpenIMEvent.OnRoomParticipantDisconnected, handleRoomParticipantDisconnected);
OpenIMSDK.off(OpenIMEvent.OnStreamChange, handleStreamChange);

组件销毁、退出登录或切换账号时,应取消监听。