ChatClient简介 · 野火IM开发手册

文章正文
发布时间:2025-05-12 06:06

1. ChatClient简介

ChatClient是协议栈在Android平台的wrapper和平台实现,只加上了少量逻辑,ChatClient和协议栈一起完成了所有的能力,但不包括任何的UI。

协议栈处理连接/发送/接收/状态同步等任务,并且内置有SQLite数据库,组织管理各种数据。具有如下功能:

基础功能

消息功能

会话管理功能

消息管理功能

群组功能

用户功能

好友功能

个人设置

聊天室功能

频道(和微信公众号类似)功能

1.0.1. 简单使用步骤

初始化操作,只需在主进程进行,否则会出现重复收到消息等各种奇怪的现象,下面只列出最简步骤,详情请参考android-chat项目

初始化

// 只在主进程进行初始化,可参考MyApp.java ChatManager.init(application, Config.IM_SERVER_HOST);

置事件回调

ChatManager chatManager = ChatManager.Instance(); chatManager.startLog(); chatManager.addOnReceiveMessageListener(OnReceiveMessageListener listener); chatManager.addRecallMessageListener(OnReceiveMessageListener listener) // ... 设置其他时间回调监听,更多请参考ChatManager

初始化音视频

AVEngineKit.init(application, AVEngineKit.AVEngineCallback); AVEngineKit avEngineKit = AVEngineKit.Instance(); avEngineKit.addIceServer(Config.ICE_ADDRESS, Config.ICE_USERNAME,Config.ICE_PASSWORD);

连接IM 服务器

chatManager.connect(id, token);

等待时间回调通知,如收到新消息、用户信息更新等。

1.0.2. 信息获取说明

用户信息/群组信息/频道信息/好友信息/设置信息等,客户端的DB中会存储上一次从服务器更新来的信息,因此当UI获取这些信息时可能返回为空(Android 平台,为了减少UI层的判断压力,采用了Null Object Pattern,返回值并不是NULL, 而是NullUserInfo等,NullUserInfo等对象uid是正确uid但其他信息是默认值,可参考具体的代码)

另外有些场景UI希望是获取旧的信息尽快展示到UI上,然后同时刷新以便有更新显示正确。

因此当本地信息不存在或获取信息时强制刷新,协议栈回去IM服务器同步该信息,如果信息有变更,则会有对应的回调通知。

public interface OnUserInfoUpdateListener { void onUserInfoUpdate(List<UserInfo> userInfos); } //ChatManager.java /** 1. 当返回为NullUserInfo,会触发onUserInfoUpdate 2. 当refresh为true时,如果是信息有更新,则会触发onUserInfoUpdate */ UserInfo getUserInfo(String userId, boolean refresh); 1.0.3. 函数说明

请参考ChatManger这个类

2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2025-04-05 11:13:01

首页
评论
分享
Top