浏览 SDKs · Flutter
平台
SDKsFlutter商业版

处理通话事件

集中设置 Flutter SDK 的通话信令 listener。

复制

应用初始化通话模块时集中设置一次 OnSignalingListener:

Future<void> registerCallListener() {
  return OpenIM.iMManager.signalingManager.setSignalingListener(
    OnSignalingListener(
      onReceiveNewInvitation: handleIncomingCall,
      onInviteeAccepted: handleInviteeAccepted,
      onInviteeRejected: handleInviteeRejected,
      onInvitationCancelled: handleInvitationCancelled,
      onInvitationTimeout: handleInvitationTimeout,
      onInviteeAcceptedByOtherDevice: handleAcceptedElsewhere,
      onInviteeRejectedByOtherDevice: handleRejectedElsewhere,
      onHangup: handleHangup,
      onRoomParticipantConnected: handleParticipantConnected,
      onRoomParticipantDisconnected: handleParticipantDisconnected,
      onStreamChange: handleStreamChange,
    ),
  );
}

通话事件涵盖邀请生命周期、成员进出与媒体流状态变更。客户端应以 roomID 作为通话状态合并标识,参与者状态结合用户 ID 进行合并维护。自定义信令事件监听请参考发送自定义信令。

SignalingManager 只保存一个 listener 实例,后一次设置会覆盖先前设置的回调。由于 SDK 未提供注销方法,退出登录或切换账号时,应用应停止向旧状态写入,并在新账号登录后重新传入完整的 listener 实例进行覆盖。