IM 即时通讯
Android
产品介绍
简介
产品优势
主要功能
功能介绍
帐号集成与登录
群组功能
聊天室功能
聊天室标签功能
圈组功能
多端登录与互踢策略
质量数据监控台
海外数据中心
IM平滑迁移方案
接口及业务限制
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
体验 Demo
下载 SDK 与 Demo 源码
快速开始
跑通 IM Demo 源码
实现单聊消息收发(不含 UI)
实现圈组消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
组件导入
初始化
界面跳转
自定义用户信息
全局配置
会话列表相关
集成会话列表界面
会话列表事件监听
自定义会话列表界面 UI
会话列表 API 概览
会话消息相关
集成会话界面
会话界面事件监听
实现地理位置消息功能(含 UI)
实现自定义消息发送(含 UI)
自定义会话界面 UI
会话消息 API 概览
通讯录相关
集成通讯录界面
自定义通讯录界面 UI
通讯录界面事件监听
通讯录 API 概览
IM UIKit API 概览
不含 UI 集成
集成 SDK
初始化
登录相关
登录 IM
多端登录与互踢
登出 IM
消息相关
消息概述
消息收发
自定义消息收发
消息配置选项
NOS 存储场景
广播消息收发
消息已读回执
消息撤回
消息重发与转发
消息更新
消息过滤
语音消息处理
插入本地消息
历史消息
最近会话
服务端会话服务
用户资料
用户关系
在线状态订阅
系统通知
系统通知概述
内置系统通知管理
内置系统通知未读数
自定义系统通知收发
离线推送与消息提醒
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
聊天室
圈组功能
圈组概述
登录管理
服务器相关
服务器概述
服务器管理
服务器成员管理
游客功能
服务器未读数管理
频道相关
频道概述
频道管理
频道黑白名单
实时互动频道
频道分组
频道分组黑白名单
频道未读数管理
搜索服务器和频道
身份组相关
身份组概述
身份组应用场景
服务器身份组
频道身份组
用户定制权限
频道分组身份组
自定义权限项
成员权限查询与判定
身份组相关查询
圈组订阅机制
圈组消息相关
图解圈组消息流转
圈组消息收发
圈组消息撤回
圈组消息更新
圈组消息删除
消息正在输入
会话消息回复(Thread)
圈组快捷评论
获取频道最后一条消息
查询历史消息
圈组消息缓存
圈组消息搜索
圈组系统通知相关
圈组系统通知概述
圈组系统通知收发
圈组系统通知更新
圈组离线推送
圈组内容审核
圈组相关抄送
圈组第三方回调
圈组各端接口命名差异
反垃圾
聊天扩展
其他
最佳实践
IM 登录最佳实践
IM 应用隐私合规
聊天室重要消息投递
API 参考
Android SDK API
Android 端状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置应用客户端标识
常见问题
FAQ
错题集
Android 端推送问题排查
服务协议

使用说明

更新时间: 2022/12/28 18:14:43

接口介绍

IM Android SDK (以下简称 SDK)提供两类接口供开发者使用:

  • 一类是主动发起请求,接口名均以 Service 结尾,例如 AuthService
  • 一类是作为观察者监听事件和变化,接口名均以 ServiceObserver 结尾,例如 AuthServiceObserver。个别太长的类名则直接以 Observer 结尾,例如 SystemMessageObserver

SDK 接口调用必须在主进程中进行,请在主进程中调用 SDK XXXService 提供的方法,在主进程中注册 XXXServiceObserver 的观察者(有事件变更,会回调给主进程的主线程)。如果您的模块运行在非主进程,请自行实现主进程与非主进程的通信(AIDL/Messenger/ContentProvider/BroadcastReceiver等IPC渠道)将主进程回调或监听返回的数据传递给非主进程。

SDK 提供三种接口返回值:基本数据类型(同步接口),InvocationFuture(异步接口) 和 AbortableFuture(异步接口)。异步接口基本都从主进程发起调用,然后在后台进程执行,最后再将结果返回给主进程。

如果调用 AbortableFuture 异步接口,传输大量数据或者出现耗时很长的情况,可通过 abort 方法中断请求。例如上传下载、登录等。

异步接口可通过 RequestCallback 和 RequestCallbackWrapper 两种方式设置回调函数。

异步接口回调函数 说明
RequestCallback 需要实现3个接口:
成功 onSuccess, 失败 onFailed, 异常 onException
RequestCallbackWrapper 需要实现 onResult。封装了成功,失败和异常的3个接口,在参数上进行区分

SDK 4.4.0 API 调用框架增强:

  • 支持带 Looper 的非UI线程发起的异步API调用,直接回调到调用者线程。老版本会默认回调到 UI 线程。
  • 提供异步强制转成同步的接口:NIMClient#syncRequest,允许设置最大同步等待时间,支持非 UI 线程里需要同步调用云信 API的场景。
  • 添加自动生成的 NIMSDK类,开发者可以直接采用 NIMSDK#getXXXService 方法获取服务接口,不再需要传递 XXXService.class,简化 API 调用方式。其他插件自动生成的调用入口类为:NIMChatRoomSDKNIMLuceneSDK。例如采用 NIMSDK.getAuthService().login() 替换NIMClient.getService(AuthService.class).login()

数据缓存目录

当收到多媒体消息后,SDK 默认会下载相关的文件,同时 SDK 还将记录一些关键的日志文件,因此 SDK 需要一个数据缓存目录。

该目录可以在 SDK 初始化时通过 SDKOptions#sdkStorageRootPath 进行设置。 SDK 4.4.0版本起,如果开发者配置在 Context#getExternalCacheDirContext#getExternalFilesDir 等应用扩展存储缓存目录下(即/sdcard/Android/data/{package}),SDK 内部将不再检查写权限。

上述缓存目录下的文件会随着 App 卸载而被删除,也可以由用户手动在设置界面里面清除。

如果不设置,则默认为/{外卡根目录}/{应用包名}/nim/,其中外卡根目录可通过 Environment.getExternalStorageDirectory().getPath() 获取。

如果您的 APP 需要清除缓存功能,可扫描该目录下的文件,按照规则清理即可。 在 SDK 初始化完成后可以通过 NimClient#getSdkStorageDirPath 获取 SDK 数据缓存目录。

SDK 数据缓存目录中包含:

子目录 内容
log SDK 日志文件:如nim_sdk.log,一般不超过 8M。
image 图片消息中的原图
audio 语音消息中的音频
video 视频消息中的原视频
thumb 图片/视频消息中的缩略图
file 文件消息中的文件
此文档是否对你有帮助?
有帮助
我要吐槽
  • 接口介绍
  • 数据缓存目录