Upgrade
This commit is contained in:
parent
6edf9b74fa
commit
d5e3947878
@ -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
|
||||
|
@ -79,4 +79,8 @@ public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListene
|
||||
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;
|
||||
|
Binary file not shown.
@ -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]单聊为用户ID,群聊为群ID
|
||||
/// [sessionType]会话类型,单聊为1,群聊为2,如果为0,则代表搜索全部
|
||||
/// [conversationID] 根据会话查询,如果是全局搜索传null
|
||||
/// [keywordList]搜索关键词列表,目前仅支持一个关键词搜索
|
||||
/// [keywordListMatchType]关键词匹配模式,1代表与,2代表或,暂时未用
|
||||
/// [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;
|
||||
|
||||
/// 这个会话下的消息数量
|
||||
/// 会话类型1单聊,2群聊,3,超级大群,4通知会话
|
||||
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…
x
Reference in New Issue
Block a user