Skip to main content

Interstitial Ad Format

Full-screen ads that cover the entire app interface. Includes both image and video ads (video more common), typically skippable after 5 seconds. Interstitial Example Image Pn

How It Works

Interstitial Example Gif Gi

Ad Unit Setup

Configure your ad unit using the ad unit ID issued from the dashboard.
let interstitialUnit = DaroAdUnit(unitId: "your_interstitial_unit_id")

Ad Implementation

class ExampleViewController: UIViewController {
    private var daroInterstitialAd: DaroInterstitialAd? = nil
    let daroInterstitialLoader = DaroInterstitialAdLoader(unit: interstitialUnit)

    override func viewDidLoad() {
        super.viewDidLoad()
        setupInterstitialAd()
    }

    private func setupInterstitialAd() {
        // Ad load success listener
        daroInterstitialLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
            print("[DARO] Listener Interstitial Ad loaded: \(ad) \(adInfo)")
            self?.showAd(ad: ad)
        }

        // Ad click listener
        daroInterstitialLoader.listener.onAdClicked = { adInfo in
            print("[DARO] Listener Interstitial Ad clicked: \(adInfo)")
        }

        // Ad impression listener
        daroInterstitialLoader.listener.onAdImpression = { adInfo in
            print("[DARO] Listener Interstitial Ad impression: \(adInfo)")
        }

        // Ad load fail listener
        daroInterstitialLoader.listener.onAdLoadFail = { error in
            print("[DARO] Listener Interstitial Ad failed: \(error)")
        }
        daroInterstitialLoader.loadAd()
    }

    private func showAd(ad: DaroInterstitialAd) {
        self.daroInterstitialAd = ad

        // Ad show success listener
        self.daroInterstitialAd?.interstitialListener.onShown = { adInfo in
            print("[DARO] Listener Interstitial Ad shown: \(adInfo)")
        }

        // Ad dismiss listener
        self.daroInterstitialAd?.interstitialListener.onDismiss = { adInfo in
            print("[DARO] Listener Interstitial Ad dismissed: \(adInfo)")
        }

        // Ad show fail listener
        self.daroInterstitialAd?.interstitialListener.onFailedToShow = { adInfo, error in
            print("[DARO] Listener Interstitial Ad failed to show: \(adInfo) \(error)")
        }
        showInterstitialAd()
    }

    private func showInterstitialAd() {
        daroInterstitialAd?.show(viewController: self)
    }
}

Troubleshooting: Ad Close Button Overlap Issue

When displaying interstitial ads using the DARO iOS SDK, some ad creatives may visually overlap with the top Safe Area or Status Bar. The following guide shows how to hide the Status Bar only while the ad is displayed and restore it once the ad is dismissed.
1. Add status bar control properties to your ViewController:
class ExampleViewController: UIViewController {
    private var isAdShowing = false

    override var prefersStatusBarHidden: Bool {
        return isAdShowing
    }

    override var childForStatusBarHidden: UIViewController? {
        return presentedViewController
    }
}
2. Hide status bar before showing ad and restore in callbacks:
private func showAd(ad: DaroInterstitialAd) {
    self.daroInterstitialAd = ad

    self.daroInterstitialAd?.interstitialListener.onShown = { [weak self] adInfo in
        print("[DARO] Interstitial Ad shown")
    }

    self.daroInterstitialAd?.interstitialListener.onDismiss = { [weak self] adInfo in
        self?.isAdShowing = false
        self?.setNeedsStatusBarAppearanceUpdate()
    }

    self.daroInterstitialAd?.interstitialListener.onFailedToShow = { [weak self] adInfo, error in
        self?.isAdShowing = false
        self?.setNeedsStatusBarAppearanceUpdate()
    }

    // Hide status bar just before show()
    isAdShowing = true
    setNeedsStatusBarAppearanceUpdate()
    daroInterstitialAd?.show(viewController: self)
}