메인 콘텐츠로 건너뛰기

인터스티셜 광고 형태 소개

  • 화면 전체를 덮는 형태로 노출되는 광고입니다.
  • 이미지/동영상 모두 포함되나 동영상 소재가 더 많이 노출되며 일반적으로 5초 후부터 스킵이 가능합니다.
Interstitial Example Image Pn

How It Works

Interstitial Example Gif Kor Gi

광고 단위 설정

대시보드에서 발급받은 ad unit ID를 사용하여 광고 단위를 설정하세요.
let interstitialUnit = DaroAdUnit(unitId: "your_interstitial_unit_id")

광고 구현

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

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

    private func setupInterstitialAd() {
        // 광고 로드 성공 리스너
        daroInterstitialLoader.listener.onAdLoadSuccess = { [weak self] ad, adInfo in
            print("[DARO] Listener Interstitial Ad loaded: \(ad) \(adInfo)")
            self?.showAd(ad: ad)
        }

        // 광고 클릭 리스너
        daroInterstitialLoader.listener.onAdClicked = { adInfo in
            print("[DARO] Listener Interstitial Ad clicked: \(adInfo)")
        }

        // 광고 노출 리스너
        daroInterstitialLoader.listener.onAdImpression = { adInfo in
            print("[DARO] Listener Interstitial Ad impression: \(adInfo)")
        }

        // 광고 로드 실패 리스너
        daroInterstitialLoader.listener.onAdLoadFail = { error in
            print("[DARO] Listener Interstitial Ad failed: \(error)")
        }
        daroInterstitialLoader.loadAd()
    }

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

        // 광고 표시 성공 리스너
        self.daroInterstitialAd?.interstitialListener.onShown = { adInfo in
            print("[DARO] Listener Interstitial Ad shown: \(adInfo)")
        }

        // 광고 닫힘 리스너
        self.daroInterstitialAd?.interstitialListener.onDismiss = { adInfo in
            print("[DARO] Listener Interstitial Ad dismissed: \(adInfo)")
        }

        // 광고 표시 실패 리스너
        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)
    }
}

트러블슈팅: 광고 닫기 버튼 겹침 이슈

DARO iOS SDK를 사용해 전면 광고를 표시할 때, 일부 광고 크리에이티브에서 상단 Safe Area 또는 Status Bar 영역과 UI가 겹쳐 보이는 현상이 발생할 수 있습니다. 아래는 광고가 표시되는 동안만 Status Bar를 숨기고, 광고 종료 시 원복하는 방법을 안내합니다.
1. ViewController에 Status Bar 제어 프로퍼티 추가:
class ExampleViewController: UIViewController {
    private var isAdShowing = false

    override var prefersStatusBarHidden: Bool {
        return isAdShowing
    }

    override var childForStatusBarHidden: UIViewController? {
        return presentedViewController
    }
}
2. 광고 표시 전 Status Bar 숨기기 및 콜백에서 복구:
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()
    }

    // show() 직전에 Status Bar 숨기기
    isAdShowing = true
    setNeedsStatusBarAppearanceUpdate()
    daroInterstitialAd?.show(viewController: self)
}