Skip to Content
dApp 接入

快速开始

了解如何检测、连接和与 Sui 进行交互。

OneKey 实现了 Sui Wallet Standard,确保与所有 Sui dApp 兼容。


Provider 检测

// 检测 OneKey Sui provider const provider = window.$onekey?.sui if (!provider) { throw new Error('未检测到 OneKey Sui provider') }

检查权限

// 检查是否已连接 const hasPermission = await provider.hasPermissions() if (hasPermission) { const accounts = await provider.getAccounts() console.log('已连接的账户:', accounts) }

请求连接

// 请求连接权限 const result = await provider.requestPermissions() if (result) { const accounts = await provider.getAccounts() console.log('已连接:', accounts[0].address) }

获取账户

const accounts = await provider.getAccounts() accounts.forEach(account => { console.log({ address: account.address, // Sui 地址 publicKey: account.publicKey, // 公钥(hex 字符串) }) })

获取当前链

const chain = await provider.getActiveChain() console.log('当前链:', chain) // 例如 'sui:testnet'

检查连接状态

const isConnected = provider.isConnected() console.log('已连接:', isConnected)

断开连接

await provider.disconnect()

事件监听

监听账户变更

provider.onAccountChange((account) => { if (account) { console.log('账户已变更:', account.address) } else { console.log('已断开连接') } })

监听网络变更

provider.onNetworkChange((network) => { console.log('网络已变更:', network) })

使用 Sui Wallet Kit

对于 React 应用,使用官方的 Sui Wallet Kit:

npm install @mysten/dapp-kit @mysten/sui.js @tanstack/react-query
import { SuiClientProvider, WalletProvider } from '@mysten/dapp-kit' import { getFullnodeUrl } from '@mysten/sui.js/client' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' const queryClient = new QueryClient() const networks = { mainnet: { url: getFullnodeUrl('mainnet') }, testnet: { url: getFullnodeUrl('testnet') }, } function App() { return ( <QueryClientProvider client={queryClient}> <SuiClientProvider networks={networks} defaultNetwork="mainnet"> <WalletProvider> <YourApp /> </WalletProvider> </SuiClientProvider> </QueryClientProvider> ) }

OneKey 会通过 Sui Wallet Standard 自动被检测。

Last updated on