광고 피드
광고 피드는 일련의 광고로 구성된 단위입니다. 피드는 앱의 주요 콘텐츠로 추가되거나 기존 콘텐츠 이후에 표시될 수 있습니다. 피드에는 수십 개의 광고가 포함되어 순차적으로 로드됩니다(여러 광고가 한 번에 로드됨).
이 가이드는 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객체를 생성 및 구성합니다.
Yandex Advertising Network 인터페이스에서 가져온 광고 단위 ID(AD_UNIT_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를 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
광고 통합에 문제가 있으면 상세한 문제 보고서와 문제 해결 권장 사항을 받게 됩니다.