전면 광고

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

앱이 전면 광고를 표시하면 사용자는 광고를 탭해 광고주 사이트로 이동하거나 광고를 닫고 앱으로 돌아올 수 있습니다.

전면 광고에서는 사용자의 주의가 광고에 집중되므로 노출 단가가 더 높습니다.

표시 형태

이 가이드는 Compose Multiplatform 앱에 전면 광고를 통합하는 방법을 설명합니다. 코드 예시와 절차뿐 아니라 형식별 권장 사항과 추가 자료 링크도 포함합니다.

사전 요건

  1. 빠른 시작에 따라 Yandex Mobile Ads Compose Multiplatform 플러그인을 통합합니다.
  2. 최신 Yandex Mobile Ads Compose Multiplatform 플러그인 버전을 사용하세요. 미디에이션을 사용하는 경우 최신 통합 빌드 버전도 사용하세요.

구현

전면 광고 통합의 주요 단계:

  • Composable 범위에서 rememberInterstitialAdLoader()를 얻습니다.
  • 코루틴(suspend) 안에서 loadAd(AdRequest)InterstitialAd를 로드합니다.
  • 필요 시 show() 전에 로드된 광고에 InterstitialAdEventListener를 설정합니다.
  • UI가 준비되면(예: 사용자 동작 후) show()를 호출합니다.

전면 광고 통합 시 특징

로드 중 예외가 발생하거나 오류 처리에서 실패가 보고되면 즉시 새 광고를 다시 로드하지 마세요. 부득이하면 재시도 횟수를 제한하세요. 그러면 제한이 있을 때 끊임없는 실패 요청과 연결 문제를 줄일 수 있습니다.

광고 로드

rememberInterstitialAdLoader()로 로더를 만든 뒤, Yandex Advertising Network 인터페이스의 adUnitId가 들어 있는 AdRequestloadAd를 호출합니다.

AdRequest로 요청을 확장할 수 있습니다(targeting, parameters, preferredTheme 등). 요청에 추가 컨텍스트를 넣으면 광고 품질이 크게 좋아질 수 있습니다. 자세한 내용은 광고 타게팅을 참고하세요.

전면 광고 로드 예시:

@Composable
fun InterstitialBlock(adUnitId: String) {
    val loader = rememberInterstitialAdLoader()
    val scope = rememberCoroutineScope()
    var interstitialAd by remember { mutableStateOf<InterstitialAd?>(null) }
    var isLoading by remember { mutableStateOf(false) }

    Button(
        onClick = {
            isLoading = true
            scope.launch {
                try {
                    interstitialAd = loader.loadAd(AdRequest(adUnitId = adUnitId))
                } catch (e: Exception) {
                    // Ad failed to load with AdRequestError.
                    // Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
                }
                isLoading = false
            }
        },
        enabled = !isLoading,
    ) {
        Text(if (isLoading) "로드 중..." else "전면 광고 로드")
    }

    Button(
        onClick = {
            interstitialAd?.show()
            interstitialAd = null
        },
        enabled = interstitialAd != null,
    ) {
        Text("전면 광고 표시")
    }
}

디버깅 시 adUnitId'demo-interstitial-yandex'를 사용할 수 있습니다.

광고 표시

전면 광고는 앱 동작의 자연스러운 휴지기에 보여 주세요. 게임 레벨 사이나 전환 직후(예: 파일 다운로드 완료)가 좋습니다.

전면 광고 생명 주기를 추적하려면 show() 전에 InterstitialAd 인스턴스에 InterstitialAdEventListener를 설정하세요.

val ad = interstitialAd ?: return
ad.setAdEventListener(
    object : InterstitialAdEventListener {
        override fun onAdShown() {
            // Called when an ad is shown.
        }

        override fun onAdFailedToShow(adError: AdError) {
            // Called when an ad failed to show. Clear the reference and preload the next ad if needed.
        }

        override fun onAdDismissed() {
            // Called when ad is dismissed. Preload the next interstitial here if appropriate.
        }

        override fun onAdClicked() {
            // Called when a click is recorded for an ad.
        }

        override fun onAdImpression(impressionData: ImpressionData?) {
            // Called when an impression is recorded for an ad.
        }
    },
)
ad.show()

리소스 해제

onAdDismissed 또는 onAdFailedToShow 이후에는 광고 객체 참조를 버리고, 필요하면 다음 소재 로드를 시작하세요. 이미 표시된 광고에 대한 강한 참조는 유지하지 마세요.

전면 광고 통합 테스트

광고 테스트를 위한 데모 광고 단위 사용

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

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

데모 adUnitId: demo-interstitial-yandex.

Важно

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

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

광고 통합 테스트

SDK의 내장 분석기를 사용하여 전면 광고 통합을 확인할 수 있습니다.

이 도구는 전면 광고가 제대로 통합되었는지 확인하고 로그에 상세한 보고서를 출력합니다. 보고서를 보려면 Android 애플리케이션 디버깅에 사용하는 Logcat 도구에서 "YandexAds" 키워드를 검색하세요.

adb logcat -v brief '*:S YandexAds'

통합에 성공하면 다음과 같은 메시지가 표시됩니다.

adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type interstitital was integrated successfully

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

데모 광고 유닛으로 광고 테스트

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

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

데모 adUnitId: demo-interstitial-yandex.

Важно

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

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

광고 통합 검증

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

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

YMAMobileAds.enableLogging()

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

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

광고 사전 로드

광고 로딩은 모바일 미디에이션에 연결된 광고 네트워크 수와 사용자의 인터넷 속도에 따라 몇 초가 걸릴 수 있습니다. 광고를 표시하기 전에 미리 로드하는 것을 권장합니다.

적절한 시점에 표시할 수 있도록 미리 loadAd를 호출하세요.

현재 광고를 보여 준 직후 다음 광고 로드를 시작하려면 onAdDismissed 이벤트에 연결하세요.

표시될 가능성이 낮은 너무 많은 화면에 광고를 캐시하면 광고 효과가 떨어질 수 있습니다. 예를 들어 사용자가 세션당 2~3개의 게임 레벨을 완료하는 경우, 6~7개의 화면에 광고를 캐시하면 안 됩니다. 광고 가시성이 감소할 수 있으며, 광고 시스템이 앱의 우선순위를 낮출 수 있습니다.

앱에 적절한 균형을 찾을 수 있도록 Yandex Advertising Network 인터페이스에서 "노출 비율" 또는 "가시적 노출 비율" 지표를 추적하세요. 20% 미만인 경우, 캐싱 알고리즘을 수정해야 할 가능성이 있습니다. 노출 비율이 높을수록 효과가 큽니다.

추가 자료