{"version":"0.1.0","code":"0000","result":true,"message":"处理成功","errdetail":"","timestamp":1671508942562,"data":{"id":71713798,"title":"9.9.3 登陆聊天服务","slug":"mwhox9","format":"lake","bookId":26046811,"body":null,"body_draft":null,"body_html":"

\t聊天服务AutoSDK内部对接的钉钉AimSDK,是基于长连接实现的消息接收与发送以及历史消息的拉取,所以在服务初始化以后需要通过登陆操作与AimSDK服务建联。AutoSDK服务端已实现与钉钉IM打通,登陆过程中直接使用高德账号进行与钉钉IM服务建联,需要端上已登录高德账号。

时序图

关键参数


核心接口

登陆操作

int com.autonavi.gbl.user.chat.ChatService.loginChatRoom();

语音对讲链接状态通知

void com.autonavi.gbl.user.observer.ChatServiceObserver.onAimConnectionStatus(int status);

status取值见AimAuthStatus,其中:

AimAuthStatus.AimAuthStatusAuthed 登录成功

其他错误码如下:

AimAuthStatus.AimAuthStatusAuthing\t正在登录

AimAuthStatus.AimAuthStatusConnected\t已连接

AimAuthStatus.AimAuthStatusConnecting\t正在链接

AimAuthStatus.AimAuthStatusUnConnected\t未连接

AimAuthStatus.AimAuthStatusKickout\t被踢出

语音对讲事件回调

void com.autonavi.gbl.user.observer.ChatServiceObserver.onAimEvent(int errCode);

errCode取值见ChatErroCode,其中:

ChatErroCode.ChatErroCodeSuccess\t\t成功

其他错误码如下:

ChatErroCode.ChatErroCodeAimEngineStart\t\tAimEngine启动失败

ChatErroCode.ChatErroCodeCreateAimManager\tAimManager 创建失败

ChatErroCode.ChatErroCodeLoadPreMessage\t加载历史消息失败

ChatErroCode.ChatErroCodeRequestAppUIDFailed\t请求UUID失败

ChatErroCode.ChatErroCodeRequestAuthToken\t请求登陆Token失败

ChatErroCode.ChatErroCodeUpdateAosParam\t更新AOS参数失败

注意:

当接收到这些错误的时候,表示登录过程出现异常,这些错误基本跟网络状态相关,建议HMI在调用loginChatRoom进行网络链接状态的判断后,再进行loginChatRoom的调用过,同时当出现这些错误的时候,进行提示检查网络链接确保网络是通畅的情况下再进行loginChatRoom的调用。

loginChatRoom和logoutChatRoom需要配合使用,不要出现一直调用loginChatRoom却没有调用logoutChatRoom的情况。

示例代码

\t// 回调Observer\n\tprivate ChatServiceObserver chatServiceObserver = new ChatServiceObserver() {\n        // 群聊状态回调\n        @Override\n        public void onAimEvent(int i) {\n            Logger.d(TAG, "onAimEvent", "AimEvent:" + i);\n        }\n        // 群聊登陆状态\n        @Override\n        public void onAimConnectionStatus(final int status) {\n            Logger.d(TAG, "onAimConnectionStatus", "status:" + status);\n            TaskManager.post(new Runnable() {\n                @Override\n                public void run() {\n                    if (AimAuthStatus.AimAuthStatusConnected==status||AimAuthStatus.AimAuthStatusAuthed == status) {\n                        EventBus.getDefault().post(new TeamEvent(AutoConstant.TEAM_SPEAKING,1));\n                        isLoginChatRoom=true;\n                    } else {\n                        isLoginChatRoom=false;\n                        EventBus.getDefault().post(new TeamEvent(AutoConstant.TEAM_SPEAKING,0));\n                    }\n                }\n            });\n        }\n    };\n\n// 登陆聊天服务\nChatService mChatService = (ChatService) ServiceMgr.getServiceMgrInstance().getBLService(SingleServiceID.ChatSingleServiceID);\nmChatService.loginChatRoom(); \n
","body_lake":null,"pub_level":null,"status":"0","updated_at":"2022-08-17 07:13:44","deleted_at":null,"nameSpace":"mnlcaa/v610","browseCount":143,"collectCount":0,"estimateDate":6,"docStatus":0,"permissions":true,"overView":false}}