在构建去中心化应用(DApp)时,除了使用 SDK 进行底层集成,借助预构建的 UI 组件可以大幅提升开发效率与用户体验。本文将详细介绍如何通过 UI 方式,快速实现 DApp 与 TON 区块链及 Web3 钱包的无缝连接,涵盖初始化、状态监听、交易发送等核心功能。
UI 接入的优势与应用场景
通过 UI 组件接入,开发者可以快速获得标准化的用户交互界面,无需从零开发钱包连接、交易确认等前端模块。特别地,当 DApp 运行于 Telegram 环境内时,用户可选择直接唤起移动端 App 钱包,或使用 Telegram Mini 钱包,体验流畅的内置操作。
若您此前已集成过 Ton Connect 或 OKX Connect,可继续沿用相关开发经验,降低迁移与适配成本。
快速开始:安装与初始化
通过 npm 安装
使用 npm 或 yarn 安装所需的 UI 库。
初始化配置
在连接钱包前,需创建 OKXTonConnectUI 实例,用于管理后续连接与交易操作。其构造函数支持多项配置参数,以适应不同场景需求。
new OKXTonConnectUI(dappMetaData, buttonRootId, actionsConfiguration, uiPreferences, language, restoreConnection)
核心参数说明:
- dappMetaData(对象):应用元数据
name(字符串):应用名称,不作为唯一标识icon(字符串):应用图标 URL,需为 PNG、ICO 等格式(不支持 SVG),建议使用 180x180px 的 PNG 图标
-
buttonRootId(字符串):用于挂载钱包连接按钮的 HTML 元素 ID。若未提供,则需手动调用连接方法
- actionsConfiguration(对象):操作行为配置
modals:指定交易过程中的弹窗展示模式,可选'before'、'success'、'error'数组或'all'returnStrategy:设置用户签署/拒绝请求后的返回策略(如'tg://resolve'用于 Telegram 环境)tmaReturnUrl:专用于 Telegram Mini Wallet 的返回策略,常用'back'(签名后关闭钱包并返回 DApp)
- uiPreferences(对象):界面偏好设置
theme:主题选项,支持THEME.DARK、THEME.LIGHT或"SYSTEM"
-
language:界面语言,支持中英文等二十余种选项,默认为
en_US - restoreConnection(布尔值):是否自动恢复之前的连接会话
初始化完成后,即可使用返回的 OKXTonConnectUI 实例调用各项功能。
核心功能详解
监听钱包状态变化
实时监控钱包连接状态(如连接成功、恢复连接、断开连接等)对确保 DApp 正常运作至关重要。可通过 onStatusChange 方法订阅状态变更事件。
示例代码:
const unsubscribe = okxTonConnectUI.onStatusChange((wallet) => {
if (wallet) {
// 处理已连接状态
} else {
// 处理未连接状态
}
});
// 适时取消订阅以释放资源
unsubscribe();
连接钱包操作
若初始化时指定了 buttonRootId》,页面上将自动渲染连接按钮,用户点击即可触发连接流程。否则,需通过编程方式调用 openModal()` 方法唤起连接弹窗。
await okxTonConnectUI.openModal();
设置 Ton Proof 参数
Ton Proof 用于连接签名验证。若需使用此功能,应在参数准备好前将状态设为 'loading',准备就绪后更改为 'ready' 并赋值。
// 设置为加载状态
okxTonConnectUI.setConnectRequestParameters({ state: 'loading' });
// 参数就绪后更新
okxTonConnectUI.setConnectRequestParameters({
state: 'ready',
value: { /* proof 参数 */ }
});
// 如需移除,可设为 null
okxTonConnectUI.setConnectRequestParameters(null);
管理连接会话
- 关闭连接弹窗:在适当时机手动关闭连接界面
- 获取当前连接信息:查询已连接的钱包地址及详情
- 断开钱包连接:终止当前会话,清除连接状态
发送交易与消息
通过 sendTransaction 方法可向钱包发送交易请求,其核心参数与 SDK 版本保持一致。
const result = await okxTonConnectUI.sendTransaction(transaction, actionConfigurationRequest);
参数说明:
transaction:交易对象结构actionConfigurationRequest:可选配置,可覆盖初始化时的弹窗、返回策略等设置
成功后将返回签名结果的 boc 字段。
动态调整 UI 配置
支持在初始化后动态修改主题、语言等界面设置,提升用户个性化体验。
事件监听与错误处理
事件订阅机制
UI 组件提供了详细的事件通知,帮助开发者跟踪关键交互节点:
| 事件名称 | 触发时机 |
|---|---|
OKX_UI_CONNECTION_STARTED |
用户开始连接钱包 |
OKX_UI_CONNECTION_COMPLETED |
钱包连接成功 |
OKX_UI_CONNECTION_ERROR |
连接被取消或发生错误 |
OKX_UI_CONNECTION_RESTORING_STARTED |
开始恢复连接会话 |
OKX_UI_CONNECTION_RESTORING_COMPLETED |
成功恢复连接 |
OKX_UI_CONNECTION_RESTORING_ERROR |
恢复连接失败 |
OKX_UI_DISCONNECTION |
用户开始断开连接 |
OKX_UI_TRANSACTION_SENT_FOR_SIGNATURE |
交易发送待签名 |
OKX_UI_TRANSACTION_SIGNED |
交易成功签署 |
OKX_UI_TRANSACTION_SIGNING_FAILED |
交易签名失败 |
开发者可根据业务逻辑订阅相关事件,例如在连接成功后跳转页面,或在签名失败时提示用户。
错误码与异常处理
操作过程中可能抛出以下常见异常:
| 错误码 | 描述 |
|---|---|
UNKNOWN_ERROR |
未知错误 |
ALREADY_CONNECTED_ERROR |
钱包已连接 |
NOT_CONNECTED_ERROR |
钱包未连接 |
USER_REJECTS_ERROR |
用户拒绝操作 |
METHOD_NOT_SUPPORTED |
方法不受支持 |
CHAIN_NOT_SUPPORTED |
区块链网络不支持 |
WALLET_NOT_SUPPORTED |
钱包类型不支持 |
CONNECTION_ERROR |
连接过程发生错误 |
建议在关键操作中添加异常捕获逻辑,确保应用稳定性。
常见问题
如何选择 SDK 集成与 UI 集成?
- SDK 集成:提供最大灵活性,适合需要深度自定义界面与交互逻辑的场景
- UI 集成:优先选择方案,可快速实现标准化钱包连接功能,节省开发时间
在 Telegram 中运行有哪些特别注意点?
在 Telegram 环境中,建议配置 tmaReturnUrl 为 'back',确保用户签名后能自动关闭钱包窗口并返回 DApp。同时,应正确处理 Mini App 与外部钱包的兼容性。
连接失败最常见的原因是什么?
多数连接问题源于网络环境或参数配置错误。请检查:
- 元数据图标 URL 是否可访问且格式符合要求
- 返回策略是否与运行环境匹配
- 钱包应用是否已安装且支持目标网络
是否支持多链同时操作?
当前 UI 组件主要针对 TON 网络优化。👉 查看多链兼容方案与实时支持状态
如何自定义主题色彩?
可通过 uiPreferences.theme 设置全局主题,或使用 CSS 变量覆盖默认样式实现更细致的定制。
恢复连接功能在什么情况下使用?
启用 restoreConnection 后,当用户再次访问 DApp 时将自动尝试恢复上次的连接会话,无需重复授权,提升用户体验流畅度。
通过上述功能组合,开发者可以高效构建用户体验良好的 Web3 应用,快速接入 TON 生态系统并管理区块链交互。