광고 피드

광고 피드는 광고가 순서대로 이어진 단위입니다. 피드는 앱의 주요 콘텐츠로 넣을 수도 있고, 기존 콘텐츠 뒤에 올 수도 있습니다. 피드에는 수십 개의 광고가 포함될 수 있으며, 순차적으로 로드됩니다(한 번에 여러 광고가 로드됨).

이 가이드는 Android 앱에 광고 피드를 연동하는 과정을 다룹니다. 코드 예시와 설명 외에도 형식별 권장 사항과 추가 자료 링크를 포함합니다.

표시 예

사전 요구 사항

  1. 빠른 시작에 설명된 SDK 통합 단계를 따릅니다.
  2. 먼저 광고 SDK를 초기화해야 합니다.
  3. Yandex Mobile Ads SDK의 최신 버전을 사용 중인지 확인합니다.

구현

광고 피드 연동의 주요 단계:

  • FeedAdAppearance 객체로 광고 피드의 외형을 설정합니다.
  • FeedAdRequestConfiguration 객체로 요청 구성을 만들고 설정합니다.
  • FeedAd 광고 피드 객체를 만들고 광고 로드 콜백용 FeedAdLoadListener를 등록합니다.
  • 가능한 한 빨리 feedAd.preloadAd()를 호출해 광고를 미리 로드합니다.
  • FeedAdAdapter 어댑터를 만들고 이벤트 콜백용 FeedAdEventListener를 등록합니다.
  • RecyclerView.adapterFeedAdAdapter를 설정합니다.

주요 단계

  1. 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();
    
  2. FeedAdRequestConfiguration 객체를 만들고 설정합니다.

    Yandex Advertising Network 인터페이스에서 받은 게재 위치 ID(AD_UNIT_ID)가 필요합니다.

    광고 요청의 Builder 메서드에 사용자 관심사, 페이지 컨텍스트, 위치 등 추가 정보를 넣어 요청 매개변수를 확장할 수 있습니다. 요청에 컨텍스트를 더하면 광고 품질이 크게 좋아질 수 있습니다. 자세한 내용은 광고 타기팅을 참고하세요.

    val 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();
    
  3. FeedAd 광고 피드 객체를 만들고 광고 로드 콜백용 FeedAdLoadListener를 등록합니다.

    val 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 = feedAdLoadListener
    
    FeedAdLoadListener 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);
    
  4. FeedAd 객체의 preloadAd() 메서드로 가능한 한 빨리 광고를 미리 로드합니다. 피드 미리 로드가 끝나면 FeedAdLoadListener의 메서드 중 하나가 호출됩니다.

    feedAd.preloadAd()
    
    feedAd.preloadAd();
    
  5. FeedAdAdapter 어댑터를 만들고 이벤트 콜백용 FeedAdEventListener를 등록합니다.

    val 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 = feedAdEventListener
    
    FeedAdEventListener 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);
    
  6. 광고 피드를 표시합니다.

    만든 FeedAdAdapterRecyclerView.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

광고 통합에 문제가 있으면 자세한 문제 보고서와 문제 해결 권장 사항을 받을 수 있습니다.