{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508943301,"data":{"id":71713794,"title":"9.9.4 聊天消息相关","slug":"iwb4td","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

本章节主要涉及聊天服务消息相关接口介绍

时序图

关键参数

核心接口

int com.autonavi.gbl.user.chat.ChatService.loadHistoryMsg(String chatId, String msgId, int count);

int com.autonavi.gbl.user.chat.ChatService.sendAimAudioMsg(AimAudioMsg message);

示例代码

拉取历史消息

String chatId = UserGroupController.getInstance().getGroupChatId(); // 聊天室ID\nString curMsgId = mTeamSpeakingAdapter.getLoadPreMsgId(); // 获取最早的消息ID, 当前消息列表为空该字段传空,从最新消息拉取\n\nmChatService.loadHistoryMsg(chatId, curMsgId, 20);\n\n// 拉取消息回调\nprivate ChatServiceObserver chatObserver = new ChatServiceObserver() {\n    @Override\n    public void onLoadPreAimMsgList(final AimMsgList aimMsgList) {\n        TaskManager.post(new Runnable() {\n            @Override\n            public void run() {\n                hasMore = aimMsgList.hasMore; // 是否拉取到最早消息\n                if(!hasMore) {\n                    mMvpView.setRefreshTips();\n                }\n                // 刷新消息列表\n                refreshGroupMsgList(aimMsgList.data, true);\n                mMvpView.stopSyncRefresh();\n            }\n        });\n    }\n};

发送语音消息

\nAimAudioMsg newMsg = new AimAudioMsg();\nnewMsg.chatId = UserGroupController.getInstance().getGroupChatId();  // 聊天室ID\nnewMsg.localPath = ""; // 语音文件完整路径\nnewMsg.duration = 5000; // 语音时长 单位:毫秒\nnewMsg.audioType = AudioType.AudioTypeAMR; // 语音文件类型\n\nint serialId = mChatService.sendAimAudioMsg(newMsg);\nif (serialId > 0) {\n    // 发请求成功,保存serialId 可用于区分并行发送时回调\n}\n\n// 发送语音消息回调\nprivate ChatServiceObserver chatObserver = new ChatServiceObserver() {\n    @Override\n    public void onSendMessage(final AimSendStatus aimSendStatus) {\n        TaskManager.post(new Runnable() {\n            @Override\n            public void run() {\n                Logger.d(TAG, "onNewAimMsgList", "msgList:" + aimSendStatus.progress);\n                if (aimSendStatus.progress >= 1.0) {\n                    if (null != aimSendStatus.msgData) {\n                        isOnRefresh=false;\n                        ArrayList<AimMsgBase> msgList = new ArrayList<>();\n                        msgList.add(aimSendStatus.msgData);\n                        refreshGroupMsgList(msgList, false);\n                    }\n                }\n            }\n        });\n    }\n};

新消息推送

// 发送语音消息回调\nprivate ChatServiceObserver chatObserver = new ChatServiceObserver() {\n    @Override\n    public void onNewAimMsgList(final AimMsgList aimMsgList) {\n        TaskManager.post(new Runnable() {\n            @Override\n            public void run() {\n                Logger.d(TAG, "onNewAimMsgList", "msgList:" + aimMsgList.data.size());\n                isOnRefresh=false;\n                refreshGroupMsgList(aimMsgList.data, false);\n            }\n        });\n    }\n};

消息撤回推送

private ChatServiceObserver chatObserver = new ChatServiceObserver() {\n    @Override\n    public void onRecallAimMsg(final AimMsgList aimMsgList) {\n        TaskManager.post(new Runnable() {\n            @Override\n            public void run() {\n                Logger.d(TAG, "onRecallAimMsg", "msgList:" + aimMsgList.data.size());\n                isOnRefresh=false;\n                refreshGroupMsgList(aimMsgList.data, false);\n            }\n        });\n    }\n};
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-07-25 03:19:41","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":119,"collectCount":0,"estimateDate":7,"docStatus":0,"permissions":true,"overView":false}}