앱 오픈 광고

앱 실행 광고는 앱 로드 화면을 수익화하기 위한 특별한 광고 형식입니다. 이러한 광고는 언제든지 종료할 수 있으며, 사용자가 앱을 전면으로 가져올 때, 즉 앱을 시작할 때 또는 백그라운드에서 돌아올 때 제공되도록 설계되었습니다.

이 가이드는 Jetpack Compose 확장을 사용해 Android 앱에 앱 오픈 광고를 통합하는 방법을 설명합니다. 코드 예시와 절차 외에도 이 광고 형식 사용 권장 사항과 추가 자료 링크를 제공합니다.

Внимание

앱 실행 광고는 세로 방향의 앱에만 배치할 수 있습니다. 가로 방향에서는 광고가 제공되지 않습니다.

표시 형태

앱 오픈 광고에는 Go to the app 버튼이 있어 사용자가 자신의 앱 안에 있음을 알고 광고를 닫을 수 있습니다. 광고가 어떻게 보이는지 예시는 다음과 같습니다.

사전 요건

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

용어

  • 콜드 스타트 — 앱이 메모리에 없을 때 실행되어 새 앱 세션이 만들어지는 경우입니다.
  • 웜 스타트 — 앱이 메모리에 일시 중단된 상태에서 백그라운드로 있다가 포그라운드로 전환되는 경우입니다.

Compose 확장을 사용하려면 build.gradle.kts에 의존성을 추가합니다.

dependencies {
    implementation("com.yandex.android:mobileads:8.0.0")
    implementation("com.yandex.android:mobileads-compose:8.0.0")

    // Compose BOM (minimum 2024.01.00)
    implementation(platform("androidx.compose:compose-bom:2025.03.00"))
}

구현

  1. 앱 시작 시 SDK를 초기화합니다.
  2. rememberAppOpenAdLoader()로 광고 로더를 생성합니다.
  3. suspend 함수 loadAd()로 광고를 로드합니다.
  4. show(Activity) 메서드로 광고를 표시합니다.

주요 단계

  1. 앱 시작 시 SDK를 초기화합니다.

    YandexAds.initialize(this) {
        // Now you can use ads
    }
    
  2. rememberAppOpenAdLoader()로 광고 로더를 생성합니다.

    Yandex Advertising Network 인터페이스에서 받은 광고 유닛 ID(AD_UNIT_ID)가 필요합니다.

    AdRequest.Builder()로 사용자 관심 데이터, 페이지 컨텍스트, 위치 등 추가 데이터를 넘겨 광고 요청 매개변수를 확장할 수 있습니다. 요청에 컨텍스트 데이터를 더하면 광고 품질을 크게 높일 수 있습니다. 자세한 내용은 광고 타겟팅을 참고하세요.

    import com.yandex.mobile.ads.compose.rememberAppOpenAdLoader
    
    @Composable
    fun SplashScreen(activity: Activity) {
        val loader = rememberAppOpenAdLoader()
        val AD_UNIT_ID = "R-M-XXXXXX-Y" // for testing you can use "demo-appopenad-yandex"
    }
    
  3. suspend 함수 loadAd()LaunchedEffect에서 호출해 광고를 로드합니다.

    LaunchedEffect(Unit) {
        when (val result = loader.loadAd(AdRequest.Builder(AD_UNIT_ID).build())) {
            is AppOpenAdLoadResult.Success -> appOpenAd = result.ad
            is AppOpenAdLoadResult.Failure -> {
                // Ad failed to load with AdRequestError.
                // Attempting to load a new ad from here is strongly discouraged.
            }
        }
    }
    
  4. show 메서드로 광고를 표시합니다.

    LaunchedEffect(appOpenAd) {
        appOpenAd?.show(activity)
    }
    

    Примечание

    광고가 이미 제공된 경우, show(Activity) 메서드를 호출하면 AppOpenAdEventListener.onAdFailedToShow(AdError)에서 표시 오류가 반환됩니다.

전체 예시

import com.yandex.mobile.ads.appopenad.AppOpenAdLoadResult
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.rememberAppOpenAdLoader

@Composable
fun SplashScreen(activity: Activity) {
    var appOpenAd by remember { mutableStateOf<AppOpenAd?>(null) }

    val loader = rememberAppOpenAdLoader()

    // Load immediately when entering the composable
    LaunchedEffect(Unit) {
        when (val result = loader.loadAd(AdRequest.Builder("R-M-XXXXXX-Y").build())) {
            is AppOpenAdLoadResult.Success -> appOpenAd = result.ad
            is AppOpenAdLoadResult.Failure -> Log.e("YandexAds", result.error.description)
        }
    }

    LaunchedEffect(appOpenAd) {
        appOpenAd?.show(activity)
    }
}

앱 오픈 광고 통합 시 유의 사항

  1. Yandex Mobile Ads SDK 메서드 호출은 모두 메인 스레드에서 수행해야 합니다.
  2. 로드에 시간이 걸릴 수 있으므로, 광고가 아직 로드되지 않았다고 해서 콜드 스타트를 지연시키지 마세요.
  3. 웜 스타트에서 표시할 광고는 미리 로드해 두세요.
  4. 앱 시작 시점에 앱 오픈 광고와 다른 광고 형식을 동시에 로드하는 것은 권장하지 않습니다. 그 시점에 앱이 필요한 데이터를 받는 중일 수 있어 기기와 네트워크에 부하가 걸리고 광고 로드가 느려질 수 있습니다.
  5. AppOpenAdLoadResult.Failure로 오류가 오면 즉시 새 광고를 다시 로드하지 마세요. 재시도가 필요하면 재로드 횟수를 제한해 제한 환경에서 연속 실패 요청과 연결 문제를 피하세요.

앱 오픈 광고 통합 테스트

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

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

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

데모 adUnitId: demo-appopenad-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 App Open Ad was integrated successfully

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

권장 사항

  1. 로딩 화면(스플래시 화면) 이전에 앱 오픈 광고를 표시하지 마세요.

    로딩 화면을 두면 사용자 경험이 더 자연스럽고 이해하기 쉬워집니다. 사용자는 어떤 앱을 열었는지 명확히 알 수 있어 당황하지 않습니다. 이 화면에서 로딩 표시나 “광고 후 앱 콘텐츠가 이어집니다” 같은 문구로 곧 광고가 나온다는 것을 알려 줄 수도 있습니다.

  2. 광고 요청과 실제 표시 사이에 지연이 있으면 사용자가 잠깐 앱을 연 뒤 콘텐츠와 무관한 광고를 보게 될 수 있습니다. 사용자 경험에 좋지 않으므로 이런 상황은 피하는 것이 좋습니다. 한 가지 방법은 주요 앱 콘텐츠를 보여주기 전에 로딩 화면을 쓰고, 그 화면에서부터 광고 표시를 시작하는 것입니다. 로딩 화면 뒤에 바로 어떤 콘텐츠가 열리는 구조라면 그 순간에는 광고를 보여 주지 않는 편이 낫습니다.

  3. 신규 사용자에게는 앱을 몇 번 열고 사용해 본 뒤에 앱 오픈 광고를 보여 주세요. 일정 레벨 클리어, 앱 실행 횟수, 리워드 참여 여부 등 앱 내 기준을 충족한 사용자에게만 표시하세요. 설치 직후 바로 광고를 보여 주지 마세요.

  4. 앱 내 사용자 행동에 따라 표시 빈도를 조절하세요. 모든 콜드/웜 스타트마다 광고를 보여 주지 마세요.

  5. 앱이 백그라운드에 있던 시간이 일정 기준(예: 30초, 2분, 15분) 이상일 때만 광고를 표시하세요.

  6. 앱마다 특성이 다르므로 테스트를 통해 이탈이나 체류 시간을 해치지 않으면서 수익을 최대화하는 방식을 찾는 것이 중요합니다. 사용자 행동은 시간에 따라 바뀔 수 있으므로, 앱 오픈 광고 표시 전략을 주기적으로 검증하는 것을 권장합니다.

추가 자료