Skip to main content
This is an enterprise-only feature. Please contact us to enable.
On iOS the hosted connect page contract is the same as the web, hosted inside a web view. The result comes back on a custom URL scheme instead of an https callback. The whole integration is one small Swift file, FireblocksConnectFlow.swift. Copy it, call it, read the result. For a fully native wallet list with message and transaction signing, see iOS headless.
Present with ASWebAuthenticationSession: it is built for “open web, return via a callback scheme,” runs ephemerally (no consent prompt, no stale-session lag), and needs no navigation glue. Use a WKWebView only if you need the flow embedded in custom UI.
FireblocksConnectFlow.swift

1. Register your URL scheme

Add your app’s custom scheme to Info.plist. It only has to match the scheme you pass to the flow.
Info.plist

2. Present the flow

Call FireblocksConnectFlow.present. It appends redirect_uri, a random nonce, and embedded=1 to the URL, opens the session, verifies the returned nonce, and hands you a typed result. Pass environmentId to target a different Dynamic environment, and locale / theme to override the hosted page’s UI locale and theme.
ConnectButton.swift
Forward your app’s onOpenURL to FireblocksConnectFlow.handleCallbackURL($0). Most wallets return inside the session. Phantom connects inside its own in-app browser, and its “Return to app” button opens <scheme>://wallet-return without any connection data. handleCallbackURL consumes that URL and leaves the session open, because the result still arrives inside the session over WalletConnect.
App.swift

3. Use the result

WalletConnection carries the same fields as the web callback (the nonce is already verified for you):
The embedded=1 flag tells the page it is inside a native container, so it opens wallets via their native scheme and avoids redirect protocols that would escape to Safari. Real wallet round-trips require a physical device. Wallets do not run in the Simulator.
Last modified on October 1, 2026