工作空间移动端集成概述
工作空间移动端集成概述
GPTBots 支持将工作空间整体集成到企业的移动端 APP 中,通过实现企业用户免登录使用工作空间,以方便企业员工使用工作空间。集成采用 WebView + H5 桥接 的方式,支持 Android 和 iOS 两端。
WebViewBridge 是一个用于原生应用与 H5 页面之间进行双向通信的桥接接口。它提供了统一的通信协议和方法,使原生代码和 H5 页面能够方便地相互调用并传递数据。
集成架构
┌──────────────┐ WebViewBridge ┌──────────────────┐
│ 企业移动 APP │ ◄────────────────► │ 工作空间 H5 页面 │
│(Android/iOS) │ │ (React + Vite) │
└──────────────┘ └──────────────────┘
│ │
│ AiToken 签发 │ 解析 AiToken
│ (RSA 加密) │ 免登录进入
▼ ▼
┌──────────────────────────────────────────────────┐
│ GPTBots 后端服务 │
│ (Spring Boot + MongoDB + Redis) │
└──────────────────────────────────────────────────┘
┌──────────────┐ WebViewBridge ┌──────────────────┐
│ 企业移动 APP │ ◄────────────────► │ 工作空间 H5 页面 │
│(Android/iOS) │ │ (React + Vite) │
└──────────────┘ └──────────────────┘
│ │
│ AiToken 签发 │ 解析 AiToken
│ (RSA 加密) │ 免登录进入
▼ ▼
┌──────────────────────────────────────────────────┐
│ GPTBots 后端服务 │
│ (Spring Boot + MongoDB + Redis) │
└──────────────────────────────────────────────────┘
此代码块在浮窗中显示
集成流程
| 步骤 | 说明 | 详细文档 |
|---|---|---|
| 1. 获取公钥 | 在空间设置 → 集成中获取 RSA 公钥 | AiToken 加密 |
| 2. 签发 AiToken | 使用公钥加密成员邮箱,拼接项目 ID 后再 Base64 编码 | AiToken 加密 |
| 3. 打开专属 URL | 将 AiToken 拼接到工作空间集成 URL 中 | 本文档 |
| 4. 原生端接入 | Android 或 iOS 端集成 WebView 并配置权限 | Android 集成 / iOS 集成 |
| 5. 桥接通信 | 实现 JSBridge / WKScriptMessageHandler | Android 集成 / iOS 集成 |
工作空间访问 URL
当企业员工在 APP 端访问工作空间时,应以企业员工身份打开工作空间地址。访问地址生成规则如下:
https://gptbots.ai/space/h5/home?AiToken={加密AiToken}&hideClose=true
https://gptbots.ai/space/h5/home?AiToken={加密AiToken}&hideClose=true
此代码块在浮窗中显示
{加密AiToken}:通过 RSA 公钥加密后的 AiToken,包含了组织 ID 和员工账号邮箱hideClose:可选参数,若设置为true,则在 webview 页面中隐藏「关闭」按钮
hideClose 参数行为
- 默认(不传或
false):页面中显示「关闭」按钮,点击时通过 WebViewBridge 发送关闭动作消息通知 - 设置
true:隐藏关闭按钮,APP 自主控制 WebView 生命周期
关闭动作消息 JSON:
{
"eventType": "click",
"data": {
"value": "close",
"timestamp": 1776921208476,
"extendedData": {}
}
}
{
"eventType": "click",
"data": {
"value": "close",
"timestamp": 1776921208476,
"extendedData": {}
}
}
此代码块在浮窗中显示
eventType:字符串,表示事件类型,用于识别不同的功能调用data:JSON 对象,包含事件相关的参数数据,可根据不同 eventType 包含不同的字段
事件类型表
| 事件类型 | 常量 | 说明 | 参数 |
|---|---|---|---|
click |
EVENT_CLICK | webview 页面点击事件 | data:附加数据(可选)JSON 格式,默认包含字段 value(事件类型,如 "click")、timestamp(时间戳,单位毫秒) |
message |
EVENT_MESSAGE | webview 页面消息事件 | data:附加数据(可选)JSON 格式,默认包含字段 value(事件类型,如 "message")、timestamp(时间戳,单位毫秒) |
DEMO 项目
GPTBots 提供了完整的移动端工作空间集成 DEMO:
| 平台 | 仓库 |
|---|---|
| Android | android-webview-bridge |
| iOS | ios-webview-bridge |
