앱 오픈 광고
앱 실행 광고는 앱 로드 화면을 수익화하기 위한 특별한 광고 형식입니다. 이러한 광고는 언제든지 종료할 수 있으며, 사용자가 앱을 전면으로 가져올 때, 즉 앱을 시작할 때 또는 백그라운드에서 돌아올 때 제공되도록 설계되었습니다.
이 가이드는 Jetpack Compose 확장을 사용해 Android 앱에 앱 오픈 광고를 통합하는 방법을 설명합니다. 코드 예시와 절차 외에도 이 광고 형식 사용 권장 사항과 추가 자료 링크를 제공합니다.
Внимание
앱 실행 광고는 세로 방향의 앱에만 배치할 수 있습니다. 가로 방향에서는 광고가 제공되지 않습니다.
표시 형태
앱 오픈 광고에는 Go to the app 버튼이 있어 사용자가 자신의 앱 안에 있음을 알고 광고를 닫을 수 있습니다. 광고가 어떻게 보이는지 예시는 다음과 같습니다.
사전 요건
- 빠른 시작에 설명된 SDK 통합 단계를 수행하세요.
- 광고 SDK를 미리 초기화하세요.
- 최신 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"))
}
구현
- 앱 시작 시 SDK를 초기화합니다.
rememberAppOpenAdLoader()로 광고 로더를 생성합니다.- suspend 함수
loadAd()로 광고를 로드합니다. show(Activity)메서드로 광고를 표시합니다.
주요 단계
-
앱 시작 시 SDK를 초기화합니다.
YandexAds.initialize(this) { // Now you can use ads } -
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" } -
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. } } } -
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)
}
}
앱 오픈 광고 통합 시 유의 사항
- Yandex Mobile Ads SDK 메서드 호출은 모두 메인 스레드에서 수행해야 합니다.
- 로드에 시간이 걸릴 수 있으므로, 광고가 아직 로드되지 않았다고 해서 콜드 스타트를 지연시키지 마세요.
- 웜 스타트에서 표시할 광고는 미리 로드해 두세요.
- 앱 시작 시점에 앱 오픈 광고와 다른 광고 형식을 동시에 로드하는 것은 권장하지 않습니다. 그 시점에 앱이 필요한 데이터를 받는 중일 수 있어 기기와 네트워크에 부하가 걸리고 광고 로드가 느려질 수 있습니다.
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
광고 통합에 문제가 있는 경우, 문제에 대한 상세한 보고서와 해결 방법에 대한 권장 사항을 받게 됩니다.
권장 사항
-
로딩 화면(스플래시 화면) 이전에 앱 오픈 광고를 표시하지 마세요.
로딩 화면을 두면 사용자 경험이 더 자연스럽고 이해하기 쉬워집니다. 사용자는 어떤 앱을 열었는지 명확히 알 수 있어 당황하지 않습니다. 이 화면에서 로딩 표시나 “광고 후 앱 콘텐츠가 이어집니다” 같은 문구로 곧 광고가 나온다는 것을 알려 줄 수도 있습니다.
-
광고 요청과 실제 표시 사이에 지연이 있으면 사용자가 잠깐 앱을 연 뒤 콘텐츠와 무관한 광고를 보게 될 수 있습니다. 사용자 경험에 좋지 않으므로 이런 상황은 피하는 것이 좋습니다. 한 가지 방법은 주요 앱 콘텐츠를 보여주기 전에 로딩 화면을 쓰고, 그 화면에서부터 광고 표시를 시작하는 것입니다. 로딩 화면 뒤에 바로 어떤 콘텐츠가 열리는 구조라면 그 순간에는 광고를 보여 주지 않는 편이 낫습니다.
-
신규 사용자에게는 앱을 몇 번 열고 사용해 본 뒤에 앱 오픈 광고를 보여 주세요. 일정 레벨 클리어, 앱 실행 횟수, 리워드 참여 여부 등 앱 내 기준을 충족한 사용자에게만 표시하세요. 설치 직후 바로 광고를 보여 주지 마세요.
-
앱 내 사용자 행동에 따라 표시 빈도를 조절하세요. 모든 콜드/웜 스타트마다 광고를 보여 주지 마세요.
-
앱이 백그라운드에 있던 시간이 일정 기준(예: 30초, 2분, 15분) 이상일 때만 광고를 표시하세요.
-
앱마다 특성이 다르므로 테스트를 통해 이탈이나 체류 시간을 해치지 않으면서 수익을 최대화하는 방식을 찾는 것이 중요합니다. 사용자 행동은 시간에 따라 바뀔 수 있으므로, 앱 오픈 광고 표시 전략을 주기적으로 검증하는 것을 권장합니다.
추가 자료
-
GitHub 링크.