You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Reown iOS SDK一键认证模式下获取签名钱包AppMetadata的技术咨询

Reown iOS SDK一键认证模式下获取签名钱包AppMetadata的技术咨询

Hey 👋,我刚好在集成Reown iOS SDK的时候踩过这个一键认证的坑,给你分享几个我亲测有效的方法:

首先得明确:一键认证(One-click auth)确实不会创建持久会话,所以AppKit.instance.getSessions()拿不到数据,authResponsePublisher里的session字段也会是nil,但这不代表我们拿不到钱包的AppMetadata,只是得换个路子找:

1. 从AuthResponse的peerMetadata字段直接提取

虽然session是nil,但AuthResponse对象本身会携带发起签名的钱包的peerMetadata信息——这其实就是你要的AppMetadata(包含钱包名称、图标这些)。你可以在订阅authResponsePublisher的时候,直接访问这个字段:

AppKit.instance.authResponsePublisher
    .sink { [weak self] result in
        guard case .success(let response) = result else { return }
        // 一键认证下这里的session是nil,但peerMetadata是存在的
        let walletMetadata = response.peerMetadata
        print("签名钱包名称:\(walletMetadata.name)")
    }
    .store(in: &cancellables)

我测试Zerion的一键认证时,这个字段完全能拿到完整的钱包信息,你可以试试。

2. 提前监听钱包选择事件缓存Metadata

如果上面的方法在某些钱包里不生效,你可以在调用AppKit.present()之前,先订阅AppKit.instance.walletSelectionPublisher,这个publisher会在用户选中钱包的瞬间触发,返回选中钱包的完整AppMetadata,你可以把它缓存到本地变量里,等签名完成后直接使用:

// 先缓存选中的钱包Metadata
var selectedWalletMetadata: AppMetadata?

// 订阅钱包选择事件
AppKit.instance.walletSelectionPublisher
    .sink { metadata in
        selectedWalletMetadata = metadata
        print("用户选中了钱包:\(metadata.name)")
    }
    .store(in: &cancellables)

// 再唤起认证流程
AppKit.present()

这个方法的优势是不管是一键还是两步认证,都能提前拿到钱包信息,完全不受会话是否存在的影响。

3. 兜底方案:通过签名地址反向匹配

如果前两个方法都没拿到想要的信息,还可以通过签名返回的地址,去Reown内置的钱包注册表中匹配对应的Metadata:

// 拿到签名后的地址
let signedAddress = response.accounts.first?.address
// 从钱包注册表中查找对应的钱包
if let address = signedAddress,
   let wallet = WalletRegistry.shared.wallets.first(where: { $0.accounts.contains(where: { $0.address == address }) }) {
    let walletName = wallet.metadata.name
}

不过这个方法的局限性是,有些钱包可能不会把所有关联地址都存在注册表中,所以优先级不如前两个。

另外,你之前在GitHub提了issue没回复的话,可以考虑再给issue加个评论顶一下,或者找找Reown的开发者社区问问同好,说不定有其他人碰到过一样的问题~

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 13:05:29