安卓客户端快速开发

本页面供快速集成使用,了解更多请访问详细文档

Android SDK 集成说明

SDK 架构

美信拓扑IM SDK(代号 floo )底层使用 C++ 实现,各平台(Android、iOS、Linux等)在此基础上再行封装, 完成本地库的开发,以达到多平台复用的目的,并保持跨平台协议实现的一致性。 floo-android 作为供安卓使用的本地应用库,有两种 API 可供开发者使用,即低级 API 和高级 API,也即同步接口和异步接口。

低级 API (low-level)

同步调用接口,类名以Service结尾,为方便理解,下文说明中用 L/S 表示,其中 L 表示 Low-level, S 表示 Sync。

如前所述,floo-android 主体由 SWIG 框架自动生成。用 SWIG 生成的 Java 代码,通过 JNI 方式调用底层 C++ 类库,因此大部分接口均为同步,即调用接口后,完成后返回结果。

代码生成和转换的过程中,相关数据结构得以直接映射到底层类库,减少了内存拷贝,因此其性能接近于直接调用底层库。

同步方式的服务类如下:

- BMXClient: SDK功能聚合类,包含了所有的service类、实现了网络事件监听接口
- BMXChatService: 消息发送、消息历史获取、会话列表
- BMXUserService: 注册账号、登入、登出、我的设置
- BMXRosterService: 好友列表、黑名单
- BMXGroupService: 群管理(创建、解散、查找、设置、成员管理、邀请、申请、接受、拒绝)

高级 API (high-level)

异步调用接口,类名以Manager结尾,为方便理解,下文用 H/A 表示,其中 H 表示 High-level, A 表示 Async。

考虑到开发者集成方便,我们也基于此类重新封装了高级 API,使用了更为友好的数据结构,并完成了异步封装。

简单来讲,相关调用会在子线程执行具体操作(例如:搜索好友),当前线程会直接返回不会阻塞。具体操作的结果则通过回调函数通知调用方,后者可以在其中处理 UI 刷新等业务逻辑。

异步方式的服务类如下:

其他工具类

类库示意图如下

导入SDK

SDK导入可以选择aar格式或者jar+so格式

aar格式

  • 下载aar文件到项目的libs目录

  • 在build.gradle文件dependencies块中增加依赖,参照maxim-android源码使用最新版。

jar+so格式

  • 下载jar包和so库到项目的libs目录

  • 在build.gradle文件中增加:implementation fileTree(dir: 'libs', include: ['*.jar'])

权限配置

在AndroidManifest.xml 里增加加以下权限:

APP混淆

快速集成

BMXClient初始化

第一步 导入so库文件

在 app 入口类中增加导入

第二步 初始化BMXClient

注意: 如果使用高级API(异步调用方式),需要通过以下方法获取到服务类API的实体:

注册用户

L/S: 同步调用传入BMXUserProfile对象引用,调用之后即可获取profile信息。

H/A: 异步调用在BMXDataCallBack回调中返回profile实例。

登录

两种登录模式:一种是普通手动登录,另一种是快速登录模式,手动登录包含了获取token和建立tcp连接的两个步骤,快速登录则将token缓存至本地。

L/S: 通过返回值BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中返回BMXErrorCode 判断是否成功。

获取会话列表

L/S: 通过传入BMXConversationList对象引用,调用成功后即可获取会话列表。

H/A: 在BMXDataCallBack回调中获取到会话列表。

断开连接

L/S: 通过返回值获取到BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中根据BMXErrorCode判断。

用户体系

  • 添加好友

L/S: 通过返回值获取到BMXErrorCode判断是否成功。 参数说明: rosterId reason(申请添加原因)

H/A: 在BMXCallBack回调中获取到BMXErrorCode判断是否成功。

  • 删除好友

L/S: 通过返回值获取到BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中获取到BMXErrorCode判断是否成功。

  • 同意添加好友

L/S: 通过返回值获取到BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中获取到BMXErrorCode判断是否成功。

  • 拒绝添加好友

L/S: 通过返回值获取到BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中获取到BMXErrorCode判断是否成功。

  • 获取花名册

L/S: 通过传入ListOfLongLong对象引用, 调用成功后可获取rosterId的列表。

H/A: 在BMXDataCallBack回调中获取rosterId列表。

基础功能

单聊

单聊是指一对一的聊天功能,单聊的 BMXConversationType 是 BMXConversationSingle,toId 是单聊对象的 userId。

群聊

群聊是指附带角色和权限的用户集合内进行的内部广播方式的聊天功能, BMXConversationType 是 BMXConversationGroup,toId 是群组 Id。

群组管理

  • 创建群组

L/S: 通过传入BMXGroup对象引用, 调用成功后可获取群信息。

H/A: 在BMXDataCallBack回调中获取群信息。

  • 加入群组

L/S: 通过返回值获取到BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中获取到BMXErrorCode判断是否成功。

  • 退出群组 参数说明: group(群信息)

L/S: 通过返回值获取到BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中获取到BMXErrorCode判断是否成功。

  • 解散群组

L/S: 通过返回值获取到BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中获取到BMXErrorCode判断是否成功。

  • 获取群成员列表

L/S: 通过传入BMXGroupMemberList对象引用, 调用成功后可获取群成员列表信息。

H/A: 在BMXDataCallBack回调中获取群成员列表信息。

  • 获取群组列表

L/S: 通过传入BMXGroupList对象引用, 调用成功后可获取群列表信息。

H/A: 在BMXDataCallBack回调中获取群列表信息。

  • 获取群组信息

L/S: 通过传入BMXGroup对象引用, 调用成功后可获取群信息。

H/A: 在BMXDataCallBack回调中获取群信息。

消息发送

登录成功之后才能进行聊天操作。发消息时,单聊和群聊调用的是统一接口,区别只是要设置下 BMXConversationType

消息的远程推送

开发者配置好远程推送的证书,且在代码中申请好权限,并将 deviceToken 传给MaxIM服务器,当接收者不在线的时候,MaxIM服务器会自动通过远程推送将消息发过去。

注: 推送的内容由发送消息接口的 pushContent 字段决定,内置消息发送的时候如果该字段没有值,将使用默认内容推送;自定义消息必须设置该字段,否则将不会推送。

  • deviceToken传给MaxIM接口

L/S: 通过返回值获取到BMXErrorCode判断是否成功。

H/A: 在BMXCallBack回调中获取到BMXErrorCode判断是否成功。

消息内容格式

文本消息

图片消息

文件消息

参数说明: from(发送者id) to(接收者id) type(单群聊类型) path(文件本地路径) name(文件名称)

位置消息

参数说明: from(发送者id) to(接收者id) type(单群聊类型) latitude(纬度) longitude(经度) address(地址)

语音消息

参数说明: from(发送者id) to(接收者id) type(单群聊类型) path(语音本地路径) time(语音时长)

消息操作

  • 发送

L/S:

H/A:

  • 转发

L/S:

H/A:

  • 重发

L/S:

H/A:

  • 撤回

L/S:

H/A:

  • 下载消息附件

调用说明: 在FileCallBack中传入下载url,onProgress获取下载进度,onFail返回下载失败,onFinish返回成功的路径。

消息接收监听

  • 注册消息回调

功能进阶

BMXMessageObject实体中,提供可扩展属性(extensionJson 和 configJson) extensionJson 为开发使用的扩展字段,例如编辑状态。 configJson 为SDK自用的扩展字段,例如mention功能,push功能

  • 群组@功能

    群组中支持 @ 功能,满足您 @ 指定用户或 @所有人的需求,开发者在BMXMessage中通过设置config字段来实现群主@功能,已经@成员后的会下发推送通知

  • 消息正在输入状态

Last updated

Was this helpful?