Android IMKit 快速开始

本页在 5 个步骤内完成 Android 端 IMKit 接入:先接入 IMLib,再初始化门面,最后挂载会话列表与会话页。IMKit 只消费 IMLib 的公开数据,不重复实现通信能力。

  1. 接入 IMLib

    按 IMLib 快速开始 完成初始化与连接;IMKit 不重复建立连接。

  2. 导入 IMKit

    按「导入 SDK」安装依赖;只依赖 io.nipaas.imlib 公开 API;禁止依赖 OkHttp / 协议层 / SQLite 实现 / 服务端类型

  3. 初始化门面

    初始化 IMLib 客户端并连接,然后创建 IMKit 门面(或调用静态 init);门面持有主题、语言与组件实例。

  4. 挂载会话列表

    传入 conversations 与交互回调;会话数据来自 IMLib 的 getConversationList 与 CONVERSATION 事件。

  5. 挂载会话页与输入区

    传入 messages / currentUserId / hasMore;发送与已读回调转调 IMLib 对应接口。

1. 接入 IMLib​

IMKit 的所有数据都来自 IMLib 公开接口:连接、会话列表、历史消息、发送、已读回执与未读清零。先完成 IMLib 接入再使用 IMKit。

2. 导入 IMKit​

Gradle(Kotlin DSL)
// app/build.gradle.kts
dependencies {
    implementation("io.nipaas:imkit:1.0.0")
}

3. 初始化门面​

Kotlin
IMKit.init(
    context = applicationContext,
    options = IMKitOptions.Builder()
        .credentials("YOUR_APP_KEY", "https://im.example.com")
        .build(),
)
IMKit.client()?.connect(TOKEN, connectCallback)

门面:IMKit;门面 IMKit.init / routeToConversationList / routeToConversation / registerProvider / config。

4. 挂载会话列表​

Kotlin
val fragment = ConversationListFragment.newInstance()
fragment.setBehaviorListener(object : ConversationListBehaviorListener {
    override fun onConversationClick(context: Context, view: View, conversation: Conversation): Boolean {
        IMKit.routeToConversation(
            context,
            ConversationIdentifier(conversation.conversationType, conversation.targetId),
        )
        return true
    }
})
supportFragmentManager.beginTransaction()
    .replace(R.id.container, fragment)
    .commit()

// 或直接走内置路由
IMKit.routeToConversationList(context)

5. 挂载会话页与输入区​

Kotlin
// 方式一:内置 Activity 路由
IMKit.routeToConversation(
    context,
    ConversationIdentifier(ConversationType.PRIVATE, "user2"),
)

// 方式二:Fragment 挂载
supportFragmentManager.beginTransaction()
    .replace(R.id.container, ChatFragment.newInstance(ConversationType.PRIVATE, "user2"))
    .commit()

下一步​