본문으로 건너뛰기

마이그레이션

이 페이지에서는 기존 네이티브(NativeAdView)를 연동한 상태에서 네이티브 2.0(NativeAd2View)으로 마이그레이션 하는 방법을 안내합니다.

✏️ 참고
캐러셀을 구현하기 위해 제공되던 '한 번에 여러 개의 광고 로드하기', '광고 객체 재사용하기'에 대한 내용은 추후 업데이트 될 예정입니다.

기본 설정

주요 변경사항

  • 광고 레이아웃에서 NativeAdView 대신 NativeAd2View를 사용합니다.
  • 네이티브 2.0에서는 광고 할당 및 갱신을 SDK 내부에서 자동으로 수행합니다. 따라서 광고 할당을 위한 클래스인 BuzzAdNative, NativeAdRequest를 사용할 필요가 없습니다.

대체 메서드

기존 네이티브네이티브 2.0
BuzzAdNative.AdLoadListener.onAdLoaded()NativeAd2StateChangedListener.onNext()
BuzzAdNative.AdLoadListener.onLoadFailed()NativeAd2StateChangedListener.onError()

기존 네이티브 구현 예시

<!-- NativeAdView 대신 NativeAd2View를 사용합니다. -->
<com.buzzvil.buzzad.benefit.presentation.nativead.NativeAdView
android:id="@+id/native_ad_2_view">

<com.buzzvil.buzzad.benefit.presentation.media.MediaView
android:id="@+id/mediaView"
...생략... />
<TextView
android:id="@+id/textTitle"
...생략... />
<TextView
android:id="@+id/textDescription"
...생략... />
<ImageView
android:id="@+id/imageIcon"
...생략... />
<com.buzzvil.buzzad.benefit.presentation.media.DefaultCtaView
android:id="@+id/ctaView"
...생략... />

</com.buzzvil.buzzad.benefit.presentation.nativead.NativeAdView>
// (1) NativeAdView 대신 NativeAd2View를 사용합니다.
final NativeAdView nativeAdView = findViewById(R.id.your_native_ad_view);
// (2) MedaiView, CtaView 등 다른 컴포넌트는 그대로 사용할 수 있습니다.
final MediaView mediaView = nativeAdView.findViewById(R.id.mediaView);
final TextView titleTextView = nativeAdView.findViewById(R.id.textTitle);
final TextView descriptionTextView = nativeAdView.findViewById(R.id.textDescription);
final ImageView iconImageView = nativeAdView.findViewById(R.id.imageIcon);
final DefaultCtaView ctaView = nativeAdView.findViewById(R.id.ctaView);

// (3) NativeAdRequest, BuzzAdNative를 삭제합니다.
final NativeAdRequest nativeAdRequest = new NativeAdRequest.Builder().build();
final BuzzAdNative buzzAdNative = new BuzzAdNative("YOUR_NATIVE_UNIT_ID");

buzzAdNative.loadAd(nativeAdRequest, new BuzzAdNative.AdLoadListener() {
@Override
public void onAdLoaded(@NotNull NativeAd nativeAd) {
// (4) NativeAdViewBinder 대신 NativeAd2ViewBinder를 사용합니다.
final NativeAdViewBinder viewBinder = new NativeAdViewBinder.Builder(nativeAdView, mediaView)
.titleTextView(titleTextView)
.descriptionTextView(descriptionTextView)
.iconImageView(iconImageView)
.ctaView(ctaView)
.build();
viewBinder.bind(nativeAd);

// (5) NativeAd2StateChangedListener.onNext()로 작업을 옮깁니다.
}

@Override
public void onLoadFailed(@NotNull AdError adError) {
// (6) NativeAd2StateChangedListener.onError()로 작업을 옮깁니다.
}
});

네이티브 2.0 구현 예시

<!-- NativeAdView 대신 NativeAd2View를 사용합니다. -->
<com.buzzvil.buzzad.benefit.nativead2.api.NativeAd2View
android:id="@+id/native_ad_2_view">

<com.buzzvil.buzzad.benefit.presentation.media.MediaView
android:id="@+id/mediaView"
...생략... />
<TextView
android:id="@+id/textTitle"
...생략... />
<TextView
android:id="@+id/textDescription"
...생략... />
<ImageView
android:id="@+id/imageIcon"
...생략... />
<com.buzzvil.buzzad.benefit.presentation.media.DefaultCtaView
android:id="@+id/ctaView"
...생략... />
</com.buzzvil.buzzad.benefit.nativead2.api.NativeAd2View>
// (1) NativeAdView 대신 NativeAd2View를 사용합니다.
final NativeAd2View nativeAd2View = findViewById(R.id.nativeAd2View);
// (2) MedaiView, CtaView 등 다른 컴포넌트는 그대로 사용할 수 있습니다.
final MediaView mediaView = findViewById(R.id.mediaView);
final TextView titleTextView = findViewById(R.id.textTitle);
final TextView descriptionTextView = findViewById(R.id.textDescription);
final ImageView iconImageView = findViewById(R.id.imageIcon);
final DefaultCtaView ctaView = findViewById(R.id.ctaView);

// (3) NativeAdRequest, BuzzAdNative를 삭제합니다.
// (4) NativeAdViewBinder 대신 NativeAd2ViewBinder를 사용합니다.
NativeAd2ViewBinder binder = new NativeAd2ViewBinder.Builder()
.nativeAd2View(nativeAd2View)
.mediaView(mediaView)
.titleTextView(titleTextView)
.descriptionTextView(descriptionTextView)
.iconImageView(iconImageView)
.ctaView(ctaView)
.build("YOUR_NATIVE_UNIT_ID");

binder.addNativeAd2StateChangedListener(new NativeAd2StateChangedListener() {
@Override
public void onRequested() {
}

@Override
public void onNext(NativeAd2 nativeAd2) {
// (5) BuzzAdNative.AdLoadListener.onAdLoaded() 작업을 여기로 옮깁니다.
}

@Override
public void onComplete() {
}

@Override
public void onError(@NonNull AdError adError) {
// (6) BuzzAdNative.AdLoadListener.onLoadFailed() 작업을 여기로 옮깁니다.
}
});

binder.bind();

고급 설정

주요 변경사항

  • NativeAd 대신 NativeAd2를 통해 광고 정보를 가져옵니다.
  • NativeAdEventListener 대신 NativeAd2EventListener를 광고 이벤트 리스너 등록에 사용합니다.

대체 메서드

기존 네이티브네이티브 2.0
NativeAd.addNativeAdEventListener()NativeAd2ViewBinder.addNativeAd2EventListener()

기존 네이티브 구현 예시

final NativeAdViewBinder viewBinder = new NativeAdViewBinder.Builder(nativeAdView, mediaView)
.titleTextView(titleTextView)
.descriptionTextView(descriptionTextView)
.iconImageView(iconImageView)
.ctaView(ctaView)
.build();

// (1) bind 이후에 호출하던 이벤트 리스너 등록 메서드를 bind 이전에 호출하도록 변경해야 합니다.
viewBinder.bind(nativeAd);

// (2) NativeAd 대신 NativeAd2ViewBinder에 이벤트 리스너를 등록합니다.
nativeAd.addNativeAdEventListener(new NativeAdEventListener() {
@Override
public void onImpressed(@NonNull NativeAd nativeAd) {
// (3) `NativeAd` 대신 `NativeAd2`를 통해 광고에 대한 정보를 가져올 수 있습니다.
}

@Override
public void onClicked(@NonNull NativeAd nativeAd) {
}

@Override
public void onRewardRequested(@NonNull NativeAd nativeAd) {
}

@Override
public void onRewarded(@NonNull NativeAd nativeAd, @Nullable RewardResult rewardResult) {
}

@Override
public void onParticipated(@NonNull NativeAd nativeAd) {
}
});

네이티브 2.0 구현 예시

NativeAd2ViewBinder binder = new NativeAd2ViewBinder.Builder()
.nativeAd2View(nativeAd2View)
.mediaView(mediaView)
.titleTextView(titleTextView)
.descriptionTextView(descriptionTextView)
.iconImageView(iconImageView)
.ctaView(ctaView)
.build("YOUR_NATIVE_UNIT_ID");

binder.addNativeAd2StateChangedListener(new NativeAd2StateChangedListener() {
@Override
public void onRequested() {
}
// ...생략
});

// (1) bind를 호출하기 전에 addNativeAd2EventListener를 호출합니다.
// (2) `NativeAd` 대신 `NativeAd2ViewBinder`에 이벤트 리스너를 등록합니다.
binder.addNativeAd2EventListener(new NativeAd2EventListener() {
@Override
public void onImpressed(@NonNull NativeAd2 nativeAd2) {
// (3) `NativeAd` 대신 `NativeAd2`를 통해 광고에 대한 정보를 가져올 수 있습니다.
}

@Override
public void onClicked(@NonNull NativeAd2 nativeAd2) {
}

@Override
public void onRewardRequested(@NonNull NativeAd2 nativeAd2) {
}

@Override
public void onRewarded(@NonNull NativeAd2 nativeAd2, @NonNull RewardResult rewardResult) {
}

@Override
public void onParticipated(@NonNull NativeAd2 nativeAd2) {
}
});

binder.bind();