在 SDK 基础之上,我们还提供了用户界面(UI)接入方案。选择 UI 接入,若 DApp 运行于 Telegram 环境,用户可选择唤起移动端 App 钱包,或直接在 Telegram 内唤起 Ouyi Telegram 迷你钱包,实现更流畅的操作体验。
安装与环境初始化
集成前,请确保 OKX App 已更新至 6.90.1 或更高版本。
使用 npm 安装 OKX Connect 依赖包:
npm install @okx/web3-connect在连接钱包前,需初始化一个 UI 对象,用于后续连接钱包、发送交易等操作:
OKXUniversalConnectUI.init(dappMetaData, actionsConfiguration, uiPreferences, language);请求参数说明
dappMetaData(对象类型)
- name:应用名称,不作为唯一标识
- icon:应用图标 URL,支持 PNG、ICO 格式,建议使用 180×180 像素的 PNG 图标
actionsConfiguration(对象类型)
- modals:交易过程中弹窗提示模式,可选 'before' / 'success' / 'error' 数组或 'all',默认 'before'
- returnStrategy:App 钱包操作后返回策略,可设为 'none' 或自定义深度链接
- tmaReturnUrl:Telegram 迷你钱包返回策略,建议设为 'back' 以自动关闭钱包并返回 DApp
uiPreferences(对象类型)
- theme:主题设置,支持暗色(THEME.DARK)、亮色(THEME.LIGHT)及系统主题('SYSTEM')
- language:界面语言,支持简体中文('zh_CN')及英、俄、阿拉伯等 19 种语言,默认英语
返回值
返回 OKXUniversalConnectUI 对象实例,用于后续操作。
连接钱包操作
通过以下方法打开连接模态框,获取钱包地址及交易签名所需参数:
okxUniversalConnectUI.openModal(connectParams);请求参数详解
connectParams(ConnectParams 类型)
- namespaces:必要连接信息,Sui 链使用键名 'sui'
- chains:链 ID 列表,若钱包不支持任一请求链,连接将被拒绝
- optionalNamespaces:可选连接信息,EVM 系统使用 'eip155',Sui 系统使用 'sui'
- sessionConfig:会话配置,如连接成功后的跳转链接(Telegram 环境可设为 'tg://resolve')
返回值
返回 Promise 对象,包含会话标识(topic)、命名空间信息、链数据、账户列表、支持方法及默认链等关键信息。
连接并签名消息
该方法支持在连接钱包的同时请求消息签名,结果通过 'connect_signResponse' 事件回调:
connectAndSign(connectParams, signRequest);请求参数说明
- connectParams:同连接钱包参数
- signRequest:签名请求参数数组,支持 'sui_signMessage' 及 'sui_signPersonalMessage' 等方法
返回值
返回 Promise 对象,包含连接会话的详细数据及签名结果。
钱包连接状态管理
检查连接状态
使用以下方法获取当前钱包是否处于连接状态:
isConnected();返回布尔值,true 表示已连接。
断开钱包连接
断开当前连接并删除会话记录。如需切换钱包,请先断开当前连接:
disconnect();交易与消息签名实践
创建 Sui 提供者对象
首先需创建 OKXSuiProvider 对象,将 okxUniversalConnectUI 传入构造函数:
const suiProvider = new OKXSuiProvider(okxUniversalConnectUI);获取账户信息
suiProvider.getAccount();返回对象包含钱包地址(address)及公钥(publicKey,要求 App 6.92.0 及以上版本)。
签名消息
请求参数为 SuiSignMessageInput 对象,包含 Uint8Array 类型的 message 字段。返回 Promise 对象,包含 messageBytes 及 signature。
签名个人消息
类似签名消息操作,返回 bytes 和 signature 字段。
签名交易
请求参数包含交易数据,返回 signature 及 transactionBlockBytes。
签名并广播交易
请求签名并即时广播上链,返回确认状态(confirmedLocalExecution)、交易摘要(digest)及交易字节(txBytes)。
事件与错误处理
事件详情与 EVM 兼容链一致,涵盖连接、交易状态变更等回调通知。错误代码系统也与 EVM 兼容链保持一致,便于开发者统一处理异常情况。
常见问题
如何选择 App 钱包与迷你钱包?
若 DApp 在 Telegram 内运行,用户可选择直接使用迷你钱包(无需跳转)或唤起外部 App 钱包(功能更全面)。非 Telegram 环境仅支持 App 钱包。
初始化时图标无法显示怎么办?
请检查图标 URL 是否为 PNG 或 ICO 格式(不支持 SVG),且建议尺寸为 180×180 像素。图标需可通过公网访问。
连接请求被拒绝可能的原因?
最常见原因是请求的链信息(namespaces 或 chains)不被钱包支持。请确认链 ID 填写正确,且用户钱包已添加该网络。
签名方法支持哪些类型?
Sui 链目前支持 'sui_signMessage' 及 'sui_signPersonalMessage' 两类签名方法,具体参数需符合 Sui 区块链规范。
交易广播后如何获取状态?
交易广播返回 digest 后,可通过 Sui 区块链浏览器查询交易状态。如需实时监听,建议使用 Sui 官方 SDK 结合 OKX 提供者对象进行状态订阅。
通过以上 UI 集成方案,开发者可快速实现 Sui 钱包连接、交易签名及链上交互功能,提升用户体验并降低开发门槛。