
IM即时通讯
安全可靠、全球互通

实时音视频
流畅稳定、省钱省力
回答:
集成方法是:
1.调用 RongIMClient.init() 初始化 sdk
2.设置接收消息监听,所有对方发过来的消息,都会调用此方法。
/** * <p>设置接收消息事件的监听器。所有接收到的消息、通知、状态都经由此处设置的监听器处理。包括私聊消息、讨论组消息、群组消息、聊天室消息以及各种状态。</p> * <strong>注意:</strong>如果调用此接口的Activity被释放回收,将无法收到事件回调。 * * @param listener 接收消息的监听器。 */ public static void setOnReceiveMessageListener(final OnReceiveMessageListener listener)
2.设置连接状态监听,所有连接状态变化都会走该方法。同一个账号登录,一个被踢掉时,也会回调此方法,error code 是
KICKED_OFFLINE_BY_OTHER_CLIENT(3, "Login on the other device, and be kicked offline.")
/** * 设置连接状态变化的监听器。在自定义UI时,会需要调用此接口判断当前连接状态,来绘制UI及决定逻辑走向。 * * @param listener 连接状态变化的监听器。 */ public static void setConnectionStatusListener(final ConnectionStatusListener listener)
3.获取到 token 后连接
/** * <p>连接服务器,在整个应用程序全局,只需要调用一次,需在 {@link #init(Context)} 之后调用。</p> * <p>如果调用此接口遇到连接失败,SDK 会自动启动重连机制进行最多10次重连,分别是1, 2, 4, 8, 16, 32, 64, 128, 256, 512秒后。 * 在这之后如果仍没有连接成功,还会在当检测到设备网络状态变化时再次进行重连。</p> * * @param token 从服务端获取的用户身份令牌(Token)。 * @param callback 连接回调。 * @return RongIMClient IM 客户端核心类的实例。 */ public static RongIMClient connect(final String token, final ConnectCallback callback)
4.接收和发送的消息都会存到本地数据库,数据库路径在 /data/data/包名/files/你的 appkey/登录的 userId/storage 文件
5.获取会话列表
/** * <p>根据会话类型,获取当前用户的本地会话列表。即显示所有本地数据库中收发过消息,并且未被删除的会话。 * <strong>注意:</strong>当更换设备或者清除缓存后,能拉取到暂存在融云服务器中该账号当天收发过消息的会话。</p> * * @param callback 获取会话列表的回调。 */ public void getConversationList(final ResultCallback<List<Conversation>> callback)
6. 根据会话类型和 targetId 获取历史消息
/** * 根据会话类型的目标 Id,回调方式获取N条历史消息记录。 * * @param conversationType 会话类型。不支持传入 ConversationType.CHATROOM。 * @param targetId 目标 Id。根据不同的 conversationType,可能是用户 Id、讨论组 Id、群组 Id。 * @param oldestMessageId 最后一条消息的 Id,获取此消息之前的 count 条消息,没有消息第一次调用应设置为:-1。 * @param count 要获取的消息数量。 * @param callback 获取历史消息记录的回调,按照时间顺序从新到旧排列。 */ public void getHistoryMessages(Conversation.ConversationType conversationType, String targetId, int oldestMessageId, int count, RongIMClient.ResultCallback<List<Message>> callback)
图片消息和语音消息:
1.发送图片消息时,只需要构造 ImageMessage,传入本地图片地址和缩略图地址, 如果缩略图地址为 null,sdk 会默认从传入的本地图片生成缩略图。其中缩略图会转换成 base64 存储在数据库,并发送给对方,对方接收后,把 base64 转存为本地文件。
/** * 生成ImageMessage对象。 * * @param thumUri 缩略图地址。 * @param localUri 大图地址。 * @return ImageMessage对象实例。 */ public static ImageMessage obtain(Uri thumUri, Uri localUri)
通过调用历史消息接口,获取到的图片消息,其消息体中包含缩略图地址,图片所在服务器地址。如果已经下载,也会包含本地图片存储地址。
private Uri mThumUri; private Uri mLocalUri; private Uri mRemoteUri;
2.发送语音消息时,只需要构造 HQVoiceMessage,传入已录制好的语音消息存储地址和语音时常。sdk 会把传入的语音文件转换成 base64 存储在数据库,并发送给对方,对方接受后会将接受的 base64 存储成本地文件。
所以,通过接口拿到的语音消息相关数据都是已经存储好的语音文件,只需要访问此文件既可以。
public static HQVoiceMessage obtain(Uri uri, int duration)
通过调用历史消息接口,获取到的语音消息,其消息体中包含语音存储地址。
private Uri mUri; private int mDuration;