快速集成

chat-uikit-react 介绍

chat-uikit-react 是基于腾讯云 Chat SDK 的一款 react UI 组件库,它提供了一些通用的 UI 组件,包含会话、聊天、群组等功能。基于这些精心设计的 UI 组件,您可以快速构建优雅的、可靠的、可扩展的 Chat 应用。
您可以直接体验下面的聊天。同时,您可以通过 体验沙箱 快速体验在线代码实现。


开发环境要求

React version 18
TypeScript
Node.js version 18+
npm(版本请与 node 版本匹配)

chat-uikit-react 集成

步骤1:创建项目

创建一个新的名为 chat-app 的 React 项目(创建项目时选择 React 18,并且建议使用 TypeScript 模板),并按照提示跑通初始项目。
npm create rsbuild@latest

步骤2:下载 chat-uikit-react 组件

通过 npm 方式下载 chat-uikit-react 并在项目中使用。
npm i @tencentcloud/chat-uikit-react
将调试目录复制到项目目录的 src/debug 文件夹中,这是在本地生成用户签名时必需的。
MacOS
Windows
cp -r node_modules/@tencentcloud/chat-uikit-react/debug ./src
xcopy node_modules\@tencentcloud\chat-uikit-react\debug .\src\debug /i /e

步骤3:引入 chat-uikit-react 组件

注意:
以下代码中未填入 SDKAppIDuserIDuserSig,需在 步骤4 中获取相关信息后进行替换。
为尊重表情设计版权,Chat Demo/TUIKit 工程中不包含大表情元素切图,正式上线商用前请您替换为自己设计或拥有版权的其他表情包。下图所示默认的小黄脸表情包版权归腾讯云所有,可有偿授权使用,如需获得授权可 提交工单 联系我们。



替换 App.tsx 中的内容,或者您可以新建一个组件引入。→ 在沙箱中体验
import {
UIKitProvider,
useLoginState,
LoginStatus,
ConversationList,
Chat,
ChatHeader,
MessageList,
MessageInput,
useUIOpenControlState,
ChatSetting,
Search,
VariantType,
ContactList,
ContactInfo,
} from "@tencentcloud/chat-uikit-react";
import { useState } from "react";
import * as GenerateTestUserSig from "./debug/GenerateTestUserSig-es";


function App() {
const userID = ''; // 替换为您的 userID
const SDKAppID = 0; // 替换为您的 SDKAppID (注意: SDKAppID 是数字类型)
const SDKSecretKey = ''; // 替换为您的 SDKSecretKey

const { isChatSettingOpen, isChatSearchOpen } = useUIOpenControlState();
const [activeTab, setActiveTab] = useState('chats');

const { userSig } = GenerateTestUserSig.genTestUserSig({
userID,
SDKAppID,
SecretKey: SDKSecretKey,
});
const { status } = useLoginState({
SDKAppID,
userID,
userSig,
})

if (status !== LoginStatus.SUCCESS) {
return <div>Loading...</div>
}
// 语言支持 en-US(default) / zh-CN / ja-JP / ko-KR / zh-TW
// 主题支持 light(default) / dark
return (
<UIKitProvider>
<div style={{ height: '100vh', width: '100vw', display: 'flex', flexDirection: 'row' }}>
<ul>
<li onClick={() => {setActiveTab('chats')}}>chats</li>
<li onClick={() => {setActiveTab('contacts')}}>contact</li>
</ul>
{
activeTab === 'chats' && (
<>
<ConversationList style={{ minWidth: '300px', maxWidth: '350px' }}/>
<Chat PlaceholderEmpty="No messages yet">
<ChatHeader />
<MessageList />
<MessageInput />
</Chat>
{isChatSettingOpen && <ChatSetting />}
{isChatSearchOpen && <Search style={{ minWidth: '300px'}} variant={VariantType.EMBEDDED} />}
</>
)
}
{
activeTab === 'contacts' && (
<>
<ContactList style={{ minWidth: '300px', maxWidth: '350px' }}/>
<ContactInfo
PlaceholderEmpty="No contact yet"
onSendMessage={() => {setActiveTab('chats')}}
onEnterGroup={() => {setActiveTab('chats')}}
/>
</>
)
}
</div>
</UIKitProvider>
);
}

export default App;
参数
类型
说明
userID
String
用户唯一标识符,由您定义,仅允许包含大小写字母(a-z, A-Z)、数字(0-9)、下划线和连字符。
SDKAppID
Number
在创建的音频和视频应用程序中,其唯一标识符为:Tencent RTC 控制台
SDKSecretKey
String
在创建的音频和视频应用程序中,SDKSecretKey 的值为:Tencent RTC 控制台
userSig
String
用于用户登录认证的安全保护签名,用于确认用户的身份并防止恶意攻击者窃取您的云服务使用权限。
用户签名说明:
开发环境:如果您在本地运行演示并进行调试开发,可以使用调试文件中的 genTestUserSig 函数(参见步骤 3.2)来生成 'userSig'。在此方法中,SDKSecretKey 易受反编译和逆向工程攻击。一旦您的密钥泄露,攻击者即可窃取您的腾讯云流量。
生产环境:如果您的项目即将上线,请使用服务端生成用户签名 的方法。

步骤4:创建一个应用

1. 登录 Chat Console
2. 单击 Create Application,输入您的应用程序名称,然后单击 Create



3. 创建完成后,您可以在控制台概览页面看到新应用的状态、服务版本、SDKAppID、创建时间、标签、过期时间。


步骤5:启动项目

运行命令如下:
npm run dev
注意:
1. 请确保 步骤3 代码中 SDKAppIDuserIDuserSig 均已成功输入,如未替换将会导致项目表现异常。
2. userIDuserSig 为一一对应关系,具体参见 生成 UserSig
3. 如遇到项目启动失败,请检查 开发环境要求 是否满足。

步骤6:发送您的第一条消息

在输入框中输入您的消息,然后按 Enter 发送。




常见问题

什么是 UserSig?

UserSig 是用户登录 Chat 的密码,其本质是对 UserID 等信息加密后得到的密文。

如何生成 UserSig?

UserSig 签发方式是将 UserSig 的计算代码集成到您的服务端,并提供面向项目的接口,在需要 UserSig 时由您的项目向业务服务器发起请求获取动态 UserSig。更多详情请参见 服务端生成 UserSig
注意:
本文示例代码采用的获取 UserSig 的方案是在客户端代码中配置 SECRETKEY,该方法中 SECRETKEY 很容易被反编译逆向破解,一旦您的密钥泄露,攻击者就可以盗用您的腾讯云流量,因此该方法仅适合本地跑通功能调试。 正确的 UserSig 签发方式请参见上文。

交流与反馈

加入 Telegram 技术交流群组WhatsApp 交流群,享有专业工程师的支持,解决您的难题。

相关文档

UIKit 相关: