광고 피드
광고 피드는 일련의 광고로 구성된 단위입니다. 피드는 앱의 주요 콘텐츠로 추가되거나 기존 콘텐츠 이후에 표시될 수 있습니다. 피드에는 수십 개의 광고가 포함되어 순차적으로 로드됩니다(여러 광고가 한 번에 로드됨).
이 가이드는 Android 앱에 광고 피드를 통합하는 과정을 다룹니다. 코드 샘플과 지침 외에도 형식별 권장 사항 및 추가 자료에 대한 링크가 포함되어 있습니다.
표시 예

사전 준비
- 빠른 시작에 설명된 SDK 통합 단계를 수행하세요.
- 먼저 광고 SDK를 초기화해야 합니다.
- Yandex Mobile Ads SDK의 최신 버전을 사용하고 있는지 확인하세요.
실행
광고 피드 통합을 위한 주요 단계:
FeedAdAppearance
객체를 사용하여 광고 피드의 표시 형식을 구성합니다.FeedAdRequestConfiguration
객체를 사용하여 요청 구성을 생성 및 설정합니다.FeedAd
라는 이름의 광고 피드 객체를 생성하고 광고 로드 콜백 메서드에 대해FeedAdLoadListener
를 등록합니다.feedAd.preloadAd()
를 호출하여 광고를 가능하면 빨리 사전 로드합니다.FeedAdAdapter
라는 이름의 광고 피드 객체를 생성하고 이벤트 콜백 메서드에 대해FeedAdEventListener
를 등록합니다.RecyclerView.adapter
에FeedAdAdapter
를 설정합니다.
주요 단계
FeedAdAppearance
라는 이름의 광고 피드 표시 구성 객체를 생성합니다.
다음 매개변수를 사용할 수 있습니다.
cardWidth
(필수): 제공된 광고의 너비를 dp(밀도 독립 화소)로 설정합니다. 화면 너비에서 필요한 측면 패딩을 뺀 값을 기준으로 매개변수 값을 계산합니다.cardCornerRadius
: 제공된 광고의 둥근 모서리 반경을 dp(밀도 독립 화소)로 설정합니다.
val 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
객체를 생성 및 구성합니다.
파트너 인터페이스(AD_UNIT_ID
)에서 확보한 배치 ID가 필요합니다.
광고 요청의 Builder
메서드에 있는 사용자의 관심사, 페이지 컨텍스트, 위치 및 기타 추가 데이터를 제공하여 광고 요청 매개변수를 확장할 수 있습니다. 광고 요청에 추가된 컨텍스트는 광고 품질을 크게 향상할 수 있습니다. 광고 타겟팅 섹션에서 자세한 내용을 확인하세요.
val AD_UNIT_ID = "R-M-XXXXXX-Y" // 디버깅 목적으로 "demo-feed-yandex"를 사용할 수 있습니다
val feedAdRequestConfiguration = FeedAdRequestConfiguration.Builder(AD_UNIT_ID).build()
String AD_UNIT_ID = "R-M-XXXXXX-Y"; // 디버깅 목적으로 "demo-feed-yandex"를 사용할 수 있습니다
FeedAdRequestConfiguration feedAdRequestConfiguration = new FeedAdRequestConfiguration.Builder(AD_UNIT_ID).build();
FeedAd
라는 이름의 광고 피드 객체를 생성하고 광고 로드 콜백 메서드에 대해FeedAdLoadListener
를 등록합니다.
val feedAdLoadListener = object : FeedAdLoadListener {
override fun onAdLoaded() {
// 표시를 위해 추가 광고를 수신할 때 호출됩니다
}
override fun onAdFailedToLoad(error: AdRequestError) {
// 추가 광고 요청에 실패했을 때 호출됩니다
}
}
val feedAd = FeedAd.Builder(context, feedAdRequestConfiguration, feedAdAppearance).build()
feedAd.loadListener = feedAdLoadListener
FeedAdLoadListener feedAdLoadListener = new FeedAdLoadListener() {
@Override
public void onAdLoaded() {
// 표시를 위해 추가 광고를 수신할 때 호출됩니다
}
@Override
public void onAdFailedToLoad(AdRequestError error) {
// 추가 광고 요청에 실패했을 때 호출됩니다
}
};
FeedAd feedAd = new FeedAd.Builder(context, feedAdRequestConfiguration, feedAdAppearance).build();
feedAd.setLoadListener(feedAdLoadListener);
preloadAd()
객체에 대한FeedAd
메서드를 사용하여 광고를 가능한 빨리 사전 로드하세요. 광고 피드가 사전 로드되면FeedAdLoadListener
메서드 중 하나가 호출됩니다.
feedAd.preloadAd()
feedAd.preloadAd();
FeedAdAdapter
라는 이름의 광고 피드 객체를 생성하고 이벤트 콜백 메서드에 대해FeedAdEventListener
를 등록합니다.
val feedAdEventListener = object : FeedAdEventListener {
override fun onAdClicked() {
// 사용자가 광고를 클릭했을 때 호출됩니다
}
override fun onAdImpression(impressionData: ImpressionData?) {
// 노출이 계수될 때 호출됩니다
}
}
val feedAdAdapter = FeedAdAdapter(feedAd)
feedAdAdapter.eventListener = feedAdEventListener
FeedAdEventListener feedAdEventListener = new FeedAdEventListener() {
@Override
public void onAdClicked() {
// 사용자가 광고를 클릭했을 때 호출됩니다
}
@Override
public void onAdImpression(ImpressionData impressionData) {
// 노출이 계수될 때 호출됩니다
}
};
FeedAdAdapter feedAdAdapter = new FeedAdAdapter(feedAd);
feedAdAdapter.setEventListener(feedAdEventListener);
-
광고 피드를 표시합니다.
주요 목록기존 목록에 추가RecyclerView.adapter
에 생성된FeedAdAdapter
를 설정합니다.-
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() // RecyclerView.Adapter 자체 구현 val concatAdapter = ConcatAdapter(listOf(screenContentDataAdapter, feedAdAdapter)) binding.feedRecyclerView.layoutManager = LinearLayoutManager(context) binding.feedRecyclerView.adapter = concatAdapter
-
Java
ScreenContentDataAdapter screenContentDataAdapter = new ScreenContentDataAdapter(); // 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를 Partner Interface에서 가져온 실제 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
광고 통합에 문제가 있으면 상세한 문제 보고서와 문제 해결 권장 사항을 받게 됩니다.