WarpLink
SDKsiOS

Deep Links

Handle Universal Links in your iOS app to route taps into the right screen, with cold start and warm start covered by the WarpLink SDK.

When a user taps a WarpLink URL and your app is installed, iOS opens your app via Universal Links. The SDK resolves the URL into a WarpLinkDeepLink with the destination, custom parameters, and attribution data, then delivers it to the onLink callback you passed to configure(). This covers both cold start and warm start.

Deliver Incoming URLs to the SDK

You register onLink once in configure() (see iOS SDK). The only remaining job is handing tapped URLs to the SDK. Choose one, no swizzling:

Set your scene delegate class to WarpLinkSceneDelegate (or your app delegate to WarpLinkAppDelegate). The SDK captures Universal Links and dispatches resolved links to onLink automatically.

Keep your own delegate and forward the incoming activity or URL:

In SwiftUI, use .onOpenURL { WarpLink.open($0) } or .onContinueUserActivity(...) { WarpLink.continue($0) }.

WarpLink.open(_:) and WarpLink.continue(_:) return a Bool you can ignore or act on. They return true when the URL is a WarpLink link the SDK will handle: a WarpLink domain and a path of exactly one segment, which is what a slug always is. aplnk.to always counts; a custom domain counts once you declare it, which is what makes the answer right on the first launch. By default your app is associated with every path on the domain, so other paths open your app too. The SDK returns false for those and does nothing with them, leaving your own router free to take over:

The onLink callback is always called on the main thread, so you can safely update UI from it.

Cold Start vs Warm Start

ScenarioEntry PointBehavior
Cold startApp not running: system launches itThe forwarded URL resolves once the app is ready, then onLink fires
Warm startApp in background: brought to foregroundThe forwarded URL resolves immediately, then onLink fires

Both cases flow through the same onLink callback. The SDK resolves the link by calling the WarpLink API.

Your onLink callback receives a WarpLinkDeepLink:

Manual Resolution (Advanced)

To drive resolution yourself, set autoDeepLinkHandling: false in WarpLinkOptions and call handleDeepLink with the URL you receive from the OS:

Error Handling

Verify AASA Configuration

WarpLink generates the Apple App Site Association file automatically. Verify it's served correctly:

The response should contain your Team ID and Bundle ID in the applinks section.

After adding Associated Domains, you may need to delete and reinstall the app for iOS to re-fetch the AASA file.

On this page