消息漫游

本文档已不再维护,新版文档见:消息管理–从服务器获取消息(消息漫游)


  • 默认设置:关闭
  • 是否增值服务:是
  1. 同一用户所有已登录设备都可以获取该用户在所有设备上的历史消息;
  2. 用户可从服务器获取全部历史消息,也可以根据本地数据库存储的消息有选择的获取服务器历史消息;
  3. 消息漫游支持以会话为单位获取历史消息;
  4. 漫游消息的存储不限制消息类型,时间限制分为 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)

上一页:多设备同步

下一页:消息撤回