main
hrxiang 2 years ago
parent 099cb9849a
commit b8a51374a3
  1. 2
      CHANGELOG.md
  2. 2
      android/build.gradle
  3. 5
      android/src/main/java/io/openim/flutter_openim_sdk/listener/OnSignalingListener.java
  4. 8
      android/src/main/java/io/openim/flutter_openim_sdk/manager/SignalingManager.java
  5. 2
      example/pubspec.lock
  6. 5
      ios/Classes/Module/ConversationManager.swift
  7. 10
      ios/Classes/Module/SignalingManager.swift
  8. 6
      lib/src/listener/signaling_listener.dart
  9. 8
      lib/src/manager/im_manager.dart
  10. 12
      lib/src/manager/im_message_manager.dart
  11. 16
      lib/src/manager/im_signaling_manager.dart
  12. 3
      lib/src/models/message.dart
  13. 19
      lib/src/models/signaling_info.dart

@ -2,6 +2,8 @@
- Fix bug - Fix bug
- Add setOneConversationBurnDuration method for ConversationManager - Add setOneConversationBurnDuration method for ConversationManager
- Add signalingSendCustomSignal method for SignalingManager
- Add onReceiveCustomSignal listener for OnSignalingListener
- Add burnDuration field for ConversationInfo - Add burnDuration field for ConversationInfo
- Add burnDuration field for AttachedInfoElem - Add burnDuration field for AttachedInfoElem

@ -34,5 +34,5 @@ android {
} }
} }
dependencies { dependencies {
api 'io.openim:core-sdk:2.3.4-rc4@aar' api 'io.openim:core-sdk:2.3.4-rc6@aar'
} }

@ -34,6 +34,11 @@ public class OnSignalingListener implements open_im_sdk_callback.OnSignalingList
CommonUtil.emitEvent("signalingListener", "onInviteeRejectedByOtherDevice", s); CommonUtil.emitEvent("signalingListener", "onInviteeRejectedByOtherDevice", s);
} }
@Override
public void onReceiveCustomSignal(String s) {
CommonUtil.emitEvent("signalingListener", "onReceiveCustomSignal", s);
}
@Override @Override
public void onReceiveNewInvitation(String s) { public void onReceiveNewInvitation(String s) {
CommonUtil.emitEvent("signalingListener", "onReceiveNewInvitation", s); CommonUtil.emitEvent("signalingListener", "onReceiveNewInvitation", s);

@ -114,4 +114,12 @@ public class SignalingManager extends BaseManager {
value(methodCall, "operationID"), value(methodCall, "operationID"),
value(methodCall, "roomID")); value(methodCall, "roomID"));
} }
public void signalingSendCustomSignal(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.signalingSendCustomSignal(
new OnBaseListener(result, methodCall),
value(methodCall, "operationID"),
value(methodCall, "customInfo"),
value(methodCall, "roomID"));
}
} }

@ -61,7 +61,7 @@ packages:
path: ".." path: ".."
relative: true relative: true
source: path source: path
version: "2.3.4+1" version: "2.3.4+5"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter

@ -25,6 +25,7 @@ public class ConversationManager: BaseServiceManager {
self["resetConversationGroupAtType"] = resetConversationGroupAtType self["resetConversationGroupAtType"] = resetConversationGroupAtType
self["getAtAllTag"] = getAtAllTag self["getAtAllTag"] = getAtAllTag
self["setGlobalRecvMessageOpt"] = setGlobalRecvMessageOpt self["setGlobalRecvMessageOpt"] = setGlobalRecvMessageOpt
self["setOneConversationBurnDuration"] = setOneConversationBurnDuration
} }
func setConversationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func setConversationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -108,6 +109,10 @@ public class ConversationManager: BaseServiceManager {
func setGlobalRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func setGlobalRecvMessageOpt(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkSetGlobalRecvMessageOpt(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "status"]) Open_im_sdkSetGlobalRecvMessageOpt(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int: "status"])
} }
func setOneConversationBurnDuration(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkSetOneConversationBurnDuration(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[int32: "burnDuration"])
}
} }

@ -20,6 +20,7 @@ public class SignalingManager: BaseServiceManager {
self["signalingOperateStream"] = signalingOperateStream self["signalingOperateStream"] = signalingOperateStream
self["signalingGetMeetings"] = signalingGetMeetings self["signalingGetMeetings"] = signalingGetMeetings
self["signalingCloseRoom"] = signalingCloseRoom self["signalingCloseRoom"] = signalingCloseRoom
self["signalingSendCustomSignal"] = signalingSendCustomSignal
} }
func setSignalingListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func setSignalingListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -82,8 +83,13 @@ public class SignalingManager: BaseServiceManager {
func signalingCloseRoom(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func signalingCloseRoom(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkSignalingCloseRoom(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "roomID"]) Open_im_sdkSignalingCloseRoom(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "roomID"])
} }
func signalingSendCustomSignal(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkSignalingSendCustomSignal(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "customInfo"], methodCall[string: "roomID"])
}
} }
public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListenerProtocol { public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListenerProtocol {
private let channel:FlutterMethodChannel private let channel:FlutterMethodChannel
@ -135,4 +141,8 @@ public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListene
CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onStreamChange", errCode: nil, errMsg: nil, data: s) CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onStreamChange", errCode: nil, errMsg: nil, data: s)
} }
public func onReceiveCustomSignal(_ s: String?) {
CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onReceiveCustomSignal", errCode: nil, errMsg: nil, data: s)
}
} }

@ -13,6 +13,7 @@ class OnSignalingListener {
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;
OnSignalingListener({ OnSignalingListener({
this.onInvitationCancelled, this.onInvitationCancelled,
@ -26,6 +27,7 @@ class OnSignalingListener {
this.onRoomParticipantConnected, this.onRoomParticipantConnected,
this.onRoomParticipantDisconnected, this.onRoomParticipantDisconnected,
this.onMeetingStreamChanged, this.onMeetingStreamChanged,
this.onReceiveCustomSignal,
}); });
/// ///
@ -79,4 +81,8 @@ class OnSignalingListener {
void streamChangedEvent(MeetingStreamEvent event) { void streamChangedEvent(MeetingStreamEvent event) {
onMeetingStreamChanged?.call(event); onMeetingStreamChanged?.call(event);
} }
void receiveCustomSignal(CustomSignaling info) {
onReceiveCustomSignal?.call(info);
}
} }

@ -254,6 +254,9 @@ class IMManager {
info = info =
Utils.toObj(data, (map) => MeetingStreamEvent.fromJson(map)); Utils.toObj(data, (map) => MeetingStreamEvent.fromJson(map));
break; break;
case 'onReceiveCustomSignal':
info = Utils.toObj(data, (map) => CustomSignaling.fromJson(map));
break;
default: default:
info = Utils.toObj(data, (map) => SignalingInfo.fromJson(map)); info = Utils.toObj(data, (map) => SignalingInfo.fromJson(map));
break; break;
@ -292,6 +295,9 @@ class IMManager {
case 'onStreamChange': case 'onStreamChange':
signalingManager.listener.streamChangedEvent(info); signalingManager.listener.streamChangedEvent(info);
break; break;
case 'onReceiveCustomSignal':
signalingManager.listener.receiveCustomSignal(info);
break;
} }
} else if (call.method == ListenerType.workMomentsListener) { } else if (call.method == ListenerType.workMomentsListener) {
String type = call.arguments['type']; String type = call.arguments['type'];
@ -332,6 +338,7 @@ class IMManager {
int logLevel = 6, int logLevel = 6,
String objectStorage = 'cos', String objectStorage = 'cos',
String? encryptionKey, String? encryptionKey,
bool enabledEncryption = false,
String? operationID, String? operationID,
}) { }) {
this._connectListener = listener; this._connectListener = listener;
@ -347,6 +354,7 @@ class IMManager {
"log_level": logLevel, "log_level": logLevel,
"object_storage": objectStorage, "object_storage": objectStorage,
"encryption_key": encryptionKey, "encryption_key": encryptionKey,
"is_need_encryption": enabledEncryption,
"operationID": Utils.checkOperationID(operationID), "operationID": Utils.checkOperationID(operationID),
}, },
)); ));

@ -823,9 +823,9 @@ class MessageManager {
.invokeMethod( .invokeMethod(
'createImageMessageByURL', 'createImageMessageByURL',
_buildParam({ _buildParam({
'sourcePicture': sourcePicture, 'sourcePicture': sourcePicture.toJson(),
'bigPicture': bigPicture, 'bigPicture': bigPicture.toJson(),
'snapshotPicture': snapshotPicture, 'snapshotPicture': snapshotPicture.toJson(),
"operationID": Utils.checkOperationID(operationID), "operationID": Utils.checkOperationID(operationID),
}), }),
) )
@ -840,7 +840,7 @@ class MessageManager {
.invokeMethod( .invokeMethod(
'createSoundMessageByURL', 'createSoundMessageByURL',
_buildParam({ _buildParam({
'soundElem': soundElem, 'soundElem': soundElem.toJson(),
"operationID": Utils.checkOperationID(operationID), "operationID": Utils.checkOperationID(operationID),
}), }),
) )
@ -855,7 +855,7 @@ class MessageManager {
.invokeMethod( .invokeMethod(
'createVideoMessageByURL', 'createVideoMessageByURL',
_buildParam({ _buildParam({
'videoElem': videoElem, 'videoElem': videoElem.toJson(),
"operationID": Utils.checkOperationID(operationID), "operationID": Utils.checkOperationID(operationID),
})) }))
.then((value) => Utils.toObj(value, (map) => Message.fromJson(map))); .then((value) => Utils.toObj(value, (map) => Message.fromJson(map)));
@ -869,7 +869,7 @@ class MessageManager {
.invokeMethod( .invokeMethod(
'createFileMessageByURL', 'createFileMessageByURL',
_buildParam({ _buildParam({
'fileElem': fileElem, 'fileElem': fileElem.toJson(),
"operationID": Utils.checkOperationID(operationID), "operationID": Utils.checkOperationID(operationID),
})) }))
.then((value) => Utils.toObj(value, (map) => Message.fromJson(map))); .then((value) => Utils.toObj(value, (map) => Message.fromJson(map)));

@ -281,6 +281,22 @@ class SignalingManager {
'operationID': Utils.checkOperationID(operationID), '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) { static Map _buildParam(Map param) {
param["ManagerName"] = "signalingManager"; param["ManagerName"] = "signalingManager";
return param; return param;

@ -790,7 +790,8 @@ class AttachedInfoElem {
/// ///
int? hasReadTime; int? hasReadTime;
/// /// s
/// hasReadTime时间算起burnDuration秒触发销毁
int? burnDuration; int? burnDuration;
/// 线 /// 线

@ -224,3 +224,22 @@ class Participant {
return data; return data;
} }
} }
class CustomSignaling {
String? roomID;
String? customInfo;
CustomSignaling({this.roomID, this.customInfo});
CustomSignaling.fromJson(Map<String, dynamic> json) {
roomID = json['roomID'];
customInfo = json['customInfo'];
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
data['roomID'] = roomID;
data['customInfo'] = customInfo;
return data;
}
}

Loading…
Cancel
Save