即时通信 IM uni-app (小程序)

TUIRoomKit 是腾讯云推出的多人音视频 UI 组件。组件提供房间管理、音视频控制、屏幕共享、成员管理、麦位管理、即时聊天、自定义布局切换等丰富的功能交互。同时支持中英文切换,一键换肤等能力。

相关产品
即时通信 IM 产品页,含版本规格、价格与购买入口。

这篇说说 TUIRoomKit (Uniapp) 的接入指引,助力你快速上线企业会议、在线教育、医疗问诊、在线巡视、远程定损等业务场景。

你可以单击 Github/Gitee 下载 TUIRoomKit 代码,并参考代码仓库 README.md 文档跑通 TUIRoomKit Uniapp 示例工程。

一、小程序 Demo

·如果你想要直接跑通一个新工程,请直接阅读 uni-app demo 快速跑通。

·如果你想要亲自集成 TUIRoomKit 组件,搭建一个多人音视频房间小程序,请跟随这篇档。

二、开发环境要求

·微信 App iOS 最低版本要求:7.0.9。

·微信 App Android 最低版本要求:7.0.8。

·小程序基础库最低版本要求:2.13.0。

注意:警告:

三、1. 开通小程序权限

由于 TUIRoomKit 所使用的小程序标签有更苛刻的权限要求,因此集成 TUIRoomKit 的第一步就是要开通小程序的类目和标签使用权限。否则无法使用,这包括如下步骤:

·小程序推拉流标签不支持个人小程序,只支持企业类小程序。需要在 注册 时填写主体类型为企业:


·小程序推拉流标签使用权限暂时只开放给有限 类目。

·符合类目要求的小程序,需要在 微信公众平台 > 开发 > 开发管理 > 接口设置中自助开通该组件权限:


四、2. 在小程序控制台配置域名

在 微信公众平台 > 开发 > 开发管理 > 开发设置 > 服务器域名中设置 request 合法域名 和 socket 合法域名:

·request 合法域名:

https://official.opensso.tencent-cloud.comhttps://yun.tim.qq.comhttps://cloud.tencent.comhttps://webim.tim.qq.comhttps://query.tencent-cloud.comhttps://web.sdk.qcloud.com

·socket 合法域名:

注意:说明:

注意:自 Chat v3.4.6起,SDK 支持独立域名,你需要配置独立域名可更好地保障服务稳定性。

注意:例如你的 SDKAppID 是1400xxxxxx,则独立域名为: wss://1400xxxxxxw4c.my-imcloud.com。

wss://${SDKAppID}w4c.my-imcloud.comwss://wss.im.qcloud.comwss://wss.tim.qq.comwss://wssv6.im.qcloud.com

五、3. 开通服务

在使用 TUIRoomKit 发起会议前,你需要前往控制台开通 TUIRoomKit 专属的多人音视频互动服务,具体步骤请参见 开通服务。

六、步骤2:准备 uni-app 工程代码

注意:目前只支持 ts + vite + vue3 工程

注意:如果你已有自己的 uni-app 工程,可跳过该步骤。如果没有,可选择以下方式生成模板工程。

在 HBuilder 中创建小程序项目。

七、步骤3:下载并导入 TUIRoom 组件

注意:因为小程序对主包大小的限制,这里 TUIRoom 默认使用分包方案,通过脚本自动配置。

八、3.1 npm 依赖安装

此处需在 uni-app 项目根目录下运行

# 在终端输入npm init -y,创建package.json文件。npm init -y# 安装项目依赖npm i @tencentcloud/tui-roomkit-uniapp pinia

九、3.2 执行项目自动化脚本

# 此脚本会自动拷贝相关依赖到你的项目。并配置 vite.config.ts、tsconfig.json、mainfest.json、pages.json 文件# 同时创建一个空白页面 roomkitTest.vue 用于展示 roomKit 项目node ./node_modules/@tencentcloud/tui-roomkit-uniapp/configureProject.js

注意:警告:

注意:此处如果没有特殊需求建议你选择 自动配置,如执行脚本的过程中你未选择自动配置,请结合 项目配置说明 手动进行修改。

十、3.3 手动修改项目配置

1. 修改./src/main.js(main.ts) ,引入 pinia。(注意此处为增量添加,根据自己项目选择添加位置)

注意:如果项目使用 HBuilderX 创建,main.js 文件会有条件编译相关代码。需要你检查是否将配置正确填写在了 #ifdef VUE3 条件中。

HbuilderXCLIimport App from './App'import { createPinia } from "pinia";// #ifndef VUE3import Vue from 'vue'import './uni.promisify.adaptor'Vue.config.productionTip = falseApp.mpType = 'app'const app = new Vue({ …App})app.$mount()app.use(createPinia());// #endif// #ifdef VUE3import { createSSRApp } from 'vue'export function createApp() { const app = createSSRApp(App) app.use(createPinia()); return { app }}// #endifimport { createPinia } from 'pinia';// locales 为 TUIRoom/locales,因为主包无法使用分包资源,此处拷贝了一份 locales 在 src 路径下app.use(createPinia());

2. 找到并打开./roomkit/config/basic-info-config.js 文件,并修改 basic-info-config.js 文件中的相关参数:

十一、3.4 运行到微信开发者工具

1. 运行到微信开发者工具,等待编译完成并打开微信开发者工具。

2. 打开微信开发者工具后,在项目根目录(非编译后 dist 文件目录)install 相关依赖。

若项目中脚本不存在,可手动下载脚本并将其拷贝在你的项目根目录:wxmini_uniapp_script。

WindowsMac# npm run dev:mp-weixin 编译完成后执行该指令# 此处使用的路径为默认路径,如果你对此路径进行了修改,需要手动对脚本路径进行调整./wxmini_dev.bat# npm run dev:mp-weixin 编译完成后执行该指令# 此处使用的路径为默认路径,如果你对此路径进行了修改,需要手动对脚本路径进行调整bash wxmini_dev.sh

注意:说明:

注意:因为小程序对主包大小有限制,这里默认采用了分包方案,部分依赖需要进入编译后的目录执行 npm install 进行下载,此处将操作指令集成在 wxmini_dev.sh/wxmini_dev.bat 脚本中,因此需要在编译完成后执行 bash wxmini_dev.sh/wxmini_dev.bat 安装依赖,你也可以根据指令内容手动安装。

3. 构建 npm,微信开发者工具单击工具 > 构建 npm。具体如下:


4. 单击清缓存 > 全部清除,避免开发者工具的缓存造成渲染异常。

5. 编译小程序。

6. 点击预览,扫描二维码,体验程序。

十二、步骤4:开始你的第一场会议

单击新建房间,开始你的第一场会议。

十三、项目配置说明

注意:警告:

注意:以下修改均为增量修改,需要根据自己项目配置进行添加。

1. 修改 ./src/manifest.json 小程序相关配置,开启分包并设置 node_modules 目录,参考文档 自定义 node-modules、miniprogram-npm 位置构建、uniapp 分包。

/* 小程序特有相关 */ "mp-weixin": { "setting": { "urlCheck": false, "packNpmManually": true, "packNpmRelationList": [ { "packageJsonPath": "./package.json", "miniprogramNpmDistDir": "./" }, { "packageJsonPath": "./roomkit/package.json", "miniprogramNpmDistDir": "./roomkit" } ] }, "usingComponents": true, "optimization": { "subPackages": true }},

2. 修改./src/pages.json,添加分包页面以及全局组件引入。

{ "pages": [ { "path": "pages/roomkitTest", "style": { "navigationBarTitleText": "" } } ], "subpackages": [ { "root": "roomkit", "pages": [ { "path": "pages/home", "style": { "navigationBarTitleText": "home" } }, { "path": "pages/room", "style": { "navigationBarTitleText": "room" } } ] } ], "globalStyle": { "usingComponents": { "trtc-pusher": "@tencentcloud/trtc-component-wx/trtc-pusher", "trtc-player": "@tencentcloud/trtc-component-wx/trtc-player" } },}

3. 修改./vite.config.ts,将@tencentcloud/tuiroom-engine-wx 设置为外部依赖,用于分包减少主包体积。

HBuliderX 创建CLI 创建import { defineConfig } from 'vite';import uni from '@dcloudio/vite-plugin-uni';
import path from 'path';
function resolve(dir) { return path.join(__dirname, dir);}
// https://vitejs.dev/config/export default defineConfig(({ mode }) => { const isProd = mode === 'production';
const commonConfig = { optimizeDeps: { include: ['@tencentcloud/tuiroom-engine-wx'], }, plugins: [ uni(), ], resolve: { alias: { '@': resolve('./'), '@TUIRoom': resolve('/roomkit/TUIRoom'), }, }, build: { rollupOptions: { external: ['@tencentcloud/tuiroom-engine-wx'], }, }, }; const devConfig = { …commonConfig, };
const prodConfig = { …commonConfig, };
return isProd ? prodConfig : devConfig;});import { defineConfig } from 'vite';import uni from '@dcloudio/vite-plugin-uni';
import path from 'path';
function resolve(dir) { return path.join(__dirname, dir);}
// https://vitejs.dev/config/export default defineConfig(({ mode }) => { const isProd = mode === 'production';
const commonConfig = { optimizeDeps: { include: ['@tencentcloud/tuiroom-engine-wx'], }, plugins: [ uni(), ], resolve: { alias: { '@': resolve('src'), '@TUIRoom': resolve('src/roomkit/TUIRoom'), }, }, build: { rollupOptions: { external: ['@tencentcloud/tuiroom-engine-wx'], }, }, }; const devConfig = { …commonConfig, };
const prodConfig = { …commonConfig, };
return isProd ? prodConfig : devConfig;});

4. 修改./tsconfig.json,项目使用 ts + vue3 开发,如不存在该文件,会产生编译错误。

HBuliderX 创建CLI 创建// tsconfig.json{ "compilerOptions": { // 与 Vue 的浏览器支持保持一致 "target": "es5", // 这可以对 `this` 上的数据 property 进行更严格的推断 "strict": true, // 如果使用 webpack 2+ 或 rollup,可以利用 tree-shake: "module": "es2015", "moduleResolution": "node" }}// tsconfig.json{ "extends": "@vue/tsconfig/tsconfig.json", "compilerOptions": { "sourceMap": true, "baseUrl": ".", "paths": { "@/*": ["./src/*"] }, "lib": ["esnext", "dom"], "types": ["@dcloudio/types"] }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]}

十四、常见问题

更多使用疑问,可前往 常见问题 文档快速查询对应解决方案。

赞 (0)
上一篇 4天前
下一篇 4天前