什么是 IMKit?即时通讯开发必备 UI 组件库

什么是 IMKit?

IMKit 是基于即构即时通讯SDK(ZIM SDK)的 UI 组件库。它提供了一些通用的 UI 组件,例如聊天列表、一对一聊天和群组聊天。您可以使用 IMKit 根据实际业务需求快速构建自定义的即时通讯应用程序,省去复杂的 UI 开发过程。

什么是 IMKit?即时通讯开发必备 UI 组件库

为什么要使用 IMKit?

  • 想要尽快实现应用内聊天时,可以更快、更容易地构建应用程序。
  • 不想浪费时间开发基本功能,可以根据需要自定义用户界面和功能,提升开发效率。

IMKit 功能列表

  • 一对一聊天和群聊
  • 会话列表
  • 消息列表
  • 发送文本消息
  • 发送和接收富媒体消息(图片、语音、视频和文件)
  • 选择和删除多个消息
  • 自定义用户界面

如何集成 IMKit 并快速开始聊天

下面以 Android 平台为例介绍如何集成 IMKit 并快速开始聊天功能。

前提条件

  • 前往ZEGO管理控制台并执行以下操作:
    1. 创建一个项目,并获取您的项目的AppIDAppSign
    2. 激活即时通讯服务。
什么是 IMKit?即时通讯开发必备 UI 组件库
  • 准备环境:
    • Android Studio Arctic Fox(2020.3.1)或更高版本
    • Android SDK包:Android SDK 30,Android SDK平台-工具30
    • 运行在Android 5.0或更高版本且支持音频和视频的Android设备或模拟器。我们建议您使用真实设备。
    • Android设备和您的计算机已连接到互联网。

集成 SDK

第一步:将 com.github.ZEGOCLOUD:zego_inapp_chat_uikit_android 添加为依赖项

  • 添加 jitpack 配置

Android Gradle 插件版本为 7.1.0 或更高。

进入项目的根目录,打开 settings.gradle 文件,将 jitpack 添加到 dependencyResolutionManagement > repositories 中,如下所示:

dependencyResolutionManagement {
   repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
   repositories {
      google()
      mavenCentral()
      maven { url 'https://storage.zego.im/maven' }   // <- Add this line.
      maven { url 'https://www.jitpack.io' } // <- Add this line.
   }
}

Android Gradle插件版本低于7.1.0

进入项目的根目录,打开build.gradle文件,将jitpack添加到allprojects > repositories中,如下所示:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://storage.zego.im/maven' }   // <- Add this line.
        maven { url "https://jitpack.io" }  // <- Add this line.
    }
}
  • 修改应用级 build.gradle 文件
dependencies {
    ...
    implementation 'com.github.ZEGOCLOUD:zego_inapp_chat_uikit_android:+'    // add this line in your module-level build.gradle file's dependencies, usually named [app].
}

第二步:调用 init 方法来初始化 IMKit


import android.app.Application;

import com.zegocloud.zimkit.services.ZIMKit;

public class MyApplication extends Application {
    public static MyApplication sInstance;

    @Override
    public void onCreate() {
        super.onCreate();
        sInstance = this;
        Long appId = ;    // The AppID you get from ZEGOCLOUD Admin Console.
        String appSign = ;    // The App Sign you get from ZEGOCLOUD Admin Console.
        ZIMKit.initWith(this,appId,appSign);
        // Online notification for the initialization (use the following code if this is needed).
        ZIMKit.initNotifications();
    }
}

第三步:在登录页面上调用 connectUser 方法以登录到 IMKit


import android.content.Intent;
import android.os.Bundle;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import im.zego.zim.enums.ZIMErrorCode;
import com.zegocloud.zimkit.services.ZIMKit;

public class MyZIMKitActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public void buttonClick() {
        // 用户ID和用户名:1到32个字符,只能包含数字、字母和以下特殊字符:'~'、'!'、'@'、'#'、'$'、'%'、'^'、'&'、'*'、'('、')'、'_'、'+'、'='、'-'、'`'、';'、'’'、','、'.'、'<'、'>'、'/'、'\'。
        String userId = ; // 作为用户的您的ID。
        String userName = ; // 作为用户的您的姓名。
        String userAvatar = ; // 您设置的用户头像必须是网络图片。例如,https://storage.zego.im/IMKit/avatar/avatar-0.png。
        connectUser(userId, userName,userAvatar); 
    }

    public void connectUser(String userId, String userName,String userAvatar) {
        // Logs in.
        ZIMKit.connectUser(userId,userName,userAvatar, errorInfo -> {
            if (errorInfo.code == ZIMErrorCode.SUCCESS) {
                // 成功登录后的操作。只有在成功登录后,您才会被重定向到其他模块。在这个示例代码中,您将被重定向到对话模块。
                toConversationActivity();
            } else {

            }
        });
    }

    // 将会话列表集成到您的Activity中作为一个Fragment。
    private void toConversationActivity() {
      // 重定向到您创建的会话列表(Activity)。
      Intent intent = new Intent(this,ConversationActivity.class);
      startActivity(intent);
    }
}

第四步:显示 IMKit 的会话组件

ConversationActivity的布局在activity_conversation.xml中指定:

   public class ConversationActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_conversation);
    }

}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        android:id="@+id/frag_conversation_list"
        android:name="com.zegocloud.zimkit.components.conversation.ui.ZIMKitConversationFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

理想情况下,到这个时候,您的应用程序应该是这个样子的:

什么是 IMKit?即时通讯开发必备 UI 组件库

开始聊天

IMKit 支持一对一聊天和群聊功能。无论是开始一对一聊天还是群聊,你想要聊天的用户或者你想要邀请的群聊成员必须至少登录过 IMKit 一次。否则,将会出现错误。

开始一对一聊天

  1. 使用您自己的业务逻辑生成userId(这里的userId是指您想要与之聊天的对等用户)。
  2. 填写userId参数并运行以下代码:
private void startSingleChat(String userId) {
    ZIMKitRouter.toMessageActivity(this, userId, ZIMKitConversationType.ZIMKitConversationTypePeer);
}

开始一个群聊

  1. 使用您自己的业务逻辑获取生成的 ids 和 groupName。(这里的 ids 指的是您想邀请加入群聊的用户的ID列表。)
  2. 填写 ids 和 groupName 参数,并运行以下代码:
public void createGroupChat(List<String> ids, String groupName) {
    if (ids == null || ids.isEmpty()) {
        return;
    }
    ZIMKit.createGroup(groupName, ids, (groupInfo, inviteUserErrors, errorInfo) -> {
        if (errorInfo.code == ZIMErrorCode.SUCCESS) {
            if (!inviteUserErrors.isEmpty()) {
                // 根据您的业务逻辑,当群组中存在一个不存在的用户ID时实现提示窗口的逻辑。
            } else {
                // 成功创建群聊后直接进入聊天页面。
                ZIMKitRouter.toMessageActivity(this, groupInfo.getId(),
                        ZIMKitConversationType.ZIMKitConversationTypeGroup);
            }
        } else {
                // 根据返回的错误信息实现提示窗口的逻辑,用于在创建群聊失败时使用。
        }
    });
}

完毕!

了解更多功能设置,可以到开发者中心查看相关文档或者联系我们👇

什么是 IMKit?即时通讯开发必备 UI 组件库

原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/1536/

(0)
上一篇 7月 8, 2024 11:08 上午
下一篇 7月 10, 2024 10:21 上午

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注