WalletConnect

Codacy Badge CI

WalletConnect Swift SDK,实现了基于 1.0.0 websocket 的协议。

演示视频

要求

特性

待办事项

示例

要运行示例项目,请克隆 repo,并首先从 Example 目录运行 pod install

安装

WalletConnect 可以通过 CocoaPods, CarthageSwift Package Manager 获取。

CocoaPods

要安装它,只需将以下行添加到您的 Podfile

pod 'WalletConnect', git: 'https://github.com/trustwallet/wallet-connect-swift', branch: 'master'

Carthage

将以下行添加到您的 Cartfile

github "trustwallet/wallet-connect-swift"

Swift Package Manager

.package(url:_:) 添加到您的 Package.swift

dependencies: [
    .package(url: "https://github.com/trustwallet/wallet-connect-swift", .branch("master")),
],

用法

从扫描的二维码解析会话

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 文件。