Mobile (WalletConnect)

Deeplinking

Open Joey mobile directly from your app with joey:// and wc: links.

Joey registers two custom URL schemes on iOS and Android: joey:// and wc:. Joey doesn't currently support https universal links or Android App Links.

Link Use
joey://settings/wc?uri=<encoded wc URI> Recommended. Opens Joey and starts pairing.
wc:<topic>@2?relay-protocol=irn&symKey=… A raw WalletConnect URI, opened through the wc: scheme.
joey://settings/wc Opens Joey's WalletConnect screen. Useful to bring Joey to the front after sending a request.
const deeplink = `joey://settings/wc?uri=${encodeURIComponent(uri)}`;
window.location.href = deeplink;

Always URL-encode the WalletConnect URI. Joey tolerates double-encoded and unencoded URIs, but encoding once is the reliable form.

With wc-client, generate builds this link for you:

import core from '@joey-wallet/wc-client/core';

const { data } = await actions.generate({ walletId: core.constants.wallets.joey.projectId });
if (data) window.location.href = data.deeplink;

Requests after pairing

Requests travel over the WalletConnect relay, not through links. On mobile, after sending a request, you can open joey://settings/wc to bring Joey to the front so the user sees it. Joey also accepts WalletConnect's request "wake-up" links and ignores their contents.

Returning to your app

Set metadata.redirect (native and/or universal) in your WalletConnect metadata. After a sign-in that started in an external browser, Joey uses it to send the user back.

Joey's built-in browser

Inside Joey's built-in dApp browser (the Explore tab), wc: links, joey://settings/wc?uri= links and WalletConnect pop-ups are caught and paired directly, so the user stays in the browser. The built-in browser doesn't inject a wallet provider, so dApps connect over WalletConnect there too.

Notes

  • Watch-only accounts can't connect.
  • Any link Joey doesn't recognise shows an "invalid link" message and opens the home screen.