消息漫游
本文档已不再维护,新版文档见:消息管理–从服务器获取消息(消息漫游)。
服务设置
- 默认设置:关闭
- 是否增值服务:是
功能介绍
- 同一用户所有已登录设备都可以获取该用户在所有设备上的历史消息;
- 用户可从服务器获取全部历史消息,也可以根据本地数据库存储的消息有选择的获取服务器历史消息;
- 消息漫游支持以会话为单位获取历史消息;
- 漫游消息的存储不限制消息类型,时间限制分为 3 个月和 6 个月两种,客户可根据自身需求进行选择,消息条数存储单个会话限制为 5000 条。
使用方法
Android
try {
EMClient.getInstance().chatManager().fetchHistoryMessages(
toChatUsername, EaseCommonUtils.getConversationType(chatType), pagesize, "");
final List<EMMessage> msgs = conversation.getAllMessages();
int msgCount = msgs != null ? msgs.size() : 0;
if (msgCount < conversation.getAllMsgCount() && msgCount < pagesize) {
String msgId = null;
if (msgs != null && msgs.size() > 0) {
msgId = msgs.get(0).getMsgId();
}
conversation.loadMoreMsgFromDB(msgId, pagesize - msgCount);
}
messageList.refreshSelectLast();
} catch (HyphenateException e) {
e.printStackTrace();
}
iOS
/**
* 从服务器获取指定会话的历史消息
*
* 异步方法
*
* @param aConversationId 要获取漫游消息的Conversation id (就是要漫游与哪个环信id聊天的消息,就传哪个环信id)
* @param aConversationType 要获取漫游消息的Conversation type (会话的类型,分单聊,群聊,聊天室会话类型)
* @param aStartMessageId 参考起始消息的ID
* @param aPageSize 获取消息条数
* @param aCompletionBlock 获取消息结束的callback
*/
- (void)asyncFetchHistoryMessagesFromServer:(NSString *)aConversationId
conversationType:(EMConversationType)aConversationType
startMessageId:(NSString *)aStartMessageId
pageSize:(int)aPageSize
complation:(void (^)(EMCursorResult *aResult, EMError *aError))aCompletionBlock;
// 调用示例:
[[EMClient sharedClient].chatManager asyncFetchHistoryMessagesFromServer:@"conversationid"
conversationType:EMConversationTypeChat
startMessageId:nil
pageSize:20
completion:^(EMCursorResult *aResult, EMError *aError) {
if (!aError) {
NSLog(@"漫游消息成功---");
} else {
NSLog(@"漫游消息失败---%@", aError.errorDescription);
}
}];
Web
/**
* 获取对话历史消息
* @param {Object} options
* @param {String} options.queue - 对方用户id(如果用户id内含有大写字母请改成小写字母)/群组id/聊天室id
* @param {String} options.count - 每次拉取条数
* @param {Boolean} options.isGroup - 是否是群聊,默认为false
* @param {Function} options.success
* @param {Funciton} options.fail
*/
var options = {
queue: "test1",
isGroup: false,
count: 10,
success: function(){},
fail: function(){}
}
WebIM.conn.fetchHistoryMessages(options)