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端使用的签名验证方法。支持的签名验证方法:EIP191, EIP1271。在这两种情况下,消息将使用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