写点什么

融云鸿蒙 IMKit 集成指南

  • 2025-01-20
    北京
  • 本文字数:2925 字

    阅读完需:约 10 分钟


对于开发者来说,在鸿蒙生态上开发应用是一个站在全新出发点去获取增量的机会,对性能和高效的需求与日俱增。


融云提供鸿蒙 IMKit,含开箱即用的 UI 组件和预设的交互模式;覆盖多类型单群聊消息发送,置顶、免打扰、输入状态、➕号区域扩展等会话页面和列表管理,撤回、删除、引用、已读回执等消息管理,以及消息撤回编辑、消息高亮颜色等丰富的自定义能力。




本文主要介绍如何快速集成融云鸿蒙 IMKit,实现鸿蒙原生应用的社交模块。

准备工作


在开始集成 IMKit 之前,请确保您已完成以下准备工作:


注册融云开发者账号:访问融云官网注册开发者账号。注册成功后,控制台会自动创建您的首个应用,并生成开发环境下的 App Key。


获取 App Key:登录融云开发者控制台,在“应用管理”中找到您的应用,即可获取开发环境的 App Key。请注意,每个应用具有两个不同的 App Key,分别对应开发环境和生产环境,两个环境之间数据隔离。在您的应用正式上线前,请切换到使用生产环境的 App Key。


安装开发工具:确保您已安装 DevEco Studio NEXT Release(5.0.3.900) 及以上版本,并已配置好 HarmonyOS SDK API 12 及以上版本。建议使用手机系统版本号 NEXT.0.0.31 的真机进行测试。

快速集成


融云支持在 DevEco Studio 中自动导入和手动导入 IMKit SDK。我们推荐使用自动导入方式,更加便捷。


自动导入 SDK


支持从 OpenHarmony 三方库中心仓获取 SDK。


☑ 在 entry 目录中的 oh-package.json5 文件中添加 IMKit 依赖。

// entry 目录中的 oh-package.json5{  "name": "entry",  "version": "1.0.0",  "description": "Please describe the basic information.",  "main": "",  "author": "",  "license": "",  "dependencies": {    // x.y.z 为 IMKit 的版本号,请前往融云官网或 OpenHarmony 三方库中心仓查询最新版本号。    "@rongcloud/imkit" : "x.y.z",     "@rongcloud/imlib" : "x.y.z",  }}
复制代码


☑ 点击 DevEco Studio 中的“Sync Now”按钮,同步项目依赖。

安装 SDK 成功后,您可以在项目根目录的 oh_modules/.ohpm/ 中找到融云 IMKit SDK。您也可以打开 OpenHarmony 三方库中心仓,搜索关键字 rongcloud 查看更多其他融云 SDK。


手动导入 SDK


如果您无法使用自动导入,或者有特殊需求,可以选择手动导入 SDK。


☑ 将 SDK 放入 App 仓库:在项目根路径创建 libs 目录,将 RonglMLib.har 和 RonglMKit.har 放到 libs 目录。


☑ 重写 IMLib 依赖:在项目根路径 oh-package.json5 中重写 IMLib 的依赖,以确保 IMKit 能够正确依赖 IMLib。

// 项目根路径 oh-package.json5{  "modelVersion": "5.0.0",  "description": "Please describe the basic information.",  "dependencies": {  },  "devDependencies": {    "@ohos/hypium": "1.0.19",    "@ohos/hamock": "1.0.0"  },  // 重写 imlib 的位置,确保 IMKit 能够正确依赖 IMLib  "overrides": {    "@rongcloud/imlib" :"file:./libs/RongIMLib.har"  }}
复制代码


☑ App 依赖 IMLib & IMKit:在 entry 目录下执行以下命令:

1. 进入 entry 目录cd entry2. 依赖 IMLibohpm install ../libs/RongIMLib.har3. 依赖 IMKitohpm install ../libs/RongIMKit.har
复制代码


☑ 配置项目:请参考融云开发者文档中的“配置说明”部分进行项目配置。


初始化连接


在使用 IMKit 之前,需要先初始化 SDK 并连接融云服务器。


获取用户 Token:用户 Token 是用户在融云的唯一身份标识。在实际应用中,您需要通过应用服务器调用融云 Server API 获取 Token。为了快速体验,您可以使用融云控制台「北极星」开发者工具箱的 API 调试页面调用“获取 Token”接口。


初始化 SDK:在您的应用代码中,使用以下代码初始化 SDK:

import { IMEngine, InitOption } from '@rongcloud/imlib';let initOption = new InitOption();IMEngine.getInstance().init(getContext(), this.appKey, initOption); // this.appKey 为您在融云控制台获取的 App Key
复制代码


连接融云:使用获取到的 Token 连接融云服务器。

let token = "YOUR_TOKEN"; // 替换为您的 TokenIMEngine.getInstance().connect(token, 10).then(result => { // 10 为连接超时时间,单位为秒    if (EngineError.Success !== result.code) {    // IM 连接失败,根据 result.code 进行相应处理    console.error("IM 连接失败: "result.code);    return;  }  // IM 连接成功  let curUserId = result.userId as string;console.log("IM 连接成功,用户 ID: "curUserId);}).catch(error => {    console.error("IM 连接出错:"error);});
复制代码


您还可以监听 IM 连接状态的变化,以便在 UI 上给用户以提示。

import { IMEngine, ConversationStatusListener, ConversationStatusInfo, List } from '@rongcloud/imlib';let statusListener : ConversationStatusListener = {onConversationStatusChange: (items: List<ConversationStatusInfo>): void => {        // 处理连接状态变化        items.forEach(item => {            console.log("会话状态变化:", item.conversationId, item.status);        })    }}IMEngine.getInstance().addConversationStatusListener(statusListener);//在不需要监听时移除监听器,避免内存泄漏IMEngine.getInstance().removeConversationStatusListener(statusListener);
复制代码


体验收发消息


IMKit 内置会话页面已实现了发送各类型消息的功能和 UI。当您在自定义页面需要发送消息时,可使用 IMKit 核心类 RongIM 下发送消息的方法。这些方法除了提供发送消息的功能外,还会触发 IMKit 内置页面的更新。


发送消息:发送消息前需要构造 Message 消息对象,参考构造消息。


调用 RongIM 的发送消息方法时,SDK 会触发内置会话列表和页面的更新。

import { RongIM, ConversationIdentifier, ConversationType, TextMessage, Message, EngineError } from '@rongcloud/imlib';let conId = new ConversationIdentifier();conId.conversationType = ConversationType.Private; // 设置会话类型,例如单聊 (ConversationType.Private)conId.targetId = "targetId"; // 替换为目标用户 IDlet textMsg = new TextMessage();textMsg.content = "这是一条文本消息"; // 设置消息内容RongIM.getInstance().messageService().sendMessage(new Message(conId, textMsg))    .then(result => {        if (EngineError.Success !== result.code) {            // 发送消息失败,根据 result.code 进行相应处理            console.error("发送消息失败: " + result.code);            return;        }        if (!result.data) {            // 消息数据为空            console.error("消息数据为空");            return;        }        let msg = result.data as Message;        console.log("消息发送成功:", msg);    }).catch(error => {    console.error("发送消息出错:" + error);});
复制代码


通过 sendMessage 方法,融云服务器会通知您的消息是否已发送成功。当因任何问题导致发送失败时,可通过回调方法返回异常。

用户头像

专业、简单、稳定的全球互联网通信云 2021-01-26 加入

因为专注,所以专业 连续 9 年,专业 IM 即时通讯云行业第一。 关注【融云全球互联网通信云】,了解更多~

评论

发布
暂无评论
融云鸿蒙 IMKit 集成指南_融云 RongCloud_InfoQ写作社区