当前位置: 首页 > news >正文

web端已有项目集成含UI腾讯IM

通过 npm 方式下载 TUIKit 组件,将 TUIKit 组件复制到自己工程的 src 目录下:

npm i @tencentcloud/chat-uikit-vue
mkdir -p ./src/TUIKit && rsync -av --exclude={'node_modules','package.json','excluded-list.txt'} ./node_modules/@tencentcloud/chat-uikit-vue/ ./src/TUIKit

js 工程如何接入 TUIKit 组件?

vue add typescript

在需要使用的页面

<template><TUIKit></TUIKit>
</template>
<script setup lang="ts">
import { ref} from "vue";
import { TUIStore, StoreName } from "@tencentcloud/chat-uikit-engine";
const currentConversationID = ref<string>("");
TUIStore.watch(StoreName.CONV, {currentConversationID: (id: string) => {currentConversationID.value = id;},
});
</script>

使用pinia,定义一个tim store  @/store/tim.js

import { defineStore } from 'pinia'
import store from '@/store'
import { useUserStore } from '@/store/user'
import TencentCloudChat from '@tencentcloud/chat';
import { genTestUserSig, TUIChatKit } from '../TUIKit'
import router from '@/router'
import {TUIChatService, TUIUserService
} from '@tencentcloud/chat-uikit-engine'
import { TUILogin } from '@tencentcloud/tui-core'
export const useTimStore = defineStore('useTimStore', () => {let userStore = useUserStore();const SDKAppID = process.env.NODE_ENV === 'development' ? 123 :234 // Your SDKAppIDconst secretKey = process.env.NODE_ENV === 'development' ? 'rr' : 'kk' // Your secretKey// tim登录async function BLKTIMLogin() {//进行IM登录之前首先验证tokenif (!localStorage.getItem('token_blk')) {// 没有token 跳转登录页router.push('/login')} else {// 验证token是否有效userStore.getInfo().then(async res => {if (res && res.code == 200) {let userInfo = res.data.info;console.log("userInfo->", userInfo)await TUILogin.login({SDKAppID,userID: userInfo.name,userSig: genTestUserSig({SDKAppID,secretKey,userID: userInfo.name,}).userSig,useUploadPlugin: true,framework: 'vue3'}).then(res => {setTimeout(() => {TUIUserService.updateMyProfile({nick: userInfo.name,avatar: userInfo.avatar,profileCustomField: [{key: "Tag_Profile_Custom_ID",value: userInfo.id}, {key: "Tag_Profile_Custom_Email",value: userInfo.email}, {key: "Tag_Profile_Custom_Phone",value: userInfo.phone}]})}, 2000);}).catch(err => {console.error("loginIm-error->", err)})} else if (res && res.code == 401) {router.push('/login')localStorage.removeItem('token_blk')} else {router.push('/login')}}).catch(err => {router.push('/login')})}}// tim登出function TIMLoginOut() {TUILogin.logout();}//   to:消息接收方的 userID 或 groupID,// conversationType:会话类型,取值TencentCloudChat.TYPES.CONV_C2C(端到端会话) 或 TencentCloudChat.TYPES.CONV_GROUP  // type:自定义常量// extension:消息内容 json字符串格式function TIMSendCustomMessage(to, type, extension, conversationType, description) {const options = {to: to,conversationType: conversationType ? conversationType : TencentCloudChat.TYPES.CONV_GROUP,payload: {data: type,description: description,extension: extension},}return new Promise((resolve, reject) => {TUIChatService.sendCustomMessage(options).then(res => {console.log('im发送成功->', res);resolve('success')}).catch(err => {console.warn('im发送失败->', err);reject('error')})})}let keyword = '';return { isLoginIM, SDKAppID, secretKey, BLKTIMLogin, TIMLoginOut, TIMSendCustomMessage, keyword }
})// 非setup
export function useTimStoreHook() {return useTimStore(store)
}

main.ts/main.js 中引入登录模块,并进行登录

import { createApp } from 'vue'
import App from './App.vue'
import { useTimStore } from '@/store/tim'
import { TUIComponents, TUIChatKit } from './TUIKit'const app = createApp(App)let TimStore = useTimStore();TUIChatKit.components(TUIComponents, app)
TUIChatKit.init()
TimStore.BLKTIMLogin();

腾讯IM sdk文档

http://www.lryc.cn/news/396500.html

相关文章:

  • IF不降反增!审稿速度,比我家网速还快!3本接受率高的医学期刊,赶紧码住!
  • 怎样把视频字幕提取出来?分享4个零门槛的字幕提取工具
  • PostgreSQL 里怎样解决多租户数据隔离的性能问题?
  • Oracle执行一条SQL的内部过程
  • SpringMVC的架构有什么优势?——控制器(一)
  • LabVIEW干涉仪测向系统
  • JavaScript 模拟光标全选选中一段文字
  • 【算法】代码随想录之数组(更新中)
  • Win-ARM联盟的端侧AI技术分析
  • MySQL常见的几种索引类型及对应的应用场景
  • 如何利用java依赖jave-all-deps实现视频格式转换
  • 三端保险丝-锂电池BMS二次保护器件
  • 用户增长 - 私域 - 社群运营自检清单SOP(社群运营30问)
  • 算法·高精度
  • Docker搭建kafka+zookeeper以及Springboot集成kafka快速入门
  • 【cocos2dx】【iOS工程】如何保存用户在游戏内的绘画数据,并将数据以图像形式展示在预览界面
  • 拥抱应用创新,拒绝无谓的模型竞争
  • 【源码+文档+调试讲解】旅游资源网站
  • Monaco 多行提示的实现方式
  • SpringMVC的架构有什么优势?——表单和数据校验(四)
  • Linux实战记录
  • 时间、查找、打包、行过滤与指令的运行——linux指令学习(二)
  • android CameraX构建相机拍照
  • 【普中】基于51单片机的矩阵电子密码锁LCD1602液晶显示 proteus仿真+程序+设计报告+讲解视频
  • 工厂水电燃气表流量计等能耗计量仪表非侵入式拍照抄表的方案
  • LLM大模型应用中的安全对齐的简单理解
  • clickhouse-jdbc-bridge rce
  • java中Comparator函数的用法实例?
  • mysql实战入门-基础篇
  • 阶段三:项目开发---民航功能模块实现:任务24:航空实时监控