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

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

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

Loading…
Cancel
Save