WC-Swift 0.1.2

WC-Swift 0.1.2

leixjin 维护。



 
依赖
CryptoSwift= 1.1.3
Starscream= 3.1.1
PromiseKit= 6.11.0
AnyCodable-FlightSchool= 0.2.3
 

WC-Swift 0.1.2

  • hewigovens

WalletConnect

Codacy Badge CI

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

安装

通过 CocoaPodsCarthageSwift 包管理器 可以访问 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 文件。