전면 광고(SwiftUI)
전면 광고는 게임 레벨 전환이나 목표 작업 완료와 같은 자연스러운 중단 시 앱 콘텐츠 내에 삽입되는 전체 화면 광고 형식입니다.
전면 광고가 표시되면 사용자는 광고를 눌러 광고주 사이트로 가거나 닫고 앱으로 돌아올 수 있습니다.
전면 광고는 사용자의 주의를 광고에 집중시키므로 CPM이 높은 편입니다.
모양
이 가이드는 iOS 앱에서 SwiftUI로 전면 광고를 연동하는 방법을 설명합니다.
사전 요구 사항
- 빠른 시작에 설명된 SDK 통합 단계를 수행하세요.
- 광고 SDK를 미리 초기화하세요.
- 최신 Yandex Mobile Ads SDK 버전을 사용하고 있는지 확인하세요. 미디에이션을 사용하는 경우, 최신 통합 빌드 버전을 실행하고 있는지도 확인하세요.
구현
SwiftUI에서 전면 광고 연동 주요 단계:
- 루트(또는 해당)
View에.interstitialAd(isPresented:request:onEvent:)를 붙입니다. Binding<AdRequest?>로 로드: nil이 아니면 로드 시작.Binding<Bool>로 표시:true면 로드된 광고 표시(로드 중이면 준비되면 표시).- Adfox 사용 시 추가 설정을
AdRequest로 전달. onEvent에서InterstitialAdEvent처리.
전면 광고 연동 시 유의사항
-
.didFailToLoad직후 새 광고 로드는 권장하지 않습니다. 재시도 시 횟수를 제한하세요. -
표시 시나리오 전체에서 살아 있는 뷰(화면·네비게이션 루트 등)에 수정자를 유지해 로드 상태를 잃지 마세요.
광고 로드 및 표시
AdRequest와 두 상태(옵션 요청, 표시 플래그)를 사용합니다.
onEvent와 InterstitialAdEvent로 로드·표시·닫기·오류를 받습니다.
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면 로드 성공 후 자동 표시됩니다.
광고 표시
자연스러운 멈춤(레벨 사이, 작업 완료 후 등)에 표시하세요.
.didLoad 후 isPresented = true로 표시하거나 미리 플래그를 켤 수 있습니다.
닫기·표시 실패·로드 실패 후 isPresented는 false로 돌아갑니다.
전면 광고 연동 테스트
데모 블록으로 테스트
광고 통합 및 앱 자체를 테스트하기 위해 테스트 광고를 사용하는 것이 좋습니다.
모든 광고 요청에 대해 테스트 광고가 반환되도록 보장하기 위해 특별한 데모 광고 배치 ID를 생성했습니다. 광고 통합을 확인하는 데 사용하세요.
데모 adUnitId: demo-interstitial-yandex.
Важно
앱을 스토어에 게시하기 전에 데모 배치 ID를 Yandex Advertising Network 인터페이스에서 획득한 실제 ID로 교체해야 합니다.
사용 가능한 데모 광고 배치 ID 목록은 테스트용 데모 광고 단위 섹션에서 찾을 수 있습니다.
연동이 올바른지 확인
네이티브 콘솔 도구를 사용하여 광고 통합을 테스트할 수 있습니다.
자세한 로그를 보려면 YMAMobileAds 클래스의 enableLogging 메서드를 호출하세요.
YMAMobileAds.enableLogging()
SDK 로그를 보려면 콘솔 도구로 이동하여 Subsystem = com.mobile.ads.ads.sdk를 설정하세요. 카테고리와 오류 수준별로 로그를 필터링할 수도 있습니다.
광고 통합에 문제가 있는 경우, 문제에 대한 상세한 보고서와 해결 방법에 대한 권장 사항을 받게 됩니다.
추가 자료
-
GitHub 링크.