Native (C ABI) IMKit 快速开始
本页在 5 个步骤内完成 Native (C ABI) 端 IMKit 接入:先接入 IMLib,再初始化门面,最后挂载会话列表与会话页。IMKit 只消费 IMLib 的公开数据,不重复实现通信能力。
- 接入 IMLib
按 IMLib 快速开始 完成初始化与连接;IMKit 不重复建立连接。
- 导入 IMKit
按「导入 SDK」安装依赖;IMKit 只依赖 IMLib 公开接口。
- 初始化门面
初始化 IMLib 客户端并连接,然后创建 IMKit 门面(或调用静态 init);门面持有主题、语言与组件实例。
- 挂载会话列表
传入 conversations 与交互回调;会话数据来自 IMLib 的 getConversationList 与 CONVERSATION 事件。
- 挂载会话页与输入区
传入 messages / currentUserId / hasMore;发送与已读回调转调 IMLib 对应接口。
1. 接入 IMLib
IMKit 的所有数据都来自 IMLib 公开接口:连接、会话列表、历史消息、发送、已读回执与未读清零。先完成 IMLib 接入再使用 IMKit。
2. 导入 IMKit
C / Rust
// 链接 im-kit(include/im_kit.h + libim_kit),并链接 im-sdk
cc app.c -Iinclude -Llib -lim_sdk -lim_kit -o app3. 初始化门面
C(view-model 层)
#include "im_sdk.h"
#include "im_kit.h"
im_kit_theme_t* theme = NULL;
im_kit_theme_default(0 /* light */, &theme);
im_kit_conversation_model_t* list = im_kit_conversation_model_new(client);门面:IMKit;Native 没有 UI 门面:按组件组合模型(conversation_model / message_model)与格式化函数(avatar / badge / time / status / theme)。
4. 挂载会话列表
C(view-model 层)
im_kit_conversation_model_t* list = im_kit_conversation_model_new(client);
im_kit_conversation_model_set_json(list, conversations_json);
im_kit_conversation_model_set_options(
list, "{\"showPinned\":true,\"showUnread\":true,\"showDraft\":true,\"showMention\":true}");
char* view_json = NULL;
if (im_kit_conversation_model_refresh(list, &view_json) == 0) {
/* 渲染 view_json:排序、角标、草稿预览、空态 */
}
im_kit_string_free(view_json);
im_kit_conversation_model_free(list);5. 挂载会话页与输入区
C(view-model 层)
im_kit_message_model_t* chat = im_kit_message_model_new(client, 1, "user2");
im_kit_message_model_set_json(chat, messages_json, 1 /* has_more */);
char* view_json = NULL;
im_kit_message_model_view(chat, now_ms, "alice", &view_json);
/* view_json.items:separator / message(含时间分隔与状态文案) */
im_kit_string_free(view_json);
im_kit_message_model_load_more(chat, &view_json); /* 返回 beforeSeq,宿主据此拉历史后 prepend */
im_kit_string_free(view_json);
im_kit_message_model_free(chat);