전면 광고(SwiftUI)

전면 광고는 게임 레벨 전환이나 목표 작업 완료와 같은 자연스러운 중단 시 앱 콘텐츠 내에 삽입되는 전체 화면 광고 형식입니다.

전면 광고가 표시되면 사용자는 광고를 눌러 광고주 사이트로 가거나 닫고 앱으로 돌아올 수 있습니다.

전면 광고는 사용자의 주의를 광고에 집중시키므로 CPM이 높은 편입니다.

모양

이 가이드는 iOS 앱에서 SwiftUI로 전면 광고를 연동하는 방법을 설명합니다.

사전 요구 사항

  1. 빠른 시작에 설명된 SDK 통합 단계를 수행하세요.
  2. 광고 SDK를 미리 초기화하세요.
  3. 최신 Yandex Mobile Ads SDK 버전을 사용하고 있는지 확인하세요. 미디에이션을 사용하는 경우, 최신 통합 빌드 버전을 실행하고 있는지도 확인하세요.

구현

SwiftUI에서 전면 광고 연동 주요 단계:

  • 루트(또는 해당) View.interstitialAd(isPresented:request:onEvent:)를 붙입니다.
  • Binding<AdRequest?>로 로드: nil이 아니면 로드 시작.
  • Binding<Bool>로 표시: true면 로드된 광고 표시(로드 중이면 준비되면 표시).
  • Adfox 사용 시 추가 설정AdRequest로 전달.
  • onEvent에서 InterstitialAdEvent 처리.

전면 광고 연동 시 유의사항

  1. .didFailToLoad 직후 새 광고 로드는 권장하지 않습니다. 재시도 시 횟수를 제한하세요.

  2. 표시 시나리오 전체에서 살아 있는 뷰(화면·네비게이션 루트 등)에 수정자를 유지해 로드 상태를 잃지 마세요.

광고 로드 및 표시

AdRequest와 두 상태(옵션 요청, 표시 플래그)를 사용합니다.

onEventInterstitialAdEvent로 로드·표시·닫기·오류를 받습니다.

import SwiftUI
import YandexMobileAds

struct InterstitialView: View {
    @State private var adRequest: AdRequest?
    @State private var isPresented = false

    var body: some View {
        VStack {
            Button("로드 및 표시") {
                adRequest = AdRequest(adUnitID: "R-M-XXXXX-YY")
            }
        }
        .interstitialAd(isPresented: $isPresented, request: $adRequest) { event in
            switch event {
            case .didLoad:
                isPresented = true
            case .didDismiss, .didFailToShow, .didFailToLoad:
                adRequest = nil
            default:
                break
            }
        }
    }
}

광고 단위 ID는 Yandex Advertising Network에서 받습니다.

AdRequest로 컨텍스트를 넘겨 품질을 높일 수 있습니다. 광고 타겟팅 참고.

예: 로드와 표시를 분리:

struct InterstitialView: View {
    @State private var adRequest: AdRequest?
    @State private var isPresented = false

    func loadAd() {
        adRequest = AdRequest(adUnitID: "R-M-XXXXX-YY")
    }

    func showAd() {
        isPresented = true
    }

    var body: some View {
        VStack {
            Button("로드", action: loadAd)
            Button("표시", action: showAd)
        }
        .interstitialAd(isPresented: $isPresented, request: $adRequest) { event in
            if case .didLoad = event {
                // showAd() 또는 isPresented = true
            }
        }
    }
}

로드 완료 전에 isPresented = true면 로드 성공 후 자동 표시됩니다.

광고 표시

자연스러운 멈춤(레벨 사이, 작업 완료 후 등)에 표시하세요.

.didLoadisPresented = true로 표시하거나 미리 플래그를 켤 수 있습니다.

닫기·표시 실패·로드 실패 후 isPresentedfalse로 돌아갑니다.

전면 광고 연동 테스트

데모 블록으로 테스트

광고 통합 및 앱 자체를 테스트하기 위해 테스트 광고를 사용하는 것이 좋습니다.

모든 광고 요청에 대해 테스트 광고가 반환되도록 보장하기 위해 특별한 데모 광고 배치 ID를 생성했습니다. 광고 통합을 확인하는 데 사용하세요.

데모 adUnitId: demo-interstitial-yandex.

Важно

앱을 스토어에 게시하기 전에 데모 배치 ID를 Yandex Advertising Network 인터페이스에서 획득한 실제 ID로 교체해야 합니다.

사용 가능한 데모 광고 배치 ID 목록은 테스트용 데모 광고 단위 섹션에서 찾을 수 있습니다.

연동이 올바른지 확인

네이티브 콘솔 도구를 사용하여 광고 통합을 테스트할 수 있습니다.

자세한 로그를 보려면 YMAMobileAds 클래스의 enableLogging 메서드를 호출하세요.

YMAMobileAds.enableLogging()

SDK 로그를 보려면 콘솔 도구로 이동하여 Subsystem = com.mobile.ads.ads.sdk를 설정하세요. 카테고리와 오류 수준별로 로그를 필터링할 수도 있습니다.

광고 통합에 문제가 있는 경우, 문제에 대한 상세한 보고서와 해결 방법에 대한 권장 사항을 받게 됩니다.

추가 자료