Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Feed 타입을 연동하기 전, 공통 가이드의 연동 사항을 모두 적용했는지 확인해주세요.

  2. Feed 의 커스터마이즈는 상단 툴바, 광고 리스트 아이템 영역, 헤더, 디자인 커스터마이즈가 가능합니다.

...

(중요) Basic Usage 를 모두 적용한 뒤, 하단의 Advanced Usage를 적용해해주세요.

...

  1. Feed unit id로 FeedConfig를 설정합니다.

  2. FeedConfig 객체를 사용하여 FeedHandler를 생성합니다.

  3. startFeedActivity()를 호출하여 Feed 액티비티를 실행합니다.

final FeedConfig feedConfig = new FeedConfig.Builder("YOUR_FEED_UNIT_ID").build(); final FeedHandler feedHandler = new FeedHandler(feedConfig); feedHandler.startFeedActivity(this
Code Block
languagejava
final FeedConfig feedConfig = new FeedConfig.Builder("YOUR_FEED_UNIT_ID").build();
final FeedHandler feedHandler = new FeedHandler(feedConfig);
feedHandler.startFeedActivity(this);

Info

오퍼월을 Feed 에 연동하는 경우, FeedConfig 설정에 autoLoadingEnabled 값을 true 로 설정해야 합니다.

Code Block
languagejava
final FeedConfig feedConfig = new FeedConfig.Builder(context, "YOUR_FEED_UNIT_ID")
                                ...
                                .autoLoadingEnabled(true)
                                ...
                                .build();

Recommended Usage

...

Feed의 광고 현황 확인

...

  1. AdsAdapter 를 상속받는 class 를 구현합니다.

    1. onCreateViewHolderonBindViewHolder 를 구현해 Feed 리스트에 보여줄 itemView 의 레이아웃 및 바인딩 로직을 커스터마이징합니다.

    2. CtaView의 getCtaTextView() 및 getRewardImageView() 함수를 호출하여 CtaView에 보여지는 텍스트 및 리워드 이미지에 대한 customization을 할 수 있습니다. (좀 더 유연한 customization을 위해 View를 새로 만들고 싶은 경우에는 아래 CtaView Customization 참조)

    3. (optional) onImpressedonClickedonRewardRequestedonRewardedonParticipated를 오버라이드하여 광고의 임프레션, 클릭, 리워드 요청, 리워드 지급 결과, 참여완료에 대한 이벤트 콜백을 받을 수 있습니다 (콜백의 정의 및 동작은 문서 참조)

      Code Block
      languagejava
      public class CustomAdsAdapter extends AdsAdapter<AdsAdapter.NativeAdViewHolder> {
      
          @Override
          public NativeAdViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
              final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
              final NativeAdView feedNativeAdView = (NativeAdView) inflater.inflate(R.layout.bz_view_feed_ad, parent, false);
              return new NativeAdViewHolder(feedNativeAdView);
          }
      
          @Override
          public void onBindViewHolder(NativeAdViewHolder holder, NativeAd nativeAd) {
              final NativeAdView view = (NativeAdView) holder.itemView;
      
              final Ad ad = nativeAd.getAd();
              final Creative.Type creativeType = ad.getCreative() == null ? null : ad.getCreative().getType();
      
              final MediaView mediaView = view.findViewById(R.id.mediaView);
              final LinearLayout titleLayout = view.findViewById(R.id.titleLayout);
              final TextView titleView = view.findViewById(R.id.textTitle);
              final ImageView iconView = view.findViewById(R.id.imageIcon);
              final TextView descriptionView = view.findViewById(R.id.textDescription);
              final CtaView ctaView = view.findViewById(R.id.ctaView);
              ctaView.setBackgroundColor(Color.parseColor(“#3976FD”)); // (선택) 변경하려는 "색상코드"
              final CtaPresenter ctaPresenter = new CtaPresenter(ctaView); // CtaView should not be null
              ctaPresenter.bind(nativeAd);
      
              if (mediaView != null) {
                  mediaView.setCreative(ad.getCreative());
                  mediaView.setVideoEventListener(new VideoEventListener() 
                      // Override and implement methods
                  });
              }
              if (titleView != null) {
                  titleView.setText(ad.getTitle());
              }
      
              if (iconView != null) {
                  ImageLoader.getInstance().displayImage(ad.getIconUrl(), iconView);
              }
              if (descriptionView != null) {
                  descriptionView.setText(ad.getDescription());
              }
      
              final Collection<View> clickableViews = new ArrayList<>();
              clickableViews.add(ctaView);
              clickableViews.add(mediaView);
              clickableViews.add(titleLayout);
              clickableViews.add(descriptionView);
      
              view.setMediaView(mediaView);
              view.setClickableViews(clickableViews);
              view.setNativeAd(nativeAd);
              view.addOnNativeAdEventListener(new NativeAdView.OnNativeAdEventListener() {
                  @Override
                  public void onImpressed(final @NonNull NativeAdView view, final @NonNull NativeAd nativeAd) {
      
                  }
      
                  @Override
                  public void onClicked(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) {
      
                  }
      
                  @Override
                  public void onRewardRequested(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) {
      
                  }
      
                  @Override
                  public void onRewarded(@NonNull NativeAdView view, @NonNull NativeAd nativeAd, @Nullable NativeAdRewardResult nativeAdRewardResult) {
      
                  }
      
                  @Override
                  public void onParticipated(final @NonNull NativeAdView view, final @NonNull NativeAd nativeAd) {
                      ctaPresenter.bind(nativeAd);
                  }
              });
          }
      }


  2. FeedConfig 빌드 시점에 해당 AdsAdapter class 를 지정합니다.

    Code Block
    languagejava
    if (reward > 0) { customizedCtaVIew.showRewardImage(CtaView.ImageType.Default); customizedCtaVIew.setRewardText(String.format(Locale.US, "+%d", reward)); } else { customizedCtaVIew.showRewardImage(null);

    를 지정합니다.

    Code Block
    languagejava
    final FeedConfig feedConfig = new FeedConfig.Builder(context, "YOUR_FEED_UNIT_ID")
    	...
        .adsAdapterClass(CustomAdsAdapter.class)
        customizedCtaVIew.setRewardTextbuild(null);
    }

CtaView (버튼) Customization

...

  • DefaultAdsAdapter 를 그대로 사용하는 경우에는 별도의 추가 작업 없이도 Image 타입 광고를 제공 받으실 수 가능합니다. 아래 내용은 Customization을 위해 AdsAdapterClass 를 별도로 설정하였을 때에만 해당됩니다 (북마크).

  • Image 타입의 광고의 경우 기존 광고들과 다르게 icon, title, description 의 내용이 없습니다. 더불어 광고 영역 전체의 상하의 길이가 깁니다. 이런 상황에서 레이아웃을 알맞게 그리기 위한 추가 작업을 한 후 해당 광고 타입을 받을 수 있도록 FeedConfig 에 새로운 설정을 추가해야 합니다.

...