(Android v3.0.x) 3. Native 마이그레이션 가이드

Native 기본 설정

주요 변경 내역

  • Native 광고 할당 클래스 NativeAdLoadBuzzAdNative로 변경되었습니다.

  • 한 번의 광고 요청으로 여러 개의 광고를 할당 받으려면, NativeAdsRequest 를 사용하도록 변경되었습니다.

 

광고 할당 및 표시하기

이전 버전에서 광고를 할당 받기 위해 사용했던 NativeAdLoader 클래스는 더 이상 지원하지 않습니다.

BuzzAd Android용 SDK 3.0에서 Native 광고 할당을 요청하려면 BuzzAdNative를 사용하여 아래의 순서대로 구현하세요.

  1. 기존에 생성했던 NativeAdLoader 관련 코드를 삭제하세요.

    // TODO: 아래 코드를 삭제합니다. final NativeAdLoader loader = new NativeAdLoader("YOUR_NATIVE_UNIT_ID"); loader.loadAd(new NativeAdLoader.OnAdLoadedListener() { @Override public void onAdLoaded(@NonNull NativeAd nativeAd) { populateAd(nativeAd); } @Override public void onLoadError(@NonNull AdError adError) { // 할당된 광고가 없으면 호출됩니다. Log.e(TAG, "Failed to load a native ad.", adError); } });
  2. Native 광고를 요청하는 NativeAdRequest 객체를 생성하세요.

  3. 기존에 사용하던 Native 지면의 Unit ID로 BuzzAdNative 객체를 생성하세요.

  4. BuzzAdNative 객체의 loadAd() 메소드를 통해 광고 할당을 요청하세요.

    • 할당된 광고가 있다면 onAdLoaded 콜백 이벤트가 호출되며, 할당된 광고가 없으면 onLoadFailed 콜백 이벤트가 호출됩니다.

  5. 성공적으로 광고가 할당되면, onAdLoaded 콜백 이벤트에서 NativeAdViewBinder 객체를 생성하고 Native 광고 컴포넌트를 등록하세요.

  6. 광고 할당에서 수집한 광고 정보를 NativeAdVeiwBinder 객체의 bind()로 주입하여 화면에 Native 광고를 표시합니다.

// Native 광고를 요청하는 NativeAdRequest 객체를 생성합니다. final NativeAdRequest nativeAdRequest = new NativeAdRequest.Builder().build(); // Native 지면의 UNIT ID로 BuzzAdNative 객체를 생성합니다. final BuzzAdNative buzzAdNative = new BuzzAdNative("YOUR_NATIVE_UNIT_ID"); buzzAdNative.loadAd(nativeAdRequest, new BuzzAdNative.AdLoadListener() { @Override public void onAdLoaded(@NonNull NativeAd nativeAd) { // 할당된 광고가 있으면 호출됩니다. // NativeAdViewBinder에 Native 광고 컴포넌트를 등록합니다. final NativeAdViewBinder viewBinder = new NativeAdViewBinder.Builder(nativeAdView, mediaView) .titleTextView(titleTextView) .descriptionTextView(descriptionTextView) .iconImageView(iconImageView) .ctaView(ctaView) .build(); viewBinder.bind(nativeAd); // 광고 데이터를 바인딩합니다. // Optional: Native 광고의 리스너 등록하고 각 이벤트에 따라 필요한 기능을 구현합니다. // 자세한 내용은 아래 광고 이벤트 등록 단락을 참고하세요. // 주의: 반드시 NativeAdViewBinder.bind() 함수를 호출한 이후에 리스너 등록을 해야합니다. // handleNativeCallbackEvent(nativeAd); } @Override public void onLoadFailed(@NonNull AdError adError) { // 할당된 광고가 없으면 호출됩니다. Log.e(TAG, "Failed to load a native ad.", adError); } });

광고 이벤트 리스너 등록하기

이전 버전의 이벤트 리스너인 OnNativeAdEventListener는 더 이상 지원하지 않습니다.

BuzzAd Android용 SDK 3.0에서 이벤트 리스너를 수신하려면 NativeAdEventListener를 사용하여 아래의 순서대로 구현하세요.

이전에 CTA View를 갱신할 목적으로만 이벤트 리스너를 사용했다면, 더 이상 사용할 필요 없습니다.

BuzzAd Android용 SDK 3.0부터는 CTA View상태를 bind()하는 방식으로 변경했기 때문에, CTA View 상태 변경 외에 각 이벤트별 구현이 필요할 경우에만 아래 가이드를 적용하세요.

  1. 이벤트 리스너를 구현할 handleNativeCallbackEvent(nativeAd) 메소드를 생성하세요.

  2. NativeAd의 addNativeAdEventListener 를 구현하여 Native 광고의 이벤트 리스너를 수신합니다.

  3. 기존의 OnNativeAdEventListener 에서 추가 구현한 코드를 마이그레이션하세요.

    • handleNativeCallbackEvent 메소드는 NativeAdViewBinder.bind() 이후에 호출해야 합니다. 호출 위치는 광고 할당 및 표시하기 단락의 샘플 코드를 참고하세요.

NativeAdView.OnNativeAdEventListener nativeAdEventListener = new NativeAdView.OnNativeAdEventListener() { @Override public void onImpressed(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) { } @Override public void onClicked(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) { ctaPresenter.bind(nativeAd); // 기획에 따른 추가적인 UI 처리 } @Override public void onRewardRequested(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) { // 기획에 따라 리워드 로딩 이미지를 보여주는 등의 처리 } @Override public void onRewarded(@NonNull NativeAdView view, @NonNull NativeAd nativeAd, @Nullable RewardResult rewardResult) { // 리워드 적립의 결과 (RewardResult) SUCCESS, ALREADY_PARTICIPATED, MISSING_REWARD 등에 따라서 적절한 유저 커뮤니케이션 처리 } @Override public void onParticipated(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) { ctaPresenter.bind(nativeAd); // 기획에 따른 추가적인 UI 처리 } }; // 중복하여 addOnNativeAdEventListener를 호출하면 2개 이상의 리스너가 등록됩니다. // 하나의 리스너만 등록하기 위해서는 아래와 같이 리스너를 해제하거나, addOnNativeAdEventListener를 한번만 호출하기 위한 로직을 추가해야 합니다. view.removeOnNativeAdEventListener(nativeAdEventListener); view.addOnNativeAdEventListener(nativeAdEventListener); view.setClickableViews(clickableViews); view.setMediaView(mediaView); view.setNativeAd(nativeAd);

 

 

Native 고급 설정

CTA 버튼 커스터마이징

이전 버전에서는 CTA 버튼 커스터마이징을 위해 CTA 버튼 처리 로직을 직접 구현해야 했지만, BuzzAd Android용 SDK 3.0 부터 UI 처리 로직은 SDK에서 제어하도록 변경되었습니다. 그리고 CTA 버튼의 상태가 달라졌을 때의 이벤트를 CtaView 클래스의 일부 메소드를 상속받아 직접 구현할 수 있도록 구성했습니다.

  1. CtaView 클래스를 상속하는 서브클래스인 CustomCtaView를 생성하세요.

  2. CtaView 클래스에서 사용하던 CTA View 레이아웃을 inflate하도록 구현하세요.

  3. 사용자의 광고 참여 상태에 따라 호출되는 아래의 오버라이딩 메소드에서 CTA 버튼의 아이콘 이미지, 텍스트, 리워드 값을 구현하세요.

    • renderViewParticipatingState : 사용자가 광고에 참여 중인 상태 (예: 액션형 광고의 랜딩 페이지에 진입한 상태)

    • renderViewParticipatedState : 사용자가 광고 참여를 완료한 상태

    • renderViewRewardAvailableState : 사용자가 아직 광고에 참여하지 않은 상태

    • renderViewRewardNotAvailableState : 사용자가 획득할 리워드가 없는 광고

  4. 새로 생성한 CustomCtaView 클래스의 경로를 Native 광고 레이아웃에 설정하세요.
    다음은 Native 광고의 레이아웃 예시입니다.

  5. 다음 순서에 따라 직접 구현한 CTA 버튼을 Native 광고에 반영하세요.

    1. Native 광고 레이아웃에서 NativeAdView와 커스텀 CTA 버튼인 CustomCtaView를 가져오세요.

    2. loadAd()메소드를 호출한 후 Native 광고가 성공적으로 할당되어 onAdLoaded 콜백 메소드가 호출되면, NativeAdViewBinderctaView 속성을 customCtaView로 설정하세요.

    3. bind()를 호출하여 광고 레이아웃에 광고 데이터를 바인딩하세요.

  6. 코드 중복을 방지하기 위해, 기존에 구현했던 CTA View 관련 코드를 삭제하세요.
    다음은 기존의 CTA View 관련 코드를 삭제하는 예시입니다.

     

한 번에 여러 개의 광고 로드하기

이전 버전에서 한 번에 로드하는 광고 개수를 설정하는 NativeAdLoader 클래스는 더 이상 지원하지 않습니다.

BuzzAd Android용 SDK 3.0 에서 한 번의 광고 요청으로 여러 개의 광고를 할당 받으려면, NativeAdsRequest를 사용하여 아래의 순서대로 구현합니다.

  1. NativeAdsRequest 객체를 생성하고, adCount(int count)메소드로 한 번에 요청할 광고 갯수를 설정하세요.
    최대 10개까지 추가 가능합니다. 추가로 광고를 할당받으려면 버즈빌 담당자에게 문의하세요.

  2. 기존에 사용하던 Native 지면의 Unit ID로 BuzzAdNative 객체를 생성하세요.

  3. 객체의 loadAds() 메소드를 통해 한 번에 여러 개의 광고 할당을 요청하세요.

  4. 할당된 광고가 있다면 onAdsLoaded 콜백 이벤트, 없으면 onLoadFailed 콜백 이벤트가 호출됩니다.

  5. onAdsLoaded() 콜백 이벤트에서 Native 광고를 화면에 표시하는 방법은 광고 할당 및 표시하기 단락을 참고하여 구현하세요.