main
hrxiang 3 years ago
parent 6edf9b74fa
commit d5e3947878
  1. 5
      CHANGELOG.md
  2. 2
      android/build.gradle
  3. 6
      android/src/main/java/io/openim/flutter_openim_sdk/listener/OnSignalingListener.java
  4. 12
      android/src/main/java/io/openim/flutter_openim_sdk/manager/ConversationManager.java
  5. 7
      android/src/main/java/io/openim/flutter_openim_sdk/manager/GroupManager.java
  6. 8
      android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java
  7. 2
      android/src/main/java/io/openim/flutter_openim_sdk/manager/WorkMomentsManager.java
  8. 10
      ios/Classes/Module/ConversationManager.swift
  9. 5
      ios/Classes/Module/GroupManager.swift
  10. 5
      ios/Classes/Module/MessageManager.swift
  11. 8
      ios/Classes/Module/SignalingManager.swift
  12. 7
      ios/Framework/OpenIMCore.framework/Headers/Open_im_sdk.objc.h
  13. 2
      ios/Framework/OpenIMCore.framework/Headers/Open_im_sdk_callback.objc.h
  14. BIN
      ios/Framework/OpenIMCore.framework/OpenIMCore
  15. 7
      lib/src/listener/signaling_listener.dart
  16. 18
      lib/src/manager/im_conversation_manager.dart
  17. 25
      lib/src/manager/im_group_manager.dart
  18. 3
      lib/src/manager/im_manager.dart
  19. 35
      lib/src/manager/im_message_manager.dart
  20. 13
      lib/src/models/search_info.dart

@ -6,6 +6,11 @@
4.ConverstaionInfo new add isNotInGroup field</br>
5.New at type</br>
6.New work moments</br>
7.New global search</br>
8.New getHistoryMessageListReverse method</br>
9.New getAtAllTag method</br>
10.New resetConversationGroupAtType method</br>
11.New searchGroups method</br>
## 2.0.0+5

@ -41,5 +41,5 @@ android {
}
}
dependencies {
implementation 'io.openim:client-sdk:2.0.42@aar'
implementation 'io.openim:client-sdk:2.0.45@aar'
}

@ -3,6 +3,7 @@ package io.openim.flutter_openim_sdk.listener;
import io.openim.flutter_openim_sdk.util.CommonUtil;
public class OnSignalingListener implements open_im_sdk_callback.OnSignalingListener {
@Override
public void onInvitationCancelled(String s) {
CommonUtil.emitEvent("signalingListener", "onInvitationCancelled", s);
@ -37,4 +38,9 @@ public class OnSignalingListener implements open_im_sdk_callback.OnSignalingList
public void onReceiveNewInvitation(String s) {
CommonUtil.emitEvent("signalingListener", "onReceiveNewInvitation", s);
}
@Override
public void onHangUp(String s) {
CommonUtil.emitEvent("signalingListener", "onHangUp", s);
}
}

@ -142,4 +142,16 @@ public class ConversationManager extends BaseManager {
value(methodCall, "operationID")
);
}
public void resetConversationGroupAtType(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.resetConversationGroupAtType(
new OnBaseListener(result),
value(methodCall, "operationID"),
value(methodCall, "conversationID")
);
}
public void getAtAllTag(MethodCall methodCall, MethodChannel.Result result) {
CommonUtil.runMainThreadReturn(result, Open_im_sdk.getAtAllTag());
}
}

@ -183,4 +183,11 @@ public class GroupManager extends BaseManager {
value(methodCall, "groupNickname")
);
}
public void searchGroups(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.searchGroups(new OnBaseListener(result),
value(methodCall, "operationID"),
jsonValue(methodCall, "searchParam")
);
}
}

@ -381,4 +381,12 @@ public class MessageManager extends BaseManager {
value(methodCall, "groupID")
);
}
public void getHistoryMessageListReverse(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getHistoryMessageListReverse(
new OnBaseListener(result),
value(methodCall, "operationID"),
jsonValue(methodCall)
);
}
}

@ -8,7 +8,7 @@ import open_im_sdk.Open_im_sdk;
public class WorkMomentsManager extends BaseManager {
void setWorkMomentsListener(MethodCall methodCall, MethodChannel.Result result) {
public void setWorkMomentsListener(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setWorkMomentsListener(new OnWorkMomentsListener());
}

@ -22,6 +22,8 @@ public class ConversationManager: BaseServiceManager {
self["setOneConversationPrivateChat"] = setOneConversationPrivateChat
self["deleteConversationFromLocalAndSvr"] = deleteConversationFromLocalAndSvr
self["deleteAllConversationFromLocal"] = deleteAllConversationFromLocal
self["resetConversationGroupAtType"] = resetConversationGroupAtType
self["getAtAllTag"] = getAtAllTag
}
func setConversationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -93,6 +95,14 @@ public class ConversationManager: BaseServiceManager {
func deleteAllConversationFromLocal(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkDeleteAllConversationFromLocal(BaseCallback(result: result), methodCall[string: "operationID"])
}
func resetConversationGroupAtType(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkResetConversationGroupAtType(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
}
func getAtAllTag(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
callBack(result, Open_im_sdkGetAtAllTag())
}
}

@ -25,6 +25,7 @@ public class GroupManager: BaseServiceManager {
self["changeGroupMute"] = changeGroupMute
self["changeGroupMemberMute"] = changeGroupMemberMute
self["setGroupMemberNickname"] = setGroupMemberNickname
self["searchGroups"] = searchGroups
}
func setGroupListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -110,6 +111,10 @@ public class GroupManager: BaseServiceManager {
func setGroupMemberNickname(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkSetGroupMemberNickname(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "gid"], methodCall[string:"uid"],methodCall[string:"groupNickname"])
}
func searchGroups(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkSearchGroups(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"])
}
}
public class GroupListener: NSObject, Open_im_sdk_callbackOnGroupListenerProtocol {

@ -43,6 +43,7 @@ public class MessageManager: BaseServiceManager {
self["markMessageAsReadByConID"] = markMessageAsReadByConID
self["clearC2CHistoryMessageFromLocalAndSvr"] = clearC2CHistoryMessageFromLocalAndSvr
self["clearGroupHistoryMessageFromLocalAndSvr"] = clearGroupHistoryMessageFromLocalAndSvr
self["getHistoryMessageListReverse"] = getHistoryMessageListReverse
}
func setAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -209,6 +210,10 @@ public class MessageManager: BaseServiceManager {
Open_im_sdkClearGroupHistoryMessageFromLocalAndSvr(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
}
func getHistoryMessageListReverse(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkGetHistoryMessageListReverse(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
}
public class SendMsgProgressListener: NSObject, Open_im_sdk_callbackSendMsgCallBackProtocol {
private let channel: FlutterMethodChannel
private let result: FlutterResult

@ -44,7 +44,7 @@ public class SignalingManager: BaseServiceManager {
}
}
public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListenerProtocol {
private let channel:FlutterMethodChannel
init(channel:FlutterMethodChannel) {
@ -78,5 +78,9 @@ public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListene
public func onReceiveNewInvitation(_ s: String?) {
CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onReceiveNewInvitation", errCode: nil, errMsg: nil, data: s)
}
public func onHangUp(_ s: String?) {
CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onHangUp", errCode: nil, errMsg: nil, data: s)
}
}

@ -120,6 +120,9 @@ FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkGetConversationIDBySessionType(N
FOUNDATION_EXPORT void Open_im_sdkGetConversationListSplit(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, long offset, long count);
/**
* deprecated
*/
FOUNDATION_EXPORT void Open_im_sdkGetConversationRecvMessageOpt(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationIDList);
FOUNDATION_EXPORT void Open_im_sdkGetDepartmentMember(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable departmentID, long offset, long count);
@ -138,6 +141,8 @@ FOUNDATION_EXPORT void Open_im_sdkGetGroupsInfo(id<Open_im_sdk_callbackBase> _Nu
FOUNDATION_EXPORT void Open_im_sdkGetHistoryMessageList(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable getMessageOptions);
FOUNDATION_EXPORT void Open_im_sdkGetHistoryMessageListReverse(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable getMessageOptions);
FOUNDATION_EXPORT void Open_im_sdkGetJoinedGroupList(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID);
FOUNDATION_EXPORT int32_t Open_im_sdkGetLoginStatus(void);
@ -225,6 +230,8 @@ FOUNDATION_EXPORT void Open_im_sdkRevokeMessage(id<Open_im_sdk_callbackBase> _Nu
FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkSdkVersion(void);
FOUNDATION_EXPORT void Open_im_sdkSearchGroups(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam);
FOUNDATION_EXPORT void Open_im_sdkSearchLocalMessages(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam);
FOUNDATION_EXPORT void Open_im_sdkSendMessage(id<Open_im_sdk_callbackSendMsgCallBack> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable message, NSString* _Nullable recvID, NSString* _Nullable groupID, NSString* _Nullable offlinePushInfo);

@ -93,6 +93,7 @@
@end
@protocol Open_im_sdk_callbackOnSignalingListener <NSObject>
- (void)onHangUp:(NSString* _Nullable)hangUpCallback;
- (void)onInvitationCancelled:(NSString* _Nullable)invitationCancelledCallback;
- (void)onInvitationTimeout:(NSString* _Nullable)invitationTimeoutCallback;
- (void)onInviteeAccepted:(NSString* _Nullable)inviteeAcceptedCallback;
@ -229,6 +230,7 @@
@property(strong, readonly) _Nonnull id _ref;
- (nonnull instancetype)initWithRef:(_Nonnull id)ref;
- (void)onHangUp:(NSString* _Nullable)hangUpCallback;
- (void)onInvitationCancelled:(NSString* _Nullable)invitationCancelledCallback;
- (void)onInvitationTimeout:(NSString* _Nullable)invitationTimeoutCallback;
- (void)onInviteeAccepted:(NSString* _Nullable)inviteeAcceptedCallback;

@ -8,6 +8,7 @@ class OnSignalingListener {
final Function(SignalingInfo info)? onReceiveNewInvitation;
final Function(SignalingInfo info)? onInviteeRejectedByOtherDevice;
final Function(SignalingInfo info)? onInviteeAcceptedByOtherDevice;
final Function(SignalingInfo info)? onHangup;
OnSignalingListener({
this.onInvitationCancelled,
@ -17,6 +18,7 @@ class OnSignalingListener {
this.onReceiveNewInvitation,
this.onInviteeAcceptedByOtherDevice,
this.onInviteeRejectedByOtherDevice,
this.onHangup,
});
///
@ -53,4 +55,9 @@ class OnSignalingListener {
void inviteeRejectedByOtherDevice(SignalingInfo info) {
onInviteeRejectedByOtherDevice?.call(info);
}
///
void hangup(SignalingInfo info) {
onHangup?.call(info);
}
}

@ -243,6 +243,24 @@ class ConversationManager {
"operationID": Utils.checkOperationID(operationID),
}));
/// Reset group converstaion at type
/// at标准位
Future<dynamic> resetConversationGroupAtType({
required String conversationID,
String? operationID,
}) =>
_channel.invokeMethod(
'resetConversationGroupAtType',
_buildParam({
"conversationID": conversationID,
"operationID": Utils.checkOperationID(operationID),
}));
/// Get @ all member tag
/// at所有人标识
Future<dynamic> getAtAllTag() =>
_channel.invokeMethod('getAtAllTag', _buildParam({}));
/// Custom sort for conversation list
///
List<ConversationInfo> simpleSort(List<ConversationInfo> list) => list

@ -382,6 +382,31 @@ class GroupManager {
'operationID': Utils.checkOperationID(operationID),
}));
/// Search group
///
/// [keywordList]
/// [isSearchGroupID] ID(false)false
/// [isSearchGroupName] false
Future<List<GroupInfo>> searchGroups({
List<String> keywordList = const [],
bool isSearchGroupID = false,
bool isSearchGroupName = false,
String? operationID,
}) =>
_channel
.invokeMethod(
'searchGroups',
_buildParam({
'searchParam': {
'keywordList': keywordList,
'isSearchGroupID': isSearchGroupID,
'isSearchGroupName': isSearchGroupName,
},
'operationID': Utils.checkOperationID(operationID),
}))
.then(
(value) => Utils.toList(value, (map) => GroupInfo.fromJson(map)));
static Map _buildParam(Map param) {
param["ManagerName"] = "groupManager";
return param;

@ -258,6 +258,9 @@ class IMManager {
case 'onInviteeRejectedByOtherDevice':
signalingManager.listener.inviteeRejectedByOtherDevice(u);
break;
case 'onHangUp':
signalingManager.listener.hangup(u);
break;
}
} else if (call.method == ListenerType.workMomentsListener) {
String type = call.arguments['type'];

@ -529,8 +529,7 @@ class MessageManager {
/// Search local message
///
/// [sourceID]IDID
/// [sessionType]120
/// [conversationID] null
/// [keywordList]
/// [keywordListMatchType]12
/// [senderUserIDList]uid列表
@ -540,8 +539,7 @@ class MessageManager {
/// [pageIndex]
/// [count]
Future<SearchResult> searchLocalMessages({
required String sourceID,
required int sessionType,
String? conversationID,
List<String> keywordList = const [],
int keywordListMatchType = 0,
List<String> senderUserIDList = const [],
@ -557,8 +555,7 @@ class MessageManager {
'searchLocalMessages',
_buildParam({
'filter': {
'sourceID': sourceID,
'sessionType': sessionType,
'conversationID': conversationID,
'keywordList': keywordList,
'keywordListMatchType': keywordListMatchType,
'senderUserIDList': senderUserIDList,
@ -649,6 +646,32 @@ class MessageManager {
"operationID": Utils.checkOperationID(operationID),
}));
/// Find all history message
///
/// [userID]id
/// [conversationID] id
/// [groupID]id
Future<List<Message>> getHistoryMessageListReverse({
String? userID,
String? groupID,
String? conversationID,
Message? startMsg,
int? count,
String? operationID,
}) =>
_channel
.invokeMethod(
'getHistoryMessageListReverse',
_buildParam({
'userID': userID ?? '',
'groupID': groupID ?? '',
'conversationID': conversationID ?? '',
'startClientMsgID': startMsg?.clientMsgID ?? '',
'count': count ?? 10,
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) => Utils.toList(value, (map) => Message.fromJson(map)));
static Map _buildParam(Map param) {
param["ManagerName"] = "messageManager";
return param;

@ -32,7 +32,12 @@ class SearchResultItems {
/// ID
String? conversationID;
///
/// 1234
int? conversationType;
String? showName;
String? faceURL;
///
int? messageCount;
/// [Message]
@ -42,6 +47,9 @@ class SearchResultItems {
SearchResultItems.fromJson(Map<String, dynamic> json) {
conversationID = json['conversationID'];
conversationType = json['conversationType'];
showName = json['showName'];
faceURL = json['faceURL'];
messageCount = json['messageCount'];
if (json['messageList'] != null) {
messageList = <Message>[];
@ -54,6 +62,9 @@ class SearchResultItems {
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
data['conversationID'] = this.conversationID;
data['conversationType'] = this.conversationType;
data['showName'] = this.showName;
data['faceURL'] = this.faceURL;
data['messageCount'] = this.messageCount;
if (this.messageList != null) {
data['messageList'] = this.messageList!.map((v) => v.toJson()).toList();

Loading…
Cancel
Save