WalletConnect
WalletConnect Swift SDK,实现了 1.0.0 基于WebSocket的协议。
演示视频
需求
- iOS 11
- Xcode 10.2
- Swift 5
功能
- 连接和断开连接
- 批准 / 拒绝 / 杀死会话
- 批准和拒绝
eth_sign
/personal_sign
/eth_signTypedData
- 批准和拒绝
eth_signTransaction
/eth_sendTransaction
- 批准和拒绝
bnb_sign
(币安交易所订单) - 会话持久化 / 恢复
待办事项
- 推送通知 (APNS)
示例
要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install
。
安装
通过 CocoaPods、Carthage 和 Swift 包管理器 可以访问 WalletConnect。
CocoaPods
要安装,只需在您的 Podfile
中添加以下行
pod 'WalletConnect', git: 'https://github.com/trustwallet/wallet-connect-swift', branch: 'master'
Carthage
将以下行添加到您的 Cartfile
github "trustwallet/wallet-connect-swift"
Swift 包管理器
将 .package(url:_:)
添加到您的 Package.swift
dependencies: [
.package(url: "https://github.com/trustwallet/wallet-connect-swift", .branch("master")),
],
使用
从扫描的 QR 码中解析会话
let string = "wc:..."
guard let session = WCSession.from(string: string) else {
// invalid session
return
}
// handle session
配置和处理传入的消息
let interactor = WCInteractor(session: session, meta: clientMeta)
interactor.onSessionRequest = { [weak self] (id, peer) in
// ask for user consent
}
interactor.onDisconnect = { [weak self] (error) in
// handle disconnect
}
interactor.eth.onSign = { [weak self] (id, payload) in
// handle eth_sign, personal_sign, eth_signTypedData
}
interactor.eth.onTransaction = { [weak self] (id, event, transaction) in
// handle eth_signTransaction / eth_sendTransaction
}
interactor.bnb.onSign = { [weak self] (id, order) in
// handle bnb_sign
}
批准会话
interactor.approveSession(accounts: accounts, chainId: chainId).done {
print("<== approveSession done")
}.cauterize()
批准请求
interactor.approveRequest(id: id, result: result.hexString).done {
print("<== approveRequest done")
}.cauterize()
批准币安DEX订单
interactor?.approveBnbOrder(id: id, signed: signed).done({ confirm in
print("<== approveBnbOrder", confirm)
}).cauterize()
作者
hewigovens
许可证
WalletConnect 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。