核心关键词:Sui DApp、钱包集成、OKX Connect UI、移动钱包、签名流程
从脚本到 UI 再到上线——这篇手册把 OKX Connect 的前端接入、链上签名、账户管理每一步拆解成可复制的代码示例,既适合首次接触的开发者,也能让做过 EVM 链的团队 10 分钟内无缝迁移到 Sui 生态。
一、为什么要用 OKX Connect UI?
开发过 DApp 的你一定懂:
- 纯 SDK 自己写弹窗 → 样式、动画、异常提示全要再开发 1~2 周。
- 钱包版本碎片化 → 老版本不支持 RGB、SVG 图标柔化,用户经常报错。
👇把这些问题一次性解决:
👉 用官方 UI 3 行代码就能调起钱包,节省 80 % 前端开发量
二、安装与初始化
1. 环境要求
- OKX App ≥ 6.90.1(含最新 Sui 节点支持)
- Node ≥ 16
2. 引入依赖
npm install @okxconnect/ui3. 配置 dappMetaData
极简但至少提供以下字段:
const dappMetaData = {
name: 'SuiPlay',
icon: 'https://cdn.suiplay.com/icon180.png' // 180×180 PNG 最佳
};4. 主题与语言随心切换
const uiPreferences = { theme: 'THEME.DARK' }; // 可选值:LIGHT、SYSTEM
const language = 'zh_CN'; // 支持 19 国语言完成 4 行初始化:
import OKXUniversalConnectUI from '@okxconnect/ui';
const okxUniversalConnectUI = await OKXUniversalConnectUI.init(
dappMetaData,
{ modals: 'all', tmaReturnUrl: 'back' },
uiPreferences,
language
);三、钱包连接:一次性搞定 Sui 地址
connectParams 结构(只关心核心字段):
const connectParams = {
namespaces: {
sui: {
chains: ['sui:mainnet', 'sui:testnet'],
methods: ['sui_signMessage', 'sui_signTransactionBlock']
}
},
optionalNamespaces: {}
};调用连接:
const res = await okxUniversalConnectUI.openModal(connectParams);
console.log('已连接地址', res.accounts); // ["0xabc..."]
console.log('session ID', res.topic); // 用于复用会话FAQ:Telegram Mini App 如何处理跳转?
Q1:用户点击“连接”后,钱包会在 Telegram 内打开,如何自动返回?
A1:把 sessionConfig.redirect 设成 'tg://resolve' 即可 一键回弹。
四、链上操作全链路
为了便于复用,把 UI 实例注入链上 Provider:
import { OKXSuiProvider } from '@okxconnect/sui-provider';
const suiProvider = new OKXSuiProvider(okxUniversalConnectUI);1. 拉取账户
const { address, publicKey } = await suiProvider.getAccount();2. 签名 Message
👉 如何同时签 3 条消息而不反复弹窗?深度解析批量签名效率对比
const { signature } = await suiProvider.signMessage({
message: new TextEncoder().encode('hello sui')
});3. 签名并广播交易
const unsignedTx = await buildTx(); // 业务层构建
const response = await suiProvider.signAndSendTransaction({
transactionBlock: unsignedTx.serialize(),
});
console.log('交易哈希', response.digest);五、检测会话 & 主动断开
// 当前是否已连接
const connected = await okxUniversalConnectUI.isConnected();
// 切换钱包时务必 reset
await okxUniversalConnectUI.disconnect();六、统一事件与异常处理
UI 层已将弹窗、异常、重试逻辑封装,开发者只需监听:
okxUniversalConnectUI.on('connect_signResponse', (payload) => {
if (payload.error) {
console.warn('[签名错误]', payload.error);
} else {
console.log('签名成功', payload.signature);
}
});常见异常码(与 EVM 链保持一致)
4001用户拒绝4100无效请求
七、实战 FAQ 3 组精选
Q2:180×180 PNG 图标托管在哪里最快?
A2:推荐放在国内 CDN 并开启图片 WebP 自适应,首包延迟 <100 ms。
Q3:Sui 主网 & 测试网地址能共存于同一 session 吗?
A3:可以。namespaces.sui.chains 允许多链并列。切换链时无需重新授权,只需换 RPC 端点即可。
Q4:怎样让英文用户看到中文弹窗?
A4:建议在 navigator.language 基础上重写 locale,优先级为「DApp 存储的偏好 > 浏览器语言 > 默认 en_US」。
结语:把创意留给产品,钱包细节交给我们
从初始化到链上广播,再到统一异常兜底,OKX Connect UI 让钱包集成时间从数周压缩到 30 分钟。剩下的工作,请聚焦在产品迭代与社区增长。
立即动手,把本文示例复制到本地项目,Sui DApp 的下一次用户增长说不定就从你今天的提交开始。