概述
OKX Connect UI 为开发者提供了一套易于集成的用户界面解决方案,帮助 DApp 快速接入 Solana 兼容链生态。通过该界面,用户可在 Telegram 环境中直接唤醒移动端 App 钱包或使用内置的 OKX 迷你钱包,实现无缝的交易与签名体验。
本文将详细介绍 OKX Connect UI 的安装初始化、钱包连接、签名交易等核心功能,助您高效完成去中心化应用的钱包集成。
安装与初始化
确保将 OKX App 更新至 6.90.1 或更高版本,以支持完整功能。
若选择通过 npm 集成 OKX Connect,需先创建可提供 UI 接口的对象,用于后续的钱包连接与交易发送操作。
请求参数
dappMetaData - 对象类型
- name - 字符串:应用名称,不作为唯一标识
- icon - 字符串:应用图标 URL,需为 PNG、ICO 等格式(不支持 SVG),建议使用 180x180px 的 PNG 图标
actionsConfiguration - 对象类型
- modals - 数组或字符串:交易过程中弹窗显示模式,可选 'before'、'success'、'error' 或 'all',默认为 'before'
- returnStrategy - 字符串:App 钱包签名后的返回策略,可配置为 'none' 或具体协议链接(如 tg://resolve)
- tmaReturnUrl - 字符串:Telegram 迷你钱包返回策略,可选 'back'(关闭钱包后自动返回 DApp)、'none' 或自定义协议链接,默认为 'back'
uiPreferences - 对象类型
- theme - 主题设置:支持 THEME.DARK、THEME.LIGHT 或 'SYSTEM'
- language - 语言选项:支持英文、简体中文、俄语等多国语言,默认为 en_US
返回值
返回 OKXUniversalConnectUI 对象实例,用于后续操作。
连接钱包
通过连接钱包获取用户地址作为标识,并获取签名交易所必需的参数。
请求参数
connectParams - 连接参数对象
namespaces - 必要命名空间信息,Solana 链对应的键为 'solana'
- chains:字符串数组,链 ID 信息
- defaultChain:可选,默认链
optionalNamespaces - 可选命名空间信息
- chains:字符串数组,链 ID 信息
- defaultChain:可选,默认链
返回值
返回 Promise 对象,包含以下信息:
- topic:会话标识符
- namespaces:成功连接的命名空间信息
- chains:连接的链信息
- accounts:账户信息
- methods:钱包支持的当前命名空间下的方法列表
- defaultChain:当前会话的默认链
- dappInfo:DApp 信息对象(包含名称与图标)
连接钱包并签名
连接钱包获取地址并签名数据,结果将通过 'connect_signResponse' 事件回调。
请求参数
- connectParams - 连接参数(同上)
signRequest - 签名请求参数数组
- method:请求的方法名称(如 'solana_signMessage')
- chainId:方法执行的链 ID,必须包含在上述 namespaces 中
- params:方法对应的参数
返回值
返回 Promise 对象,结构与“连接钱包”返回值相同。
判断钱包是否连接
获取当前钱包是否已连接的状态。
返回值
- 布尔值:true 表示已连接,false 表示未连接
示例代码:
universalUi.connected();准备交易
通过 OKXSolanaProvider 对象向钱包发送消息,支持签名与交易操作。构造函数需传入 OKXUniversalProviderUI,相关方法调用时将根据初始化时的配置处理界面行为。
签名操作
签名消息
请求参数
- message - 字符串:待签名的消息
- chain - 字符串:签名请求执行的链,建议传递该参数;多链连接时必须传递
返回值
Promise 对象
- publicKey:钱包地址
- signature:签名结果(Uint8Array 类型)
签名单笔交易
请求参数
- transaction - 交易数据对象(Transaction 或 VersionedTransaction)
- chain - 字符串:签名请求执行的链,建议传递该参数;多链连接时必须传递
返回值
- Promise 对象:已签名的交易对象
签名多笔交易
请求参数
- transactions - 交易数据对象数组
- chain - 字符串:签名请求执行的链,建议传递该参数;多链连接时必须传递
返回值
- Promise 对象:已签名的交易对象数组
签名并广播交易
请求参数
- transaction - 交易数据对象
- chain - 字符串:签名请求执行的链,建议传递该参数;多链连接时必须传递
返回值
- Promise 对象:交易哈希字符串
获取钱包账户信息
请求参数
- chain - 字符串:获取钱包地址的链 ID,若不传递则默认取第一个连接的 SVM 地址
返回值
对象
- address:钱包地址字符串
- publicKey:公钥对象
断开钱包连接
断开当前已连接的钱包并删除会话。如需切换钱包,请先断开当前连接。
事件处理
事件处理机制与 EVM 兼容链保持一致,👉 查看详细事件列表与处理方法。
错误代码
错误代码定义与 EVM 兼容链相同,可参考相关文档进行排查。
常见问题
OKX Connect UI 支持哪些链?
目前主要支持 Solana 及其兼容链(如 Sonic),未来将逐步扩展至更多生态。多链连接时需在参数中明确指定各链 ID。
如何在 Telegram 中优化用户体验?
建议配置 actionsConfiguration.tmaReturnUrl 为 'back',使用户完成签名后自动返回 DApp 界面,减少操作步骤。
签名失败的可能原因有哪些?
常见原因包括:用户拒绝签名、链参数未正确传递、钱包版本过低或网络异常。请根据错误代码进一步排查具体问题。
是否支持自定义主题?
支持。通过 uiPreferences.theme 可设置深色、浅色或跟随系统主题,确保与 DApp 界面风格保持一致。
如何切换连接的钱包?
需先调用断开连接方法清除当前会话,然后重新初始化连接流程,用户即可选择其他钱包进行授权。
交易广播后如何获取状态?
交易广播返回的 transactionhash 可用于在链上浏览器查询状态,或通过 Solana RPC 接口实时监听交易确认情况。