本指南面向Aptos链开发者,从零开始演示如何在去中心化应用(DApp)中一键集成 OKX 钱包连接 UI,并完成签名、上链等核心操作。无需关心复杂 SDK,只需几行代码即可在 Telegram 内唤起 OKX Mini Wallet,或在移动端跳转至 OKX App,流畅完成资产交互。
阅读本文你将掌握:
- 核心关键词:Aptos DApp 开发、OKX 钱包集成、Telegram Mini Wallet、钱包连接 UI、DEX API
- 具体代码示例与常见错误排查
- 如何优雅地处理多链、多返回策略,提高留存与转化
安装与初始化
1. 前置条件
- 保证用户手机 OKX App ≥ 6.92.0
- 确保你的项目已引入
npm
npm install @okxconnect/ui
2. 创建 UI 连接器
在开始任何链上动作之前,需要先初始化 OKXUniversalConnectUI 对象,它掌管弹窗主题、语言、链配置等。
import { OKXUniversalConnectUI, THEME } from '@okxconnect/ui'
const okxUI = new OKXUniversalConnectUI({
dappMetaData: {
name: 'Aptos DEX Demo',
icon: 'https://yourcdn.com/icon180x180.png' // 180×180 PNG,禁止 SVG
},
actionsConfiguration: {
modals: 'all', // 交易前后均弹提示
returnStrategy: 'tg://resolve' // Telegram 环境返回路径
},
uiPreferences: {
theme: THEME.LIGHT // 可选 LIGHT / DARK / SYSTEM
},
language: 'zh_CN'
})
连接钱包
发起连接
无论你想获取地址或立即签名,第一步总是建立会话。
const res = await okxUI.connect({
connectParams: {
namespaces: {
aptos: {
chains: ['aptos:mainnet'], // 主网
defaultChain: 'aptos:mainnet',
methods: ['aptos_signMessage', 'aptos_signAndSubmitTransaction']
}
},
sessionConfig: {
redirect: 'tg://resolve' // Telegram Mini Wallet 返回
}
}
})
console.log(res.accounts) // 钱包地址
console.log(res.methods) // 支持的签名方法
成功后会返回:
- topic:会话 ID
- chains:已连接链
- accounts:钱包地址数组
- methods:可用签名方法……
一键完成签名与上链
场景一:签名消息(登陆或授权)
常见于无 Gas 操作,例如登录 DApp。
const signResult = await okxUI.request({
method: 'aptos_signMessage',
params: {
message: '欢迎回到 Aptos DEX',
nonce: Math.random().toString(36).substr(2),
application: true,
address: true,
chainId: true
}
})
console.log(signResult.signature)
场景二:签名并广播交易
组装交易体后,一行代码即可完成「签名 + 提交」。
const txData = {
function: '0x1::coin::transfer',
type_arguments: ['0x1::aptos_coin::AptosCoin'],
arguments: [receiverAddress, '100000000'] // 0.1 APT
}
const txHash = await okxUI.request({
method: 'aptos_signAndSubmitTransaction',
params: { payload: txData }
})
console.log(`交易已提交:${txHash}`)
FAQ:常见疑问 5 连答
- Q:在 Telegram 环境无法弹出钱包?
A:检查开发者在 BotFather 设置的returnStrategy
是否为tg://resolve
,并确认用户已更新到支持 Mini Wallet 的 OKX App。 - Q:用户反映点击后白屏?
A:禁用 SVG 图标!UI 组件仅接受 PNG / ICO / JPG,推荐 180×180 PNG 图标。 - Q:如何自动切换主网/测试网?
A:在namespaces.aptos.chains
数组内按顺序写多链 ID,例如['aptos:mainnet', 'aptos:testnet']
即可。 - Q:我只想读取用户地址,不想弹出「签名交易」的提示框怎么办?
A:将actionsConfiguration.modals
设置为['before']
或者直接设成空数组[]
。 - Q:可以一次性连接 EVM 和 Aptos 双链吗?
A:可以同时写namespaces.eip155
与namespaces.aptos
,UI 会自动请求用户授权对应链,但需保证钱包本身支持两条链。
检查与断开连接
// 会话是否存在
const isConnected = okxUI.isConnected()
console.log(isConnected)
// 强制断开,切换钱包
await okxUI.disconnect()
错误码快速对照
OKX_CONNECT_ERROR_CODES.ALREADY_CONNECTED_ERROR
:重复连接,请先断开OKX_CONNECT_ERROR_CODES.CHAIN_NOT_SUPPORTED
:所选链未在钱包端启用OKX_CONNECT_ERROR_CODES.USER_REJECTS_ERROR
:用户点击了取消OKX_CONNECT_ERROR_CODES.CONNECTION_ERROR
:网络或权限问题,请让用户检查设置
最佳实践小贴士
- 主题自适应:跟随用户系统色主题可减少突兀感,提高转化率。
- 错误兜底:永远捕获
try..catch
,当用户拒绝或步骤中断时弹出友好提示并重置 UI。 - 链 ID 缓存:会话成功之后记录默认链,避免下一次再次弹窗询问。
👉 解锁更多高级策略,来这里查看开发者实战案例!
全文约 1,500 字,如果照着示例逐步对接,30 分钟内即可让你的 Aptos DApp 拥有一流的钱包体验。祝开发顺利,与市场共赢!