跳到主要内容

Wallet 用法

配置网络和客户端配对

首先确保正确配置了网络和客户端配对

实例化一个Client

创建AppMetadata对象。它将描述您的应用程序并定义其在web浏览器中的外观。 然后配置'Auth实例Account对象。

Auth.configure(account: Account("eip155:56:0xe5EeF1368781911d265fDB6946613dA61915a501")!)

订阅认证发布者

当您的Auth实例收到来自对等客户机的请求或响应时,它将发布一个相关事件。因此,您应该设置一个订阅来处理它们。

Auth.instance.authRequestPublisher
.receive(on: DispatchQueue.main)
.sink { [unowned self] _ in
//handle event
}.store(in: &publishers)

以下发布者可供订阅:

public var authRequestPublisher: AnyPublisher<AuthRequest, Never> {
public var authResponsePublisher: AnyPublisher<(id: RPCID, result: Result<Cacao, AuthError>), Never> {
public let socketConnectionStatusPublisher: AnyPublisher<SocketConnectionStatus, Never>

连接客户端

你的钱包应该允许用户扫描由dapps生成的二维码,并处理通用链接。但是,您需要自己负责实现它。一旦你从二维码调用对方法派生出一个URI:

try await Auth.instance.pair(uri: uri)

处理来自dapp的请求

与dapp配对后,您的钱包将订阅身份验证请求。请求将由' authRequestPublisher '发布。当钱包接收到请求时,您希望将其呈现给用户并请求签名。在用户签署身份验证消息后,钱包应该对dapp作出响应。

Type参数表示将在DApp端使用的签名验证方法。支持的签名验证方法:EIP191EIP1271。在这两种情况下,消息将使用EIP191标准进行签名。

let signer = MessageSignerFactory.create()
let signature = try signer.sign(message: request.message, privateKey: privateKey, type: .eip191)
try await Auth.instance.respond(requestId: request.id, signature: signature)

如果用户拒绝认证请求,调用:

try await Auth.instance.reject(requestId: request.id)

被挂起的请求

如果你错过了一些请求,你可以用它来查询

Auth.instance.getPendingRequests()

接下来

  • 试试我们的Showcase钱包,它是WalletConnectSwiftV2存储库的一部分。
  • XCode:Product -> Build Documentation