diff --git a/OpenIM-SDK/src/main/java/io/openim/android/sdk/manager/GroupManager.java b/OpenIM-SDK/src/main/java/io/openim/android/sdk/manager/GroupManager.java index 70d4575..36e6f63 100644 --- a/OpenIM-SDK/src/main/java/io/openim/android/sdk/manager/GroupManager.java +++ b/OpenIM-SDK/src/main/java/io/openim/android/sdk/manager/GroupManager.java @@ -268,11 +268,11 @@ public void setGroupMemberNickname(OnBase base, String gid, String uid, * @param isSearchGroupID 是通过群组id进行查询 * @param isSearchGroupName 是通过群名称查询 */ - public void searchGroups(OnBase base, List keywordList, boolean isSearchGroupID, boolean isSearchGroupName) { + public void searchGroups(OnBase> base, List keywordList, boolean isSearchGroupID, boolean isSearchGroupName) { Map map = new ArrayMap<>(); map.put("keywordList", keywordList); map.put("isSearchGroupID", isSearchGroupID); map.put("isSearchGroupName", isSearchGroupName); - Open_im_sdk.searchGroups(BaseImpl.stringBase(base), ParamsUtil.buildOperationID(), JsonUtil.toString(map)); + Open_im_sdk.searchGroups(BaseImpl.arrayBase(base, GroupInfo.class), ParamsUtil.buildOperationID(), JsonUtil.toString(map)); } } diff --git a/OpenIM-SDK/src/main/java/io/openim/android/sdk/manager/SignalingManager.java b/OpenIM-SDK/src/main/java/io/openim/android/sdk/manager/SignalingManager.java index a69525d..952fe0b 100644 --- a/OpenIM-SDK/src/main/java/io/openim/android/sdk/manager/SignalingManager.java +++ b/OpenIM-SDK/src/main/java/io/openim/android/sdk/manager/SignalingManager.java @@ -15,49 +15,49 @@ public class SignalingManager { /** * 设置信令监听 */ - void setSignalingListener(OnSignalingListener listener) { + public void setSignalingListener(OnSignalingListener listener) { Open_im_sdk.setSignalingListener(new _SignalingListener(listener)); } /** * 邀请个人加入音视频 */ - void signalingInvite(OnBase base, SignalingInfo info) { + public void signalingInvite(OnBase base, SignalingInfo info) { Open_im_sdk.signalingInvite(BaseImpl.objectBase(base, SignalingCertificate.class), ParamsUtil.buildOperationID(), JsonUtil.toString(info)); } /** * 邀请群里某些人加入音视频 */ - void signalingInviteInGroup(OnBase base, SignalingInfo info) { + public void signalingInviteInGroup(OnBase base, SignalingInfo info) { Open_im_sdk.signalingInviteInGroup(BaseImpl.objectBase(base, SignalingCertificate.class), ParamsUtil.buildOperationID(), JsonUtil.toString(info)); } /** * 同意某人音视频邀请 */ - void signalingAccept(OnBase base, SignalingInfo info) { + public void signalingAccept(OnBase base, SignalingInfo info) { Open_im_sdk.signalingAccept(BaseImpl.objectBase(base, SignalingCertificate.class), ParamsUtil.buildOperationID(), JsonUtil.toString(info)); } /** * 拒绝某人音视频邀请 */ - void signalingReject(OnBase base, SignalingInfo info) { + public void signalingReject(OnBase base, SignalingInfo info) { Open_im_sdk.signalingReject(BaseImpl.objectBase(base, SignalingCertificate.class), ParamsUtil.buildOperationID(), JsonUtil.toString(info)); } /** * 邀请者取消音视频通话 */ - void signalingCancel(OnBase base, SignalingInfo info) { + public void signalingCancel(OnBase base, SignalingInfo info) { Open_im_sdk.signalingCancel(BaseImpl.objectBase(base, SignalingCertificate.class), ParamsUtil.buildOperationID(), JsonUtil.toString(info)); } /** * 挂断 */ - void signalingHungUp(OnBase base, SignalingInfo info) { + public void signalingHungUp(OnBase base, SignalingInfo info) { Open_im_sdk.signalingHungUp(BaseImpl.objectBase(base, SignalingCertificate.class), ParamsUtil.buildOperationID(), JsonUtil.toString(info)); } } diff --git a/README.zh-cn.md b/README.zh-cn.md index bc47cb3..929d939 100644 --- a/README.zh-cn.md +++ b/README.zh-cn.md @@ -40,6 +40,7 @@ boolean result = OpenIMClient.getInstance().initSDK(apiUrl, wsUrl, storageDir, l ##### 2,设置监听器 ``` +// 用户资料变更监听 OpenIMClient.getInstance().userInfoManager.setOnUserListener(new OnUserListener() { @Override public void onSelfInfoUpdated(UserInfo info) { @@ -47,6 +48,7 @@ OpenIMClient.getInstance().userInfoManager.setOnUserListener(new OnUserListener( } }); +// 收到新消息,已读回执,消息撤回监听。 OpenIMClient.getInstance().messageManager.setAdvancedMsgListener(new OnAdvanceMsgListener() { @Override public void onRecvNewMessage(Message msg) { @@ -62,8 +64,14 @@ OpenIMClient.getInstance().messageManager.setAdvancedMsgListener(new OnAdvanceMs public void onRecvMessageRevoked(String msgId) { // 消息成功撤回,从界面移除消息 } + + @Override + public void onRecvGroupMessageReadReceipt(List list) { + // 消息被阅读回执,将消息标记为已读 + } }); +// 好关系发生变化监听 OpenIMClient.getInstance().friendshipManager.setOnFriendshipListener(new OnFriendshipListener() { @Override public void onBlacklistAdded(BlacklistInfo u) { @@ -111,6 +119,7 @@ OpenIMClient.getInstance().friendshipManager.setOnFriendshipListener(new OnFrien } }); +// 会话新增或改变监听 OpenIMClient.getInstance().conversationManager.setOnConversationListener(new OnConversationListener() { @Override public void onConversationChanged(List list) { @@ -143,6 +152,7 @@ OpenIMClient.getInstance().conversationManager.setOnConversationListener(new OnC } }); +// 群组关系发生改变监听 OpenIMClient.getInstance().groupManager.setOnGroupListener(new OnGroupListener() { @Override public void onGroupApplicationAccepted(GroupApplicationInfo info) { @@ -234,6 +244,8 @@ OpenIMClient.getInstance().logout(new OnBase() { }); ``` + + - ##### getUsersInfo(根据用户ID批量获取用户信息) ``` @@ -251,6 +263,8 @@ OpenIMClient.getInstance().userInfoManager.getUsersInfo(new OnBase( }); ``` + + - ##### setSelfInfo(修改当前用登录户资料) 会触发当用户的onSelfInfoUpdated回调,以及好友的onFriendInfoChanged、onConversationChanged回调。 @@ -293,6 +309,8 @@ OpenIMClient.getInstance().userInfoManager.setSelfInfo(new OnBase() { }, nickname, faceURL, gender, appMangerLevel, phoneNumber, birth, email, ex); ``` + + - ##### getAllConversationList(获取所有会话) ``` @@ -309,6 +327,8 @@ OpenIMClient.getInstance().conversationManager.getAllConversationList(new OnBase }); ``` + + - ##### getConversationListSplit(分页获取会话) ``` @@ -345,6 +365,8 @@ OpenIMClient.getInstance().conversationManager.getOneConversation(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, conversationID, isPrivate); +``` + + + +- ##### deleteConversationFromLocalAndSvr(删除本地跟服务端会话记录) + +``` +String conversationID; //会话ID +OpenIMClient.getInstance().conversationManager.deleteConversationFromLocalAndSvr(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, conversationID); +``` + + + +- ##### deleteAllConversationFromLocal(删除本地所有会话记录) + +``` +OpenIMClient.getInstance().conversationManager.deleteAllConversationFromLocal(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}); +``` + + + +- ##### resetConversationGroupAtType(清除at标识) + +``` +String conversationID; //会话ID +OpenIMClient.getInstance().conversationManager.resetConversationGroupAtType(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, conversationID); +``` + + + +- ##### getAtAllTag(at所有人标识) + +``` +OpenIMClient.getInstance().conversationManager.getAtAllTag(); +``` + + + - ##### simpleComparator(自定义会话排序规则) ``` OpenIMClient.getInstance().conversationManager.simpleComparator(); ``` + + - ##### getFriendsInfo(根据userID查询好友资料) ``` @@ -522,6 +648,8 @@ OpenIMClient.getInstance().friendshipManager.getFriendsInfo(new OnBase() { }, uid, reqMessage); ``` + + - ##### checkFriend(检查是否是好友) ``` @@ -561,6 +691,8 @@ OpenIMClient.getInstance().friendshipManager.checkFriend(new OnBase() { }, uid); ``` + + - ##### setFriendRemark(好友备注设置) 操作者收到OnFriendInfoChanged @@ -618,6 +752,8 @@ OpenIMClient.getInstance().friendshipManager.getFriendList(new OnBase() { }, uid); ``` + + - ##### getBlacklist(黑名单) ``` @@ -685,6 +827,8 @@ OpenIMClient.getInstance().friendshipManager.getBlacklist(new OnBase( }, uid); ``` + + - ##### acceptFriendApplication(接受好友申请) 操作者收到OnFriendApplicationAccepted、OnFriendAdded @@ -726,6 +872,8 @@ OpenIMClient.getInstance().friendshipManager.acceptFriendApplication(new OnBase< }, uid, handleMsg); ``` + + - ##### refuseFriendApplication(拒绝好友申请) 操作者收到OnFriendApplicationRejected @@ -748,6 +896,8 @@ OpenIMClient.getInstance().friendshipManager.refuseFriendApplication(new OnBase< }, uid, handleMsg); ``` + + - ##### inviteUserToGroup(邀请进组) 直接进组无需同意。 @@ -773,6 +923,8 @@ OpenIMClient.getInstance().groupManager.inviteUserToGroup(new OnBase() { }, groupName, faceURL, notification, introduction, groupType, ex, list); ``` + + - ##### setGroupInfo(修改组信息) 群成员收到OnGroupInfoChanged @@ -899,6 +1061,8 @@ OpenIMClient.getInstance().groupManager.setGroupInfo(new OnBase() { }, groupID, groupName, faceURL, notification, introduction, ex); ``` + + - ##### getGroupsInfo(根据id查询组信息) ``` @@ -916,6 +1080,8 @@ OpenIMClient.getInstance().groupManager.getGroupsInfo(new OnBase }, gidList); ``` + + - ##### joinGroup(申请入群组) 需要通过管理员同意。 @@ -940,6 +1106,8 @@ OpenIMClient.getInstance().groupManager.joinGroup(new OnBase() { }, groupID, reason); ``` + + - ##### quitGroup(退出组) 退出者收到OnJoinedGroupDeleted @@ -961,6 +1129,8 @@ OpenIMClient.getInstance().groupManager.quitGroup(new OnBase() { }, groupID); ``` + + - ##### transferGroupOwner(群转让) ``` @@ -979,6 +1149,8 @@ OpenIMClient.getInstance().groupManager.transferGroupOwner(new OnBase() }, groupID, newOwnerUserID); ``` + + - ##### getRecvGroupApplicationList(收到的入群申请) 作为群主或者管理员,获取收到的群成员申请进群列表。 @@ -997,6 +1169,8 @@ OpenIMClient.getInstance().groupManager.getRecvGroupApplicationList(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, groupID); +``` + + + +- ##### changeGroupMute(开启群禁言) + +``` +String groupID = ""; // 组ID +boolean mute = true; // 开启禁言 +OpenIMClient.getInstance().groupManager.changeGroupMute(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, groupID, mute); +``` + + + +- ##### changeGroupMemberMute(禁言群成员) + +``` +String groupID = ""; // 组ID +String userID = ""; // 群成员ID +long seconds = 0; // 禁言时长s +OpenIMClient.getInstance().groupManager.changeGroupMemberMute(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, groupID, userID, mute); +``` + + + +- ##### setGroupMemberNickname(修改群成员昵称) + +``` +String groupID = ""; // 组ID +String userID = ""; // 群成员ID +String groupNickname = ""; // 群成员昵称 +OpenIMClient.getInstance().groupManager.setGroupMemberNickname(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, groupID, userID, groupNickname); +``` + + + +- ##### searchGroups(全局搜索群) + +``` +List keywordList; // 关键词 +boolean isSearchGroupID; // 以群id为主 +boolean isSearchGroupName ; // 以群名为主 +OpenIMClient.getInstance().groupManager.setGroupMemberNickname(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, keywordList, isSearchGroupID, isSearchGroupName); +``` + + + - ##### sendMessage(发送消息) ``` @@ -1086,6 +1368,8 @@ OpenIMClient.getInstance().messageManager.sendMessage(new OnMsgSendCallback() { }, message, userID, groupID, offlinePushInfo); ``` + + - ##### getHistoryMessageList(获取聊天记录) ``` @@ -1110,6 +1394,8 @@ OpenIMClient.getInstance().messageManager.getHistoryMessageList(new OnBase() { }, message); ``` + + - ##### deleteMessageFromLocalStorage(删除单条消息) ``` @@ -1146,6 +1434,8 @@ OpenIMClient.getInstance().messageManager.deleteMessageFromLocalStorage(new OnBa }, message); ``` + + - ##### insertSingleMessageToLocalStorage(向本地插入一条消息) ``` @@ -1165,6 +1455,8 @@ OpenIMClient.getInstance().messageManager.insertSingleMessageToLocalStorage(new }, message, receiverID, senderID); ``` + + - ##### markC2CMessageAsRead(标记c2c消息已读) 当调用此方法后,已读的消息会通过已读回执(onRecvC2CReadReceipt)告诉对方。 @@ -1185,6 +1477,28 @@ OpenIMClient.getInstance().messageManager.markC2CMessageAsRead(new OnBase messageIDList = new ArrayList<>(); // 已读的消息id列表 +OpenIMClient.getInstance().messageManager.markGroupMessageAsRead(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, groupID, messageIDList); +``` + + + - ##### typingStatusUpdate(正在输入提示) 会通过onRecvNewMessage回调 @@ -1205,6 +1519,8 @@ OpenIMClient.getInstance().messageManager.typingStatusUpdate(new OnBase( }, userID, msgTip); ``` + + - ##### clearC2CHistoryMessage(清空c2c聊天记录) ``` @@ -1222,6 +1538,8 @@ OpenIMClient.getInstance().messageManager.clearC2CHistoryMessage(new OnBase atUidList = new ArrayList<>(); // 被@的用户id列表 -Message message = OpenIMClient.getInstance().messageManager.createTextAtMessage(text, atUidList); +List atUserIDList = new ArrayList<>(); // 被@的用户id列表 +List atUserInfoList; // id跟昵称映射关系 +Message quoteMessage; // 引用消息 +Message message = OpenIMClient.getInstance().messageManager.createTextAtMessage(text, atUserIDList, atUserInfoList, quoteMessage); ``` + + - ##### createImageMessage(图片消息,相对路径) ``` @@ -1263,6 +1589,8 @@ Message message = OpenIMClient.getInstance().messageManager.createImageMessage(i 注:initSDK时传入了数据缓存(dataDir)路径,如路径:A,这时需要你将图片复制到A路径下后,如 A/pic/a.png路径,imagePath的值:“/pic/a.png”。同以下其他消息的相对路径。 + + - ##### createImageMessageFromFullPath(图片消息全路径) ``` @@ -1270,6 +1598,8 @@ String imagePath = ""; // 图片路径 Message message = OpenIMClient.getInstance().messageManager.createImageMessageFromFullPath(imagePath); ``` + + - ##### createSoundMessage(语音消息,相对路径) ``` @@ -1278,6 +1608,8 @@ long duration = 0; // 时长s Message message = OpenIMClient.getInstance().messageManager.createSoundMessage(soundPath, duration); ``` + + - ##### createSoundMessageFromFullPath(语音消息全路径) ``` @@ -1286,6 +1618,8 @@ long duration = 0; // 时长s Message message = OpenIMClient.getInstance().messageManager.createSoundMessage(soundPath, duration); ``` + + - ##### createVideoMessage(视频消息,相对路径) ``` @@ -1296,6 +1630,8 @@ long duration = 0; // 时长s Message message = OpenIMClient.getInstance().messageManager.createVideoMessage(videoPath, videoType, duration, snapshotPath); ``` + + - ##### createVideoMessageFromFullPath(视频消息全路径) ``` @@ -1306,6 +1642,8 @@ long duration = 0; // 时长s Message message = OpenIMClient.getInstance().messageManager.createVideoMessage(videoPath, videoType, duration, snapshotPath); ``` + + - ##### createFileMessage(文件消息,相对路径) ``` @@ -1314,6 +1652,8 @@ String filePath = ""; // 路径 Message message = OpenIMClient.getInstance().messageManager.createFileMessage(filePath, fileName); ``` + + - ##### createFileMessageFromFullPath(文件消息全路径) ``` @@ -1322,6 +1662,8 @@ String filePath = ""; // 路径 Message message = OpenIMClient.getInstance().messageManager.createFileMessageFromFullPath(filePath, fileName); ``` + + - ##### createForwardMessage(转发消息) ``` @@ -1329,6 +1671,8 @@ Message message = null; // 消息体,不为null,取界面上显示的消息 Message message1 = OpenIMClient.getInstance().messageManager.createForwardMessage(message); ``` + + - ##### createMergerMessage(合并消息) ``` @@ -1338,6 +1682,8 @@ List summaryList = new ArrayList<>(); // 每条消息的摘要 Message message = OpenIMClient.getInstance().messageManager.createMergerMessage(messageList, title, summaryList); ``` + + - ##### createLocationMessage(位置消息) ``` @@ -1347,6 +1693,8 @@ String description = ""; // 位置描述信息 Message message = OpenIMClient.getInstance().messageManager.createLocationMessage(latitude, longitude, description); ``` + + - ##### createCustomMessage(自定义消息) ``` @@ -1356,6 +1704,8 @@ String description = "";// 描述消息 Message message = OpenIMClient.getInstance().messageManager.createCustomMessage(data, extension, description); ``` + + - ##### createQuoteMessage(引用消息/消息回复) ``` @@ -1364,9 +1714,184 @@ Message quoteMsg = null;// 不为null;被回复的消息体 Message message = OpenIMClient.getInstance().messageManager.createQuoteMessage(text,quoteMsg); ``` + + - ##### createCardMessage(名片消息) ``` String content = ""; // 自定义内容 Message message = OpenIMClient.getInstance().messageManager.createCardMessage(content); ``` + + + +- ##### createFaceMessage(自定义表情) + +``` +long index; // 自定义下标图片 +String data; // 自定义内容图片 +Message message = OpenIMClient.getInstance().messageManager.createFaceMessage(index, data); +``` + + + +- ##### searchLocalMessages(全局搜索聊天记录) + +``` +String conversationID; //根据会话查询,如果是全局搜索传null +List keywordList; //搜索关键词列表,目前仅支持一个关键词搜索 +int keywordListMatchType; // 关键词匹配模式,1代表与,2代表或,暂时未用 +List senderUserIDList; // 指定消息发送的uid列表 暂时未用 +List messageTypeList; // 消息类型列表 +int searchTimePosition; // 搜索的起始时间点。默认为0即代表从现在开始搜索。UTC 时间戳,单位:秒 +int searchTimePeriod ; // 从起始时间点开始的过去时间范围,单位秒。默认为0即代表不限制时间范围,传24x60x60代表过去一天 +int pageIndex ; // 当前页数 +int count ; // 每页数量ll +OpenIMClient.getInstance().messageManager.searchLocalMessages(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(SearchResult data) { + + } + }, conversationID, keywordList, keywordListMatchType, senderUserIDList, messageTypeList, searchTimePosition, searchTimePeriod, pageIndex, count); +``` + + + +- ##### deleteMessageFromLocalAndSvr(删除本地跟服务器消息记录) + +``` +Message message; // 被删除的消息 +OpenIMClient.getInstance().messageManager.deleteMessageFromLocalAndSvr(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, message); +``` + + + +- ##### deleteAllMsgFromLocal(删除本地所有聊天记录) + +``` +OpenIMClient.getInstance().messageManager.deleteAllMsgFromLocal(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}); +``` + + + +- ##### deleteAllMsgFromLocalAndSvr(删除本地跟服务器所有聊天记录) + +``` +OpenIMClient.getInstance().messageManager.deleteAllMsgFromLocalAndSvr(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}); +``` + + + +- ##### markMessageAsReadByConID(通过会话id标记消息已读) + +``` +String conversationID; // 会话ID +List messageIDList; // 消息ID列表 +OpenIMClient.getInstance().messageManager.markMessageAsReadByConID(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, conversationID, messageIDList); +``` + + + +- ##### clearC2CHistoryMessageFromLocalAndSvr(清除本地跟服务端c2c聊天记录) + +``` +String userID; // 单聊对象userID +OpenIMClient.getInstance().messageManager.clearC2CHistoryMessageFromLocalAndSvr(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, userID); +``` + + + +- ##### clearGroupHistoryMessageFromLocalAndSvr(清除本地跟服务端群聊消息记录) + +``` +String groupID; // 群ID +OpenIMClient.getInstance().messageManager.clearGroupHistoryMessageFromLocalAndSvr(new OnBase() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(String data) { + + } +}, groupID); +``` + + + +- ##### getHistoryMessageListReverse(获最新的聊天记录,用在搜索消息时查找比这条消息新的记录) + +``` +Message startMsg = null; // 消息体,取界面上显示的消息体对象 +String userID = ""; // 接受消息的userID +String groupID = ""; // 接受消息的群ID +int count = 20; // // 每次拉取的数量 +OpenIMClient.getInstance().messageManager.getHistoryMessageListReverse(new OnBase>() { + @Override + public void onError(int code, String error) { + + } + + @Override + public void onSuccess(List data) { + + } +}, userID, groupID, startMsg, count); +``` +