纯血鸿蒙操作系统上线以来,已经吸引了超过 720 万开发者。随着越来越多开发者加入,娱乐社交、电子商务、交通出行、协同办公等原生鸿蒙应用纷纷上线,推动了鸿蒙生态系统的迅速成长。

融云第一时间上线了鸿蒙 IM SDK,快速响应所有应用必备的社交模块需求。

华为开发者大会公布的首批入驻 SDK

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

在社交类 SDK 中,融云率先提供鸿蒙 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 entry

2. 依赖 IMLib
ohpm install ../libs/RongIMLib.har

3. 依赖 IMKit
ohpm 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"; // 替换为您的 Token
IMEngine.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"; // 替换为目标用户 ID

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

此外,融云鸿蒙 IMKit 还提供了更多高级功能,如自定义 UI、消息类型扩展、群组聊天等。点击融云开发者文档,了解详细信息和更多用法。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐