跳到主要内容

移动连接

移动钱包和移动应用程序之间的通信可以通过设计实现。使用qr码显示的URI,可以通过Android上的深度链接共享这个URI来建立连接。

在移动钱包和移动应用程序之间建立连接的常见模式如下:

  1. Dapp向用户显示一个连接按钮
  2. 用户按下按钮,Android系统显示一个应用程序选择器
  3. 用户被重定向到所选的钱包
  4. 钱包提示用户批准或拒绝一个会话
  5. 用户手动返回到Dapp
  6. 返回到Dapp后,Dapp和钱包之间的连接就建立了

当Dapp想要向钱包发送签名请求时,也会发生类似的情况:

  1. 用户按下一个按钮发送签名请求到钱包
  2. 用户被自动重定向到已经连接的钱包
  3. 钱包提示用户批准或拒绝请求
  4. 用户按下批准或拒绝请求,并自动重定向到已经连接的Dapp

Wallet 支持

为了在您的钱包中添加对移动链接的支持并接收会话提议,在您的移动钱包中使用Activity/Fragment中的意图过滤器或导航图中的deepLink标记注册以下深度链接。

深度链接如: wc:/{topic}@2

为了在你的钱包中接收签名请求,你需要用Redirect 对象初始化Kotlin SDK,在那里你传递一个深度链接,当从Dapp接收签名请求时重定向到你的钱包。

val redirect = "kotlin-wallet-wc:/request" //should be unique for your wallet

val appMetaData = Sign.Model.AppMetaData(
name = "Wallet Name",
description = "Wallet Description",
url = "Wallet Url",
icons = listOfIconUrlStrings,
redirect = redirect
)

val init = Sign.Params.Init(
application = application,
relayServerUrl = serverUrl
appMetaData = appMetaData
)

SignClient.initalize(init)

Heads-up: 为了使这个流程正常工作,Wallet必须用初始化时使用的同一个深度链接注册它的一个Android组件。

要检查上面描述的实现,请查看我们的示例钱包: https://github.com/WalletConnect/WalletConnectKotlinV2/tree/master/signSDK/wallet

Dapp 支持

向移动钱包用户发送会话建议,将配对URI作为触发钱包打开和使用配对URI的深度链接

requireActivity().startActivity(Intent(Intent.ACTION_VIEW, deeplinkPairingUri.toUri()))

为了在Dapp中添加对移动链接的支持,并从钱包中接收签名请求响应,您需要用 Redirect对象初始化Kotlin SDK,在这里传递一个深度链接,当从钱包接收签名请求响应时,该链接会重定向到Dapp。

val redirect = "kotlin-dapp-wc:/request" //should be unique for your Dapp

val appMetaData = Sign.Model.AppMetaData(
name = "Wallet Name",
description = "Wallet Description",
url = "Wallet Url",
icons = listOfIconUrlStrings,
redirect = redirect
)

val init = Sign.Params.Init(
application = application,
relayServerUrl = serverUrl
appMetaData = appMetaData
)

SignClient.initalize(init)

Heads-up: 为了使这个流程正常工作,Dapp必须用初始化时使用的同一个深度链接注册它的一个Android组件。

要检查上面描述的流实现,请查看我们的示例Dapp: https://github.com/WalletConnect/WalletConnectKotlinV2/tree/master/signSDK/dapp

参考文献