광고 피드
광고 피드는 광고가 순서대로 이어진 단위입니다. 피드는 앱의 주요 콘텐츠로 넣을 수도 있고, 기존 콘텐츠 뒤에 올 수도 있습니다. 피드에는 수십 개의 광고가 포함될 수 있으며, 순차적으로 로드됩니다(한 번에 여러 광고가 로드됨).
이 가이드는 Android 앱에 광고 피드를 연동하는 과정을 다룹니다. 코드 예시와 설명 외에도 형식별 권장 사항과 추가 자료 링크를 포함합니다.
표시 예
사전 요구 사항
- 빠른 시작에 설명된 SDK 통합 단계를 따릅니다.
- 먼저 광고 SDK를 초기화해야 합니다.
- Yandex Mobile Ads SDK의 최신 버전을 사용 중인지 확인합니다.
구현
광고 피드 연동의 주요 단계:
FeedAdAppearance객체로 광고 피드의 외형을 설정합니다.FeedAdRequestConfiguration객체로 요청 구성을 만들고 설정합니다.FeedAd광고 피드 객체를 만들고 광고 로드 콜백용FeedAdLoadListener를 등록합니다.- 가능한 한 빨리
feedAd.preloadAd()를 호출해 광고를 미리 로드합니다. FeedAdAdapter어댑터를 만들고 이벤트 콜백용FeedAdEventListener를 등록합니다.RecyclerView.adapter에FeedAdAdapter를 설정합니다.
주요 단계
-
FeedAdAppearance라는 광고 피드 외형 구성 객체를 만듭니다.사용할 수 있는 매개변수:
cardWidth(필수): 게재되는 광고의 너비를 dp(밀도 무관 픽셀)로 설정합니다. 화면 너비에서 필요한 좌우 여백을 뺀 값을 기준으로 계산합니다.cardCornerRadius: 게재되는 광고의 모서리 둥글기 반경을 dp로 설정합니다.
KotlinJavaval feedMarginDp = 24 val screenWidthDp = (screenWidth / resources.displayMetrics.density).roundToInt() val cardWidthDp = screenWidthDp - 2 * feedMarginDp val cardCornerRadiusDp = 16.0 val feedAdAppearance = FeedAdAppearance.Builder(cardWidthDp) .setCardCornerRadius(cardCornerRadiusDp) .build()DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); int feedMarginDp = 24; int screenWidthDp = Math.round(displayMetrics.widthPixels / displayMetrics.density); val cardWidthDp = screenWidthDp - 2 * feedMarginDp; double cardCornerRadius = 16.0; FeedAdAppearance feedAdAppearance = new FeedAdAppearance.Builder(cardWidth) .setCardCornerRadius(cardCornerRadius) .build(); -
FeedAdRequestConfiguration객체를 만들고 설정합니다.Yandex Advertising Network 인터페이스에서 받은 게재 위치 ID(
AD_UNIT_ID)가 필요합니다.광고 요청의
Builder메서드에 사용자 관심사, 페이지 컨텍스트, 위치 등 추가 정보를 넣어 요청 매개변수를 확장할 수 있습니다. 요청에 컨텍스트를 더하면 광고 품질이 크게 좋아질 수 있습니다. 자세한 내용은 광고 타기팅을 참고하세요.KotlinJavaval AD_UNIT_ID = "R-M-XXXXXX-Y" // For debugging reasons you can use "demo-feed-yandex" val feedAdRequestConfiguration = FeedAdRequestConfiguration.Builder(AD_UNIT_ID).build()String AD_UNIT_ID = "R-M-XXXXXX-Y"; // For debugging reasons you can use "demo-feed-yandex" FeedAdRequestConfiguration feedAdRequestConfiguration = new FeedAdRequestConfiguration.Builder(AD_UNIT_ID).build(); -
FeedAd광고 피드 객체를 만들고 광고 로드 콜백용FeedAdLoadListener를 등록합니다.KotlinJavaval feedAdLoadListener = object : FeedAdLoadListener { override fun onAdLoaded() { // Called when additional ads are received for display } override fun onAdFailedToLoad(error: AdRequestError) { // Called when an additional ad request fails } } val feedAd = FeedAd.Builder(context, feedAdRequestConfiguration, feedAdAppearance).build() feedAd.loadListener = feedAdLoadListenerFeedAdLoadListener feedAdLoadListener = new FeedAdLoadListener() { @Override public void onAdLoaded() { // Called when additional ads are received for display } @Override public void onAdFailedToLoad(AdRequestError error) { // Called when an additional ad request fails } }; FeedAd feedAd = new FeedAd.Builder(context, feedAdRequestConfiguration, feedAdAppearance).build(); feedAd.setLoadListener(feedAdLoadListener); -
FeedAd객체의preloadAd()메서드로 가능한 한 빨리 광고를 미리 로드합니다. 피드 미리 로드가 끝나면FeedAdLoadListener의 메서드 중 하나가 호출됩니다.KotlinJavafeedAd.preloadAd()feedAd.preloadAd(); -
FeedAdAdapter어댑터를 만들고 이벤트 콜백용FeedAdEventListener를 등록합니다.KotlinJavaval feedAdEventListener = object : FeedAdEventListener { override fun onAdClicked() { // Called when the user clicks on the ad } override fun onAdImpression(impressionData: ImpressionData?) { // Called when an impression is counted } } val feedAdAdapter = FeedAdAdapter(feedAd) feedAdAdapter.eventListener = feedAdEventListenerFeedAdEventListener feedAdEventListener = new FeedAdEventListener() { @Override public void onAdClicked() { // Called when the user clicks on the ad } @Override public void onAdImpression(ImpressionData impressionData) { // Called when an impression is counted } }; FeedAdAdapter feedAdAdapter = new FeedAdAdapter(feedAd); feedAdAdapter.setEventListener(feedAdEventListener); -
광고 피드를 표시합니다.
메인 목록으로 사용기존 목록에 추가만든
FeedAdAdapter를RecyclerView.adapter에 설정합니다.-
Kotlin
binding.feedRecyclerView.layoutManager = LinearLayoutManager(context) binding.feedRecyclerView.adapter = feedAdAdapter -
Java
binding.feedRecyclerView.setLayoutManager(new LinearLayoutManager(context)); binding.feedRecyclerView.setAdapter(feedAdAdapter);
기존
RecyclerView목록에 광고 피드를 넣으려면 ConcatAdapter를 사용하세요.ConcatAdapter로 기존 목록의
RecyclerView어댑터와 광고 피드 어댑터를 결합할 수 있습니다. ConcatAdapter 빌더에 인자를 넣는 순서가 각 어댑터 목록의 표시 순서가 됩니다.-
Kotlin
val screenContentDataAdapter = ScreenContentDataAdapter() // Your own implementation of RecyclerView.Adapter val concatAdapter = ConcatAdapter(listOf(screenContentDataAdapter, feedAdAdapter)) binding.feedRecyclerView.layoutManager = LinearLayoutManager(context) binding.feedRecyclerView.adapter = concatAdapter -
Java
ScreenContentDataAdapter screenContentDataAdapter = new ScreenContentDataAdapter(); // Your own implementation of RecyclerView.Adapter ConcatAdapter concatAdapter = new ConcatAdapter(Arrays.asList(screenContentDataAdapter, feedAdAdapter)); binding.feedRecyclerView.setLayoutManager(new LinearLayoutManager(context)); binding.feedRecyclerView.setAdapter(concatAdapter);
-
광고 피드 연동의 특징
Yandex Mobile Ads SDK 메서드 호출은 모두 메인 스레드에서 수행해야 합니다.
광고 피드 연동 테스트
광고 테스트를 위한 데모 광고 유닛 사용
광고 피드 통합과 앱 자체를 확인하려면 테스트 광고를 사용하세요.
모든 광고 요청에 테스트 광고가 반환되도록 광고 통합 테스트를 돕는 특별한 데모 광고 게재 ID를 만들었습니다.
데모 adUnitId: demo-feed-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 feed was integrated successfully
광고 통합에 문제가 있으면 자세한 문제 보고서와 문제 해결 권장 사항을 받을 수 있습니다.