用户加入了一个群聊,怎么拉取进群聊之前的聊天消息?

xinuser 2天前 60

用户加入了一个群聊,默认什么消息都看不到,只能收到进群聊之后发送的消息?现在有办法拉取进群聊之前的N条历史消息吗?

最新回复 (10)
  • x86 2天前
    引用 2
    im-server 可以配置允许查看入群前的历史消息

    针对已创建的群组,可以通过修改群信息,允许查看入群前的历史消息
  • xinuser 2天前
    引用 3
    1.im-server 可以配置允许查看入群前的历史消息

    im-server社区本有这配置吗? 参数配置名叫什么去了,我怎么没有找到

    2.针对已创建的群组,可以通过修改群信息,允许查看入群前的历史消息

    修改群信息具体是修改哪个配置呢,能说明一下吗
  • xinuser 2天前
    引用 4
    2.针对已创建的群组,可以通过修改群信息,允许查看入群前的历史消息

    这个我找到配置了

    1.im-server 可以配置允许查看入群前的历史消息

    这个我只找到下面两个配置,不知道是不是你说的:
    ##首次登录,是否接收之前的历史消息。
    ##是否开启拉取远程历史消息。如果为1,客户端在会话内如果本地消息读取完了,可以下拉继续加载在服务器上的该会话的消息;如果为0则不能。



  • HeavyRain 2天前
    引用 5
    是这个
  • xinuser 1天前
    引用 6
    1.im-server 可以配置允许查看入群前的历史消息

    这个社区版支持吗?
  • xinuser 1天前
    引用 7
    通过服务端sdk去调用im-server,报错了,日志看不出来什么,传递的参数好像没啥问题,
    都是根据文档(https://docs.wildfirechat.cn/server/admin_api/group_api.html中的8. 修改群组信息)的说明传递参数的

    [cn.wildfirechat.sdk.utilities.AdminHttpUtils] - http request:http://localhost:18080/admin/group/modify content: {"group_id":"8fd12ead87a047afaa0989e779c4456a","type":7,"value":"1","operator":"54039f125d784664b3f191af1501b3a4","isMeshMessage":false}

    [cn.wildfirechat.sdk.utilities.AdminHttpUtils] - http request response content: {"code":251,"msg":"Invalid parameter"}
  • HeavyRain 1天前
    引用 8
    这个晚点我们查一下。好像是社区版不支持修改,但是能不能拉取加入之前的消息还不确认。你们可以测试看看,或者等我们晚点儿查查
  • HeavyRain 1天前
    引用 9
    HeavyRain 这个晚点我们查一下。好像是社区版不支持修改,但是能不能拉取加入之前的消息还不确认。你们可以测试看看,或者等我们晚点儿查查
    社区版只需要把远程消息打开就行了,另外一个配置只有专业版IM服务才支持,社区版是一直支持拉取加入群组之前消息功能的
  • xinuser 1天前
    引用 10
    im-server是这么配置的吧:


    ##首次登录,是否接收之前的历史消息。
    ##0 不接收历史消息,只接收${message.compensate_time_limit}毫秒以内的消息,由于服务器没有保存已经收取记录,所以如果有超过${message.compensate_time_limit}毫秒之前未收取的消息也不会收取下拉;
    ##1接收,会接收 message.max_queue 配置的条数的历史消息
    message.roaming 1

    ## 消息补偿时限,当${message.roaming}为0时,会同步时限以内且小于${message.max_queue}的消息,默认时限为5分钟。当${message.roaming}为1时,会接收 message.max_queue 配置的条数的历史消息。
    message.compensate_time_limit 300000

    ##是否开启拉取远程历史消息。如果为1,客户端在会话内如果本地消息读取完了,可以下拉继续加载在服务器上的该会话的消息;如果为0则不能。
    message.remote_history_message 1



    android端通过如下代码拉取消息,但是无法拉取到进群之前的消息,是哪里写错了吗:

    ChatManager.Instance().getMessagesByTimestamp(conversation, null, System.currentTimeMillis(),
                        true, 100, null, new GetMessageCallback() {
                    @Override
                    public void onSuccess(List<Message> messages, boolean hasMore) {
                        Log.i("", "");
                    }

                    @Override
                    public void onFail(int errorCode) {
                        Log.i("", "");
                    }
                });
  • HeavyRain 20小时前
    引用 11
    这些getMessages的函数都是加载本地数据库里的,如果本地没有那就返回为空。如果要加载服务器端的,有个函数是getRemoteMessages,使用方法是在客户端先显示本地一次,一次从本地加载20,然后这20个显示完之后,用时间最早的那个消息ID作为参数,加载下一批本地的消息,如此循环,直到本地没有消息。然后再用最早的那条消息的messageUid来加载远程的消息,每次加载20,如此反复
返回