快速集成
先按概述与安装引入 im。在租户控制台创建应用、确认运行策略。业务服务端在用户登录业务系统后签发 IM 登录凭证,App 只接收凭证,不持有 Client Secret 或 App Token。
初始化与登录
用户同意隐私政策后,在主进程初始化一个客户端。以下代码位于业务协程中,context 为 Android Context,ticket 为业务服务端刚签发的凭证:
kotlin
import com.deeprespond.im.*
val im = DRClient.initialize(context, DRClientOptions(
appKey = "org#app",
apiUrl = "https://api.example.com",
))
im.auth.awaitRestored()
if (im.auth.currentUser == null) {
im.auth.loginWithTicket(ticket)
}
im.connection.waitUntilReady()initialize 同步返回,安全存储与本地会话异步恢复。应先等待 awaitRestored,再决定是否登录。已登录用户直接恢复连接;凭证失效时从业务服务端获取新凭证,自动获取方式见ticketProvider。
发消息
接收者必须是应用内存在的 IM 用户,并满足应用的好友、禁言和群组策略:
kotlin
val message = im.messages.send(
SendTarget.User("bob"),
OutgoingContent.Text("你好"),
SendOptions(waitUntilSent = true),
)
println(message.messageId)默认 send 写入发送队列后返回本地消息;此例显式等待服务端确认。完整内容类型和失败处理见消息。
会话和消息界面
kotlin
val conversation = im.conversations.openSingle("bob")
val list = im.messages.open(conversation.conversationKey)
try {
list.snapshot.collect { snapshot ->
println(snapshot.items.size) // 在 UI 中展示快照。
}
} finally {
list.close()
}此段在页面的协程中执行,取消收集时 finally 关闭列表。不要在按钮点击后无限收集状态;界面订阅按生命周期管理。文件发送、群聊和推送分别见文件、群组、离线推送。
退出账号
kotlin
im.auth.logout(clearLocalData = true)logout 是退出账号;destroy 只在切换 AppKey 或结束整个客户端时使用,不应在每个页面退出时调用。详见客户端生命周期。
运行示例与接入检查
源码中的 sdk/android/example 提供 Kotlin 聊天页和 Java 门面页。构建环境准备好后运行 ./gradlew :example:installDebug,填写业务服务的 AppKey、接入地址和登录凭证。
- 普通聊天只需网络权限;通知、录音、摄像头按实际使用场景授权。
- 本机 HTTP 联调配置 App 的调试网络安全规则;生产使用 HTTPS。
- 消息、好友和群策略由运行策略控制。
- 看到本地 queued 消息不等于发送成功,观察状态或使用 waitUntilSent。
- 当前制品从本地 Maven 仓库安装,不能直接假定公共仓库已发布。
接入独立频道
完成客户端初始化与登录后,可以按频道接入加入业务服务端创建的频道。加入需要应用频道开通和目标用户授权;默认不采集。
