移动端DApp使用WalletConnect v2连接Trust Wallet失败求助
移动端WalletConnect v2连接Trust Wallet失败问题
问题背景
移动端应用原本使用WalletConnect SDK v1连接MetaMask钱包,验证连接及用户登录功能正常。现计划升级至WalletConnect SDK v2,但MetaMask暂不支持该版本,因此尝试连接Trust Wallet。参考WalletConnectSwift库及官方文档集成后,通过代码生成URI可跳转至Trust Wallet,但钱包未显示验证界面,始终提示“WalletConnect会话已断开”(错误截图:
)。
核心代码示例
创建连接请求代码
let namespaces: [String: ProposalNamespace] = [ "eip155": ProposalNamespace( chains: [ Blockchain("eip155:137")!, Blockchain("eip155:1")! ], methods: ["personal_sign"], events: ["accountsChanged", "chainChanged"] ) ] Task { let uri = try await Pair.instance.create() try await Sign.instance.connect( requiredNamespaces: namespaces, topic: uri.topic ) await showConnectScreen(uri: uri) }
跳转钱包代码
func showConnectScreen(uri: WalletConnectURI) async { let url = URL(string: "https://link.trustwallet.com/wc?uri=\(uri.absoluteString)")! // 也曾尝试使用官方链接 // let url = URL(string: "https://walletconnect.com/wc?uri=\(uri.absoluteString)")! DispatchQueue.main.async { UIApplication.shared.open(url, options: [:]) { [weak self] _ in self?.dismiss(animated: true, completion: nil) } } }
已配置但未触发的监听回调
Sign.instance.sessionDeletePublisher .receive(on: DispatchQueue.main) .sink { _ in print("showSelectChainScreen") }.store(in: &publishers) Sign.instance.sessionResponsePublisher .receive(on: DispatchQueue.main) .sink { response in }.store(in: &publishers) Sign.instance.sessionSettlePublisher .receive(on: DispatchQueue.main) .sink { [unowned self] session in print("session: \(session)") }.store(in: &publishers)
补充信息
测试发现浏览器端Pancakeswap可正常连接多个钱包并完成验证,需解决移动端应用连接Trust Wallet或其他WalletConnect v2兼容钱包的问题。
内容的提问来源于stack exchange,提问作者bhaumik
相关产品推荐
相关产品推荐

