마이그레이션
이 페이지에서는 기존 네이티브(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();
✏️ 참고
리워드 적립 결과(RewardResult
) 종류는 리워드 적립 결과(RewardResult
) 종류를 참고하세요.