Update to 3.0

main
hrxiang 2 years ago
parent 5bdb9879a7
commit 7995c4af1d
  1. 176
      lib/src/listener/signaling_listener.dart
  2. 9
      lib/src/manager/im_manager.dart
  3. 614
      lib/src/manager/im_signaling_manager.dart

@ -1,88 +1,88 @@
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
///
class OnSignalingListener {
final Function(SignalingInfo info)? onInvitationCancelled;
final Function(SignalingInfo info)? onInvitationTimeout;
final Function(SignalingInfo info)? onInviteeAccepted;
final Function(SignalingInfo info)? onInviteeRejected;
final Function(SignalingInfo info)? onReceiveNewInvitation;
final Function(SignalingInfo info)? onInviteeRejectedByOtherDevice;
final Function(SignalingInfo info)? onInviteeAcceptedByOtherDevice;
final Function(SignalingInfo info)? onHangup;
final Function(RoomCallingInfo info)? onRoomParticipantConnected;
final Function(RoomCallingInfo info)? onRoomParticipantDisconnected;
final Function(MeetingStreamEvent event)? onMeetingStreamChanged;
final Function(CustomSignaling info)? onReceiveCustomSignal;
OnSignalingListener({
this.onInvitationCancelled,
this.onInvitationTimeout,
this.onInviteeAccepted,
this.onInviteeRejected,
this.onReceiveNewInvitation,
this.onInviteeAcceptedByOtherDevice,
this.onInviteeRejectedByOtherDevice,
this.onHangup,
this.onRoomParticipantConnected,
this.onRoomParticipantDisconnected,
this.onMeetingStreamChanged,
this.onReceiveCustomSignal,
});
///
void invitationCancelled(SignalingInfo info) {
onInvitationCancelled?.call(info);
}
///
void invitationTimeout(SignalingInfo info) {
onInvitationTimeout?.call(info);
}
///
void inviteeAccepted(SignalingInfo info) {
onInviteeAccepted?.call(info);
}
///
void inviteeRejected(SignalingInfo info) {
onInviteeRejected?.call(info);
}
///
void receiveNewInvitation(SignalingInfo info) {
onReceiveNewInvitation?.call(info);
}
/// pc上会收到此回调
void inviteeAcceptedByOtherDevice(SignalingInfo info) {
onInviteeAcceptedByOtherDevice?.call(info);
}
/// pc上会收到此回调
void inviteeRejectedByOtherDevice(SignalingInfo info) {
onInviteeRejectedByOtherDevice?.call(info);
}
///
void hangup(SignalingInfo info) {
onHangup?.call(info);
}
void roomParticipantConnected(RoomCallingInfo info) {
onRoomParticipantConnected?.call(info);
}
void roomParticipantDisconnected(RoomCallingInfo info) {
onRoomParticipantDisconnected?.call(info);
}
void streamChangedEvent(MeetingStreamEvent event) {
onMeetingStreamChanged?.call(event);
}
void receiveCustomSignal(CustomSignaling info) {
onReceiveCustomSignal?.call(info);
}
}
// import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
//
// ///
// class OnSignalingListener {
// final Function(SignalingInfo info)? onInvitationCancelled;
// final Function(SignalingInfo info)? onInvitationTimeout;
// final Function(SignalingInfo info)? onInviteeAccepted;
// final Function(SignalingInfo info)? onInviteeRejected;
// final Function(SignalingInfo info)? onReceiveNewInvitation;
// final Function(SignalingInfo info)? onInviteeRejectedByOtherDevice;
// final Function(SignalingInfo info)? onInviteeAcceptedByOtherDevice;
// final Function(SignalingInfo info)? onHangup;
// final Function(RoomCallingInfo info)? onRoomParticipantConnected;
// final Function(RoomCallingInfo info)? onRoomParticipantDisconnected;
// final Function(MeetingStreamEvent event)? onMeetingStreamChanged;
// final Function(CustomSignaling info)? onReceiveCustomSignal;
//
// OnSignalingListener({
// this.onInvitationCancelled,
// this.onInvitationTimeout,
// this.onInviteeAccepted,
// this.onInviteeRejected,
// this.onReceiveNewInvitation,
// this.onInviteeAcceptedByOtherDevice,
// this.onInviteeRejectedByOtherDevice,
// this.onHangup,
// this.onRoomParticipantConnected,
// this.onRoomParticipantDisconnected,
// this.onMeetingStreamChanged,
// this.onReceiveCustomSignal,
// });
//
// ///
// void invitationCancelled(SignalingInfo info) {
// onInvitationCancelled?.call(info);
// }
//
// ///
// void invitationTimeout(SignalingInfo info) {
// onInvitationTimeout?.call(info);
// }
//
// ///
// void inviteeAccepted(SignalingInfo info) {
// onInviteeAccepted?.call(info);
// }
//
// ///
// void inviteeRejected(SignalingInfo info) {
// onInviteeRejected?.call(info);
// }
//
// ///
// void receiveNewInvitation(SignalingInfo info) {
// onReceiveNewInvitation?.call(info);
// }
//
// /// pc上会收到此回调
// void inviteeAcceptedByOtherDevice(SignalingInfo info) {
// onInviteeAcceptedByOtherDevice?.call(info);
// }
//
// /// pc上会收到此回调
// void inviteeRejectedByOtherDevice(SignalingInfo info) {
// onInviteeRejectedByOtherDevice?.call(info);
// }
//
// ///
// void hangup(SignalingInfo info) {
// onHangup?.call(info);
// }
//
// void roomParticipantConnected(RoomCallingInfo info) {
// onRoomParticipantConnected?.call(info);
// }
//
// void roomParticipantDisconnected(RoomCallingInfo info) {
// onRoomParticipantDisconnected?.call(info);
// }
//
// void streamChangedEvent(MeetingStreamEvent event) {
// onMeetingStreamChanged?.call(event);
// }
//
// void receiveCustomSignal(CustomSignaling info) {
// onReceiveCustomSignal?.call(info);
// }
// }

@ -14,7 +14,7 @@ class IMManager {
late UserManager userManager;
// late OfflinePushManager offlinePushManager;
late SignalingManager signalingManager;
// late SignalingManager signalingManager;
// late WorkMomentsManager workMomentsManager;
// late OrganizationManager organizationManager;
@ -35,7 +35,7 @@ class IMManager {
groupManager = GroupManager(_channel);
userManager = UserManager(_channel);
// offlinePushManager = OfflinePushManager(_channel);
signalingManager = SignalingManager(_channel);
// signalingManager = SignalingManager(_channel);
// workMomentsManager = WorkMomentsManager(_channel);
// organizationManager = OrganizationManager(_channel);
_addNativeCallback(_channel);
@ -278,7 +278,8 @@ class IMManager {
friendshipManager.listener.friendInfoChanged(u);
break;
}
} else if (call.method == ListenerType.signalingListener) {
}
/*else if (call.method == ListenerType.signalingListener) {
String type = call.arguments['type'];
dynamic data = call.arguments['data'];
dynamic info;
@ -337,7 +338,7 @@ class IMManager {
break;
}
}
/*else if (call.method == ListenerType.workMomentsListener) {
else if (call.method == ListenerType.workMomentsListener) {
String type = call.arguments['type'];
switch (type) {
case 'OnRecvNewNotification':

@ -1,307 +1,307 @@
import 'package:flutter/services.dart';
import '../../flutter_openim_sdk.dart';
class SignalingManager {
MethodChannel _channel;
late OnSignalingListener listener;
SignalingManager(this._channel);
///
Future setSignalingListener(OnSignalingListener listener) {
this.listener = listener;
return _channel.invokeMethod('setSignalingListener', _buildParam({}));
}
///
/// [info] [SignalingInfo]
Future<SignalingCertificate> signalingInvite({
required SignalingInfo info,
String? operationID,
}) =>
_channel
.invokeMethod(
'signalingInvite',
_buildParam({
'signalingInfo': info.toJson(),
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) =>
Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
///
/// [info] [SignalingInfo]
Future<SignalingCertificate> signalingInviteInGroup({
required SignalingInfo info,
String? operationID,
}) =>
_channel
.invokeMethod(
'signalingInviteInGroup',
_buildParam({
'signalingInfo': info.toJson(),
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) =>
Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
///
/// [info] [SignalingInfo]
Future<SignalingCertificate> signalingAccept({
required SignalingInfo info,
String? operationID,
}) =>
_channel
.invokeMethod(
'signalingAccept',
_buildParam({
'signalingInfo': info.toJson(),
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) =>
Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
///
/// [info] [SignalingInfo]
Future<dynamic> signalingReject({
required SignalingInfo info,
String? operationID,
}) =>
_channel.invokeMethod(
'signalingReject',
_buildParam({
'signalingInfo': info.toJson(),
'operationID': Utils.checkOperationID(operationID),
}));
///
/// [info] [SignalingInfo]
Future<dynamic> signalingCancel({
required SignalingInfo info,
String? operationID,
}) =>
_channel.invokeMethod(
'signalingCancel',
_buildParam({
'signalingInfo': info.toJson(),
'operationID': Utils.checkOperationID(operationID),
}));
///
/// [info] [SignalingInfo]
Future<dynamic> signalingHungUp({
required SignalingInfo info,
String? operationID,
}) =>
_channel.invokeMethod(
'signalingHungUp',
_buildParam({
'signalingInfo': info.toJson(),
'operationID': Utils.checkOperationID(operationID),
}));
///
/// [groupID] ID
Future<RoomCallingInfo> signalingGetRoomByGroupID({
required String groupID,
String? operationID,
}) =>
_channel
.invokeMethod(
'signalingGetRoomByGroupID',
_buildParam({
'groupID': groupID,
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) =>
Utils.toObj(value, (map) => RoomCallingInfo.fromJson(map)));
///
/// [roomID] ID
Future<SignalingCertificate> signalingGetTokenByRoomID({
required String roomID,
String? operationID,
}) =>
_channel
.invokeMethod(
'signalingGetTokenByRoomID',
_buildParam({
'roomID': roomID,
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) => Utils.toObj(
value,
(map) => SignalingCertificate.fromJson(
map..addAll({'roomID': roomID}))));
///
/// required String roomID,
/// String? meetingName,
/// String? ex,
/// int startTime = 0,
/// int endTime = 0,
/// bool participantCanUnmuteSelf = true,
/// bool participantCanEnableVideo = true,
/// bool onlyHostInviteUser = true,
/// bool onlyHostShareScreen = true,
/// bool joinDisableMicrophone = true,
/// bool joinDisableVideo = true,
/// bool isMuteAllVideo = true,
/// bool isMuteAllMicrophone = true,
/// List<String> addCanScreenUserIDList = const [],
/// List<String> reduceCanScreenUserIDList = const [],
/// List<String> addDisableMicrophoneUserIDList = const [],
/// List<String> reduceDisableMicrophoneUserIDList = const [],
/// List<String> addDisableVideoUserIDList = const [],
/// List<String> reduceDisableVideoUserIDList = const [],
/// List<String> addPinedUserIDList = const [],
/// List<String> reducePinedUserIDList = const [],
/// List<String> addBeWatchedUserIDList = const [],
/// List<String> reduceBeWatchedUserIDList = const [],
Future<dynamic> signalingUpdateMeetingInfo({
required Map info,
String? operationID,
}) {
if (info['meetingID'] != null) {
info['roomID'] = info['meetingID'];
}
assert(info['roomID'] != null);
return _channel.invokeMethod(
'signalingUpdateMeetingInfo',
_buildParam({
'info': info,
'operationID': Utils.checkOperationID(operationID),
}));
}
///
/// [meetingName]
/// [meetingHostUserID] ID
/// [startTime] s
/// [meetingDuration] s
/// [inviteeUserIDList] ID列表
/// [ex]
Future<SignalingCertificate> signalingCreateMeeting({
required String meetingName,
String? meetingHostUserID,
int? startTime,
int? meetingDuration,
List<String> inviteeUserIDList = const [],
String? ex,
String? operationID,
}) =>
_channel
.invokeMethod(
'signalingCreateMeeting',
_buildParam({
'info': {
'meetingName': meetingName,
'meetingHostUserID': meetingHostUserID,
'startTime': startTime,
'meetingDuration': meetingDuration,
'inviteeUserIDList': inviteeUserIDList,
'ex': ex,
},
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) =>
Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
///
/// [meetingID] ID
/// [meetingName]
/// [participantNickname]
Future<SignalingCertificate> signalingJoinMeeting({
required String meetingID,
String? meetingName,
String? participantNickname,
String? operationID,
}) =>
_channel
.invokeMethod(
'signalingJoinMeeting',
_buildParam({
'info': {
'meetingID': meetingID,
'meetingName': meetingName,
'participantNickname': participantNickname,
},
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) =>
Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
///
/// [roomID] ID
/// [streamType] video/audio
/// [userID] ID
/// [mute] true
/// [muteAll] truevideo/audio
Future<dynamic> signalingOperateStream({
required String roomID,
String? streamType,
required String userID,
bool mute = false,
bool muteAll = false,
String? operationID,
}) =>
_channel.invokeMethod(
'signalingOperateStream',
_buildParam({
'roomID': roomID,
'streamType': streamType,
'userID': userID,
'mute': mute,
'muteAll': muteAll,
'operationID': Utils.checkOperationID(operationID),
}));
///
/// [roomID] ID
Future<MeetingInfoList> signalingGetMeetings({
String? operationID,
}) =>
_channel
.invokeMethod(
'signalingGetMeetings',
_buildParam({
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) =>
Utils.toObj(value, (map) => MeetingInfoList.fromJson(map)));
///
/// [roomID] ID
Future<dynamic> signalingCloseRoom({
required String roomID,
String? operationID,
}) =>
_channel.invokeMethod(
'signalingCloseRoom',
_buildParam({
'roomID': roomID,
'operationID': Utils.checkOperationID(operationID),
}));
///
/// [roomID] ID
/// [customInfo]
Future<dynamic> signalingSendCustomSignal({
required String roomID,
required String customInfo,
String? operationID,
}) =>
_channel.invokeMethod(
'signalingSendCustomSignal',
_buildParam({
'roomID': roomID,
'customInfo': customInfo,
'operationID': Utils.checkOperationID(operationID),
}));
static Map _buildParam(Map param) {
param["ManagerName"] = "signalingManager";
return param;
}
}
// import 'package:flutter/services.dart';
//
// import '../../flutter_openim_sdk.dart';
//
// class SignalingManager {
// MethodChannel _channel;
// late OnSignalingListener listener;
//
// SignalingManager(this._channel);
//
// ///
// Future setSignalingListener(OnSignalingListener listener) {
// this.listener = listener;
// return _channel.invokeMethod('setSignalingListener', _buildParam({}));
// }
//
// ///
// /// [info] [SignalingInfo]
// Future<SignalingCertificate> signalingInvite({
// required SignalingInfo info,
// String? operationID,
// }) =>
// _channel
// .invokeMethod(
// 'signalingInvite',
// _buildParam({
// 'signalingInfo': info.toJson(),
// 'operationID': Utils.checkOperationID(operationID),
// }))
// .then((value) =>
// Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
//
// ///
// /// [info] [SignalingInfo]
// Future<SignalingCertificate> signalingInviteInGroup({
// required SignalingInfo info,
// String? operationID,
// }) =>
// _channel
// .invokeMethod(
// 'signalingInviteInGroup',
// _buildParam({
// 'signalingInfo': info.toJson(),
// 'operationID': Utils.checkOperationID(operationID),
// }))
// .then((value) =>
// Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
//
// ///
// /// [info] [SignalingInfo]
// Future<SignalingCertificate> signalingAccept({
// required SignalingInfo info,
// String? operationID,
// }) =>
// _channel
// .invokeMethod(
// 'signalingAccept',
// _buildParam({
// 'signalingInfo': info.toJson(),
// 'operationID': Utils.checkOperationID(operationID),
// }))
// .then((value) =>
// Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
//
// ///
// /// [info] [SignalingInfo]
// Future<dynamic> signalingReject({
// required SignalingInfo info,
// String? operationID,
// }) =>
// _channel.invokeMethod(
// 'signalingReject',
// _buildParam({
// 'signalingInfo': info.toJson(),
// 'operationID': Utils.checkOperationID(operationID),
// }));
//
// ///
// /// [info] [SignalingInfo]
// Future<dynamic> signalingCancel({
// required SignalingInfo info,
// String? operationID,
// }) =>
// _channel.invokeMethod(
// 'signalingCancel',
// _buildParam({
// 'signalingInfo': info.toJson(),
// 'operationID': Utils.checkOperationID(operationID),
// }));
//
// ///
// /// [info] [SignalingInfo]
// Future<dynamic> signalingHungUp({
// required SignalingInfo info,
// String? operationID,
// }) =>
// _channel.invokeMethod(
// 'signalingHungUp',
// _buildParam({
// 'signalingInfo': info.toJson(),
// 'operationID': Utils.checkOperationID(operationID),
// }));
//
// ///
// /// [groupID] ID
// Future<RoomCallingInfo> signalingGetRoomByGroupID({
// required String groupID,
// String? operationID,
// }) =>
// _channel
// .invokeMethod(
// 'signalingGetRoomByGroupID',
// _buildParam({
// 'groupID': groupID,
// 'operationID': Utils.checkOperationID(operationID),
// }))
// .then((value) =>
// Utils.toObj(value, (map) => RoomCallingInfo.fromJson(map)));
//
// ///
// /// [roomID] ID
// Future<SignalingCertificate> signalingGetTokenByRoomID({
// required String roomID,
// String? operationID,
// }) =>
// _channel
// .invokeMethod(
// 'signalingGetTokenByRoomID',
// _buildParam({
// 'roomID': roomID,
// 'operationID': Utils.checkOperationID(operationID),
// }))
// .then((value) => Utils.toObj(
// value,
// (map) => SignalingCertificate.fromJson(
// map..addAll({'roomID': roomID}))));
//
// ///
// /// required String roomID,
// /// String? meetingName,
// /// String? ex,
// /// int startTime = 0,
// /// int endTime = 0,
// /// bool participantCanUnmuteSelf = true,
// /// bool participantCanEnableVideo = true,
// /// bool onlyHostInviteUser = true,
// /// bool onlyHostShareScreen = true,
// /// bool joinDisableMicrophone = true,
// /// bool joinDisableVideo = true,
// /// bool isMuteAllVideo = true,
// /// bool isMuteAllMicrophone = true,
// /// List<String> addCanScreenUserIDList = const [],
// /// List<String> reduceCanScreenUserIDList = const [],
// /// List<String> addDisableMicrophoneUserIDList = const [],
// /// List<String> reduceDisableMicrophoneUserIDList = const [],
// /// List<String> addDisableVideoUserIDList = const [],
// /// List<String> reduceDisableVideoUserIDList = const [],
// /// List<String> addPinedUserIDList = const [],
// /// List<String> reducePinedUserIDList = const [],
// /// List<String> addBeWatchedUserIDList = const [],
// /// List<String> reduceBeWatchedUserIDList = const [],
// Future<dynamic> signalingUpdateMeetingInfo({
// required Map info,
// String? operationID,
// }) {
// if (info['meetingID'] != null) {
// info['roomID'] = info['meetingID'];
// }
// assert(info['roomID'] != null);
// return _channel.invokeMethod(
// 'signalingUpdateMeetingInfo',
// _buildParam({
// 'info': info,
// 'operationID': Utils.checkOperationID(operationID),
// }));
// }
//
// ///
// /// [meetingName]
// /// [meetingHostUserID] ID
// /// [startTime] s
// /// [meetingDuration] s
// /// [inviteeUserIDList] ID列表
// /// [ex]
// Future<SignalingCertificate> signalingCreateMeeting({
// required String meetingName,
// String? meetingHostUserID,
// int? startTime,
// int? meetingDuration,
// List<String> inviteeUserIDList = const [],
// String? ex,
// String? operationID,
// }) =>
// _channel
// .invokeMethod(
// 'signalingCreateMeeting',
// _buildParam({
// 'info': {
// 'meetingName': meetingName,
// 'meetingHostUserID': meetingHostUserID,
// 'startTime': startTime,
// 'meetingDuration': meetingDuration,
// 'inviteeUserIDList': inviteeUserIDList,
// 'ex': ex,
// },
// 'operationID': Utils.checkOperationID(operationID),
// }))
// .then((value) =>
// Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
//
// ///
// /// [meetingID] ID
// /// [meetingName]
// /// [participantNickname]
// Future<SignalingCertificate> signalingJoinMeeting({
// required String meetingID,
// String? meetingName,
// String? participantNickname,
// String? operationID,
// }) =>
// _channel
// .invokeMethod(
// 'signalingJoinMeeting',
// _buildParam({
// 'info': {
// 'meetingID': meetingID,
// 'meetingName': meetingName,
// 'participantNickname': participantNickname,
// },
// 'operationID': Utils.checkOperationID(operationID),
// }))
// .then((value) =>
// Utils.toObj(value, (map) => SignalingCertificate.fromJson(map)));
//
// ///
// /// [roomID] ID
// /// [streamType] video/audio
// /// [userID] ID
// /// [mute] true
// /// [muteAll] truevideo/audio
// Future<dynamic> signalingOperateStream({
// required String roomID,
// String? streamType,
// required String userID,
// bool mute = false,
// bool muteAll = false,
// String? operationID,
// }) =>
// _channel.invokeMethod(
// 'signalingOperateStream',
// _buildParam({
// 'roomID': roomID,
// 'streamType': streamType,
// 'userID': userID,
// 'mute': mute,
// 'muteAll': muteAll,
// 'operationID': Utils.checkOperationID(operationID),
// }));
//
// ///
// /// [roomID] ID
// Future<MeetingInfoList> signalingGetMeetings({
// String? operationID,
// }) =>
// _channel
// .invokeMethod(
// 'signalingGetMeetings',
// _buildParam({
// 'operationID': Utils.checkOperationID(operationID),
// }))
// .then((value) =>
// Utils.toObj(value, (map) => MeetingInfoList.fromJson(map)));
//
// ///
// /// [roomID] ID
// Future<dynamic> signalingCloseRoom({
// required String roomID,
// String? operationID,
// }) =>
// _channel.invokeMethod(
// 'signalingCloseRoom',
// _buildParam({
// 'roomID': roomID,
// 'operationID': Utils.checkOperationID(operationID),
// }));
//
// ///
// /// [roomID] ID
// /// [customInfo]
// Future<dynamic> signalingSendCustomSignal({
// required String roomID,
// required String customInfo,
// String? operationID,
// }) =>
// _channel.invokeMethod(
// 'signalingSendCustomSignal',
// _buildParam({
// 'roomID': roomID,
// 'customInfo': customInfo,
// 'operationID': Utils.checkOperationID(operationID),
// }));
//
// static Map _buildParam(Map param) {
// param["ManagerName"] = "signalingManager";
// return param;
// }
// }

Loading…
Cancel
Save