什么是 IMKit?
IMKit 是基于即构即时通讯SDK(ZIM SDK)的 UI 组件库。它提供了一些通用的 UI 组件,例如聊天列表、一对一聊天和群组聊天。您可以使用 IMKit 根据实际业务需求快速构建自定义的即时通讯应用程序,省去复杂的 UI 开发过程。
为什么要使用 IMKit?
- 想要尽快实现应用内聊天时,可以更快、更容易地构建应用程序。
- 不想浪费时间开发基本功能,可以根据需要自定义用户界面和功能,提升开发效率。
IMKit 功能列表
- 一对一聊天和群聊
- 会话列表
- 消息列表
- 发送文本消息
- 发送和接收富媒体消息(图片、语音、视频和文件)
- 选择和删除多个消息
- 自定义用户界面
如何集成 IMKit 并快速开始聊天
下面以 Android 平台为例介绍如何集成 IMKit 并快速开始聊天功能。
前提条件
- 前往ZEGO管理控制台并执行以下操作:
- 创建一个项目,并获取您的项目的
AppID
和AppSign
。 - 激活即时通讯服务。
- 创建一个项目,并获取您的项目的
- 准备环境:
- 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 支持一对一聊天和群聊功能。无论是开始一对一聊天还是群聊,你想要聊天的用户或者你想要邀请的群聊成员必须至少登录过 IMKit 一次。否则,将会出现错误。
开始一对一聊天
- 使用您自己的业务逻辑生成
userId
(这里的userId
是指您想要与之聊天的对等用户)。 - 填写
userId
参数并运行以下代码:
private void startSingleChat(String userId) {
ZIMKitRouter.toMessageActivity(this, userId, ZIMKitConversationType.ZIMKitConversationTypePeer);
}
开始一个群聊
- 使用您自己的业务逻辑获取生成的
ids
和groupName
。(这里的ids
指的是您想邀请加入群聊的用户的ID列表。) - 填写
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 {
// 根据返回的错误信息实现提示窗口的逻辑,用于在创建群聊失败时使用。
}
});
}
完毕!
了解更多功能设置,可以到开发者中心查看相关文档或者联系我们👇
原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/1536/