적응형 스티키 배너
앱 화면의 상단 또는 하단에 배치되어 자동으로 업데이트되는 작은 광고입니다. 주요 앱 콘텐츠와 겹치지 않으며 게임 앱에서 자주 사용됩니다.
적응형 스티키 배너는 각 장치에서 광고 크기를 최적화하여 최대 효율성을 제공합니다. 이 광고 유형은 개발자가 허용 가능한 최대 광고 너비를 설정할 수 있게 하지만, 최적의 광고 크기는 여전히 자동으로 결정됩니다. 적응형 스티키 배너의 높이는 화면 높이의 15%를 초과해서는 안 됩니다.
표시 형태
이 가이드는 Jetpack Compose 확장을 사용해 Android 앱에 적응형 스티키 배너를 통합하는 방법을 설명합니다. 코드 예시와 절차 외에도 이 광고 형식 사용 권장 사항과 추가 자료 링크를 제공합니다.
사전 요건
- 빠른 시작에 설명된 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"))
}
구현
적응형 스티키 배너 통합의 주요 단계:
BannerSize.Sticky크기와 함께BannerComposable을 사용합니다.- 광고 이벤트를 추적하려면 선택적으로
BannerEvents를 넘깁니다.
적응형 스티키 배너 통합 시 유의 사항
-
Yandex Mobile Ads SDK 메서드 호출은 모두 메인 스레드에서 수행해야 합니다.
-
onAdFailedToLoad()콜백으로 오류가 오면 즉시 새 광고를 다시 로드하지 마세요. 재시도가 필요하면 재로드 횟수를 제한해 제한 환경에서 연속 실패 요청과 연결 문제를 피하세요. -
적응형 스티키 배너는 사용 가능한 전체 너비를 쓰는 것이 가장 좋습니다. 대부분의 경우 기기 화면 전체 너비입니다. 앱 패딩과 디스플레이 세이프 영역을 반영하세요.
-
광고 크기는
BannerSize.Sticky(width)로 설정하며, 너비는Dp로 전달합니다(예:320.dp). 높이는 자동 계산됩니다. 계산에 쓰는Context는 Composable 내부에서 자동으로 해석됩니다. -
미디에이션을 사용하는 경우 초기화가 끝난 뒤에 스티키 배너 크기를 계산하는 것이 좋습니다. 초기화 전에는 예비 크기만 알 수 있으며, 실제 설정을 받은 뒤에는 바뀔 수 있습니다.
-
같은 기기에서는 스티키 배너 크기가 일정합니다. 특정 기기에서 레이아웃을 테스트해 두면 광고 크기가 바뀌지 않는다고 가정해도 됩니다.
-
적응형 스티키 배너 높이는 화면 높이의 15%를 넘지 않으며 최소 50dp입니다.
-
배너 상태는
rememberBannerAdState()로 만들고loadAd()를 명시적으로 호출해 로드를 시작합니다.adSize가 바뀌면BannerAdView가 자동으로 다시 생성됩니다.
광고 로드 및 표시
스티키 배너를 표시하려면 BannerSize.Sticky 크기로 rememberBannerAdState()로 상태를 만든 뒤 Banner Composable에 넘깁니다. loadAd()를 명시적으로 호출해 로드를 시작합니다.
광고를 로드하려면 Yandex Advertising Network 인터페이스에서 받은 광고 유닛 ID가 필요합니다.
AdRequest.Builder()로 사용자 관심 데이터, 페이지 컨텍스트, 위치 등 추가 데이터를 넘겨 광고 요청 매개변수를 확장할 수 있습니다. 요청에 컨텍스트 데이터를 더하면 광고 품질을 크게 높일 수 있습니다. 자세한 내용은 광고 타겟팅을 참고하세요.
적응형 스티키 배너를 표시하는 예시는 다음과 같습니다. 로드에 성공하면 배너가 자동으로 표시됩니다.
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.Banner
import com.yandex.mobile.ads.compose.BannerSize
import com.yandex.mobile.ads.compose.rememberBannerAdState
@Composable
fun MyScreen() {
val bannerState = rememberBannerAdState(
adSize = BannerSize.Sticky(width = 320.dp),
)
LaunchedEffect(Unit) {
bannerState.loadAd(AdRequest.Builder("your-ad-unit-id").build())
}
Banner(
state = bannerState,
modifier = Modifier.fillMaxWidth(),
)
}
광고 이벤트를 추적하려면 상태를 만들 때 BannerEvents를 넘깁니다.
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.Banner
import com.yandex.mobile.ads.compose.BannerEvents
import com.yandex.mobile.ads.compose.BannerSize
import com.yandex.mobile.ads.compose.rememberBannerAdState
@Composable
fun MyScreen() {
val bannerState = rememberBannerAdState(
adSize = BannerSize.Sticky(width = 320.dp),
events = BannerEvents(
onAdLoaded = { Log.d("YandexAds", "Banner loaded") },
onAdFailedToLoad = { error -> Log.e("YandexAds", error.description) },
onAdClicked = { Log.d("YandexAds", "Banner clicked") },
onImpression = { data -> Log.d("YandexAds", "Impression: ${data?.rawData}") },
),
)
LaunchedEffect(Unit) {
bannerState.loadAd(AdRequest.Builder("your-ad-unit-id").build())
}
Banner(
state = bannerState,
modifier = Modifier.fillMaxWidth(),
)
}
Adfox를 통해 광고를 제공하는 경우, 배너 광고 응답 이후에는 campaignId, bannerId, 그리고 placeId 데이터에 AdAttributes 유형의 adAttributes 속성을 사용하여 BannerAdView 객체에서 액세스할 수 있습니다.
적응형 스티키 배너 통합 테스트
광고 테스트를 위한 데모 광고 단위 사용
적응형 스티키 배너 통합 및 앱 자체를 테스트하기 위해 테스트 광고를 사용하는 것이 좋습니다.
모든 광고 요청에 대해 테스트 광고가 반환되도록 보장하기 위해 특별한 데모 광고 배치 ID를 생성했습니다. 광고 통합을 확인하는 데 사용하세요.
데모 adUnitId: demo-banner-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 banner was integrated successfully
배너 광고 통합에 문제가 있는 경우, 문제에 대한 상세한 보고서와 해결 방법에 대한 권장 사항을 받게 됩니다.
추가 자료
-
GitHub 링크.