Add signaling function
This commit is contained in:
@@ -3,14 +3,14 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||
|
||||
class ConversationManager {
|
||||
MethodChannel _channel;
|
||||
late OnConversationListener conversationListener;
|
||||
late OnConversationListener listener;
|
||||
|
||||
ConversationManager(this._channel);
|
||||
|
||||
/// Observe conversation changes
|
||||
/// 会话监听
|
||||
Future setConversationListener(OnConversationListener listener) {
|
||||
this.conversationListener = listener;
|
||||
this.listener = listener;
|
||||
return _channel.invokeMethod('setConversationListener', _buildParam({}));
|
||||
}
|
||||
|
||||
@@ -191,18 +191,18 @@ class ConversationManager {
|
||||
/// Message Do Not Disturb
|
||||
/// [{"conversationId":"single_13922222222","result":0}]
|
||||
/// 查询免打扰状态
|
||||
Future<List<dynamic>> getConversationRecvMessageOpt({
|
||||
required List<String> conversationIDList,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'getConversationRecvMessageOpt',
|
||||
_buildParam({
|
||||
"conversationIDList": conversationIDList,
|
||||
"operationID": Utils.checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => Utils.toListMap(value));
|
||||
// Future<List<dynamic>> getConversationRecvMessageOpt({
|
||||
// required List<String> conversationIDList,
|
||||
// String? operationID,
|
||||
// }) =>
|
||||
// _channel
|
||||
// .invokeMethod(
|
||||
// 'getConversationRecvMessageOpt',
|
||||
// _buildParam({
|
||||
// "conversationIDList": conversationIDList,
|
||||
// "operationID": Utils.checkOperationID(operationID),
|
||||
// }))
|
||||
// .then((value) => Utils.toListMap(value));
|
||||
|
||||
/// Custom sort for conversation list
|
||||
/// 会话列表自定义排序规则。
|
||||
|
||||
@@ -3,14 +3,14 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||
|
||||
class FriendshipManager {
|
||||
MethodChannel _channel;
|
||||
late OnFriendshipListener friendshipListener;
|
||||
late OnFriendshipListener listener;
|
||||
|
||||
FriendshipManager(this._channel);
|
||||
|
||||
/// Set up a friend relationship listener
|
||||
/// 好友关系监听
|
||||
Future setFriendshipListener(OnFriendshipListener listener) {
|
||||
this.friendshipListener = listener;
|
||||
this.listener = listener;
|
||||
return _channel.invokeMethod('setFriendListener', _buildParam({}));
|
||||
}
|
||||
|
||||
|
||||
@@ -3,14 +3,14 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||
|
||||
class GroupManager {
|
||||
MethodChannel _channel;
|
||||
late OnGroupListener groupListener;
|
||||
late OnGroupListener listener;
|
||||
|
||||
GroupManager(this._channel);
|
||||
|
||||
/// Set up group relationship monitoring
|
||||
/// 组关系监听
|
||||
Future setGroupListener(OnGroupListener listener) {
|
||||
this.groupListener = listener;
|
||||
this.listener = listener;
|
||||
return _channel.invokeMethod('setGroupListener', _buildParam({}));
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,8 @@ class IMManager {
|
||||
late UserManager userManager;
|
||||
|
||||
// late OfflinePushManager offlinePushManager;
|
||||
// late SignalingManager signalingManager;
|
||||
late SignalingManager signalingManager;
|
||||
|
||||
late OnConnectListener _connectListener;
|
||||
late String uid;
|
||||
late UserInfo uInfo;
|
||||
@@ -25,7 +26,7 @@ class IMManager {
|
||||
groupManager = GroupManager(_channel);
|
||||
userManager = UserManager(_channel);
|
||||
// offlinePushManager = OfflinePushManager(_channel);
|
||||
// signalingManager = SignalingManager(_channel);
|
||||
signalingManager = SignalingManager(_channel);
|
||||
_addNativeCallback(_channel);
|
||||
}
|
||||
|
||||
@@ -60,7 +61,7 @@ class IMManager {
|
||||
switch (type) {
|
||||
case 'onSelfInfoUpdated':
|
||||
uInfo = Utils.toObj(data, (map) => UserInfo.fromJson(map));
|
||||
userManager.userListener.selfInfoUpdated(uInfo);
|
||||
userManager.listener.selfInfoUpdated(uInfo);
|
||||
break;
|
||||
}
|
||||
} else if (call.method == ListenerType.groupListener) {
|
||||
@@ -70,49 +71,49 @@ class IMManager {
|
||||
case 'onGroupApplicationAccepted':
|
||||
final i = Utils.toObj(
|
||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
||||
groupManager.groupListener.groupApplicationAccepted(i);
|
||||
groupManager.listener.groupApplicationAccepted(i);
|
||||
break;
|
||||
case 'onGroupApplicationAdded':
|
||||
final i = Utils.toObj(
|
||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
||||
groupManager.groupListener.groupApplicationAdded(i);
|
||||
groupManager.listener.groupApplicationAdded(i);
|
||||
break;
|
||||
case 'onGroupApplicationDeleted':
|
||||
final i = Utils.toObj(
|
||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
||||
groupManager.groupListener.groupApplicationDeleted(i);
|
||||
groupManager.listener.groupApplicationDeleted(i);
|
||||
break;
|
||||
case 'onGroupApplicationRejected':
|
||||
final i = Utils.toObj(
|
||||
data, (map) => GroupApplicationInfo.fromJson(map));
|
||||
groupManager.groupListener.groupApplicationRejected(i);
|
||||
groupManager.listener.groupApplicationRejected(i);
|
||||
break;
|
||||
case 'onGroupInfoChanged':
|
||||
final i = Utils.toObj(data, (map) => GroupInfo.fromJson(map));
|
||||
groupManager.groupListener.groupInfoChanged(i);
|
||||
groupManager.listener.groupInfoChanged(i);
|
||||
break;
|
||||
case 'onGroupMemberAdded':
|
||||
final i =
|
||||
Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
||||
groupManager.groupListener.groupMemberAdded(i);
|
||||
groupManager.listener.groupMemberAdded(i);
|
||||
break;
|
||||
case 'onGroupMemberDeleted':
|
||||
final i =
|
||||
Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
||||
groupManager.groupListener.groupMemberDeleted(i);
|
||||
groupManager.listener.groupMemberDeleted(i);
|
||||
break;
|
||||
case 'onGroupMemberInfoChanged':
|
||||
final i =
|
||||
Utils.toObj(data, (map) => GroupMembersInfo.fromJson(map));
|
||||
groupManager.groupListener.groupMemberInfoChanged(i);
|
||||
groupManager.listener.groupMemberInfoChanged(i);
|
||||
break;
|
||||
case 'onJoinedGroupAdded':
|
||||
final i = Utils.toObj(data, (map) => GroupInfo.fromJson(map));
|
||||
groupManager.groupListener.joinedGroupAdded(i);
|
||||
groupManager.listener.joinedGroupAdded(i);
|
||||
break;
|
||||
case 'onJoinedGroupDeleted':
|
||||
final i = Utils.toObj(data, (map) => GroupInfo.fromJson(map));
|
||||
groupManager.groupListener.joinedGroupDeleted(i);
|
||||
groupManager.listener.joinedGroupDeleted(i);
|
||||
break;
|
||||
}
|
||||
} else if (call.method == ListenerType.advancedMsgListener) {
|
||||
@@ -153,28 +154,27 @@ class IMManager {
|
||||
dynamic data = call.arguments['data'];
|
||||
switch (type) {
|
||||
case 'onSyncServerStart':
|
||||
conversationManager.conversationListener.syncServerStart();
|
||||
conversationManager.listener.syncServerStart();
|
||||
break;
|
||||
case 'onSyncServerFinish':
|
||||
conversationManager.conversationListener.syncServerFinish();
|
||||
conversationManager.listener.syncServerFinish();
|
||||
break;
|
||||
|
||||
case 'onSyncServerFailed':
|
||||
conversationManager.conversationListener.syncServerFailed();
|
||||
conversationManager.listener.syncServerFailed();
|
||||
break;
|
||||
case 'onNewConversation':
|
||||
var list =
|
||||
Utils.toList(data, (map) => ConversationInfo.fromJson(map));
|
||||
conversationManager.conversationListener.newConversation(list);
|
||||
conversationManager.listener.newConversation(list);
|
||||
break;
|
||||
case 'onConversationChanged':
|
||||
var list =
|
||||
Utils.toList(data, (map) => ConversationInfo.fromJson(map));
|
||||
conversationManager.conversationListener
|
||||
.conversationChanged(list);
|
||||
conversationManager.listener.conversationChanged(list);
|
||||
break;
|
||||
case 'onTotalUnreadMessageCountChanged':
|
||||
conversationManager.conversationListener
|
||||
conversationManager.listener
|
||||
.totalUnreadMessageCountChanged(data ?? 0);
|
||||
break;
|
||||
}
|
||||
@@ -185,43 +185,64 @@ class IMManager {
|
||||
switch (type) {
|
||||
case 'onBlacklistAdded':
|
||||
final u = Utils.toObj(data, (map) => BlacklistInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.blacklistAdded(u);
|
||||
friendshipManager.listener.blacklistAdded(u);
|
||||
break;
|
||||
case 'onBlacklistDeleted':
|
||||
final u = Utils.toObj(data, (map) => BlacklistInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.blacklistDeleted(u);
|
||||
friendshipManager.listener.blacklistDeleted(u);
|
||||
break;
|
||||
case 'onFriendApplicationAccepted':
|
||||
final u = Utils.toObj(
|
||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.friendApplicationAccepted(u);
|
||||
friendshipManager.listener.friendApplicationAccepted(u);
|
||||
break;
|
||||
case 'onFriendApplicationAdded':
|
||||
final u = Utils.toObj(
|
||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.friendApplicationAdded(u);
|
||||
friendshipManager.listener.friendApplicationAdded(u);
|
||||
break;
|
||||
case 'onFriendApplicationDeleted':
|
||||
final u = Utils.toObj(
|
||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.friendApplicationDeleted(u);
|
||||
friendshipManager.listener.friendApplicationDeleted(u);
|
||||
break;
|
||||
case 'onFriendApplicationListRejected':
|
||||
final u = Utils.toObj(
|
||||
data, (map) => FriendApplicationInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.friendApplicationRejected(u);
|
||||
friendshipManager.listener.friendApplicationRejected(u);
|
||||
break;
|
||||
case 'onFriendInfoChanged':
|
||||
final u = Utils.toObj(data, (map) => FriendInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.friendInfoChanged(u);
|
||||
friendshipManager.listener.friendInfoChanged(u);
|
||||
break;
|
||||
case 'onFriendAdded':
|
||||
final u = Utils.toObj(data, (map) => FriendInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.friendAdded(u);
|
||||
friendshipManager.listener.friendAdded(u);
|
||||
break;
|
||||
case 'onFriendDeleted':
|
||||
final u = Utils.toObj(data, (map) => FriendInfo.fromJson(map));
|
||||
friendshipManager.friendshipListener.friendDeleted(u);
|
||||
friendshipManager.listener.friendDeleted(u);
|
||||
break;
|
||||
}
|
||||
} else if (call.method == ListenerType.signalingListener) {
|
||||
String type = call.arguments['type'];
|
||||
dynamic data = call.arguments['data'];
|
||||
final u = Utils.toObj(data, (map) => SignalingInfo.fromJson(map));
|
||||
switch (type) {
|
||||
case 'onInvitationCancelled':
|
||||
signalingManager.listener.invitationCancelled(u);
|
||||
break;
|
||||
case 'onInvitationTimeout':
|
||||
signalingManager.listener.invitationTimeout(u);
|
||||
break;
|
||||
case 'onInviteeAccepted':
|
||||
signalingManager.listener.inviteeAccepted(u);
|
||||
break;
|
||||
case 'onInviteeRejected':
|
||||
signalingManager.listener.inviteeRejected(u);
|
||||
break;
|
||||
case 'onReceiveNewInvitation':
|
||||
signalingManager.listener.receiveNewInvitation(u);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,90 @@
|
||||
// import 'package:flutter/services.dart';
|
||||
//
|
||||
// class SignalingManager {
|
||||
// MethodChannel _channel;
|
||||
//
|
||||
// SignalingManager(this._channel);
|
||||
// }
|
||||
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({}));
|
||||
}
|
||||
|
||||
/// 邀请个人加入音视频
|
||||
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)));
|
||||
|
||||
/// 邀请群里某些人加入音视频
|
||||
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)));
|
||||
|
||||
/// 同意某人音视频邀请
|
||||
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)));
|
||||
|
||||
/// 拒绝某人音视频邀请
|
||||
Future<dynamic> signalingReject({
|
||||
required SignalingInfo info,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'signalingReject',
|
||||
_buildParam({
|
||||
'signalingInfo': info.toJson(),
|
||||
'operationID': Utils.checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
/// 邀请者取消音视频通话
|
||||
Future<dynamic> signalingCancel({
|
||||
required SignalingInfo info,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'signalingCancel',
|
||||
_buildParam({
|
||||
'signalingInfo': info.toJson(),
|
||||
'operationID': Utils.checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
static Map _buildParam(Map param) {
|
||||
param["ManagerName"] = "signalingManager";
|
||||
return param;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,14 +3,14 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||
|
||||
class UserManager {
|
||||
MethodChannel _channel;
|
||||
late OnUserListener userListener;
|
||||
late OnUserListener listener;
|
||||
|
||||
UserManager(this._channel);
|
||||
|
||||
/// Observe user info changes
|
||||
/// 用户资料改变监听
|
||||
Future setUserListener(OnUserListener listener) {
|
||||
this.userListener = listener;
|
||||
this.listener = listener;
|
||||
return _channel.invokeMethod('setUserListener', _buildParam({}));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user