Superwall

handleDeepLink()

A function that handles deep links and triggers paywalls based on configured campaigns.

Configure deep link campaigns on the Superwall dashboard by adding the deepLink event to a campaign trigger.

Deep link events are also tracked via SuperwallEvent.deepLink and sent to your SuperwallDelegate.

Purpose

Processes a deep link URL and triggers any associated paywall campaigns configured on the Superwall dashboard. Returns whether Superwall will handle the URL so you can fall back to your own routing.

Signature

@discardableResult
public static func handleDeepLink(_ url: URL) -> Bool

Parameters

NameTypeDescription
urlURLThe deep link URL to process for paywall triggers.

Returns / State

Returns true when Superwall will handle the URL. If called before Superwall.configure(...) completes, it only returns true for known Superwall URL formats or when cached config contains a deepLink_open trigger. Use the return value to continue your own deep-link handling when it is false.

Usage

In your SceneDelegate or AppDelegate:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
  guard let url = URLContexts.first?.url else { return }
  
  // Handle the deep link with Superwall
  let handled = Superwall.handleDeepLink(url)
  
  // Continue with your app's deep link handling if Superwall won't
  if !handled {
    handleAppDeepLink(url)
  }
}

iOS 13+ SceneDelegate:

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
  // Handle deep link on app launch
  if let url = connectionOptions.urlContexts.first?.url {
    let handled = Superwall.handleDeepLink(url)
    if !handled {
      handleAppDeepLink(url)
    }
  }
}

Legacy AppDelegate:

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  // Handle the deep link with Superwall
  let handled = Superwall.handleDeepLink(url)
  
  // Continue with your app's deep link handling
  if handled {
    return true
  }
  return handleAppDeepLink(url)
}

How is this guide?

Edit on GitHub