Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »

목차

개요

이 장에서는 BuzzAd iOS용 SDK 버전을 3.0으로 업데이트하기 위해 필요한 Native 지면의 설정을 안내합니다.

주요 변경 사항

BuzzAd iOS용 SDK의 공통 변경 사항 및 아래의 사항이 변경되었습니다.

  • Native 지면 클래스 BABAdLoaderBZVBuzzAdNative로 변경했습니다.

  • 광고를 표시할 때 광고 데이터를 자동으로 바인딩하는 기능을 추가했습니다.

  • 광고 요청에 대한 응답으로 BABAd 객체 대신 BZVNativeAd를 반환하도록 변경했습니다. BZVNativeAd 객체는 광고를 보여주기 위해 필요한 정보 이외에 불필요한 정보를 포함하지 않습니다.

  • BZVCtaViewProtocol을 준수하는 클래스를 사용하여 CTA 버튼을 자체 구현하도록 변경했습니다.

Native 기본 설정

광고 레이아웃 구성하기

BuzzAd iOS용 SDK 3.0에서는 BABNativeAdView, BABMediaView를 각각 BZVNativeAdViewBZVMediaView로 변경했습니다.

Native 광고 레이아웃을 구성하려면 기존의 BABNativeAdViewBABMediaView를 각각 BZVNativeAdViewBZVMediaView로 변경하세요.

Objective-C
2.x (변경 전)
@import BuzzAdBenefit;

@interface ViewController ()

@property (nonatomic, strong, readonly) BABNativeAdView *nativeAdView;
@property (nonatomic, strong, readonly) BABMediaView *mediaView;
...생략...

@end
3.x (변경 후)
@import BuzzAdBenefit;

@interface ViewController ()

@property (nonatomic, strong, readonly) BZVNativeAdView *nativeAdView;
@property (nonatomic, strong, readonly) BZVMediaView *mediaView;
...생략...

@end
Swift
2.x (변경 전)
import BuzzAdBenefit

final class ViewController: UIViewController {
  let nativeAdView = BABNativeAdView(frame: .zero)
  let mediaView = BABMediaView(frame: .zero)
  ...생략...
}
3.x (변경 후)
import BuzzAdBenefit

final class ViewController: UIViewController {
  let nativeAdView = BZVNativeAdView(frame: .zero)
  let mediaView = BZVMediaView(frame: .zero)
  ...생략...
}

광고 할당 및 표시하기

BuzzAd iOS용 SDK 3.0에서는 BABAdLoader 클래스를 BZVBuzzAdNative로 변경하고 광고를 표시할 때 광고 데이터를 자동으로 바인딩하는 기능을 제공합니다. 또한, 광고 요청에 대한 응답으로 BABAd 객체 대신 BZVNativeAd를 반환하도록 변경했습니다.

Native 광고를 할당받고 표시하려면 아래의 순서대로 기존 코드를 수정하세요.

  1. BABAdLoader 클래스를 삭제하세요.

  2. 빌더 블록을 이용해 BZVBuzzAdNative를 생성하세요.

  3. BZVNativeAdRequest 데이터 객체를 생성해 [BZVBuzzAdNative loadAdWithAdRequest:]를 호출하세요.

  4. renderAd 함수에서 광고 데이터를 수동으로 바인딩하는 코드를 삭제하고 BZVNativeAdViewBinder를 사용하여 자동으로 바인딩하세요.

Objective-C
2.x (변경 전)
@implementation ViewController

- (void)viewDidLoad {
  ...생략...

  BABAdLoader *adLoader = [[BABAdLoader alloc] initWithUnitId:@"YOUR_NATIVE_UNIT_ID"];
  [adLoader loadAdWithOnSuccess:^(BABAd * _Nonnull ad) {
    // 할당된 광고가 있으면 호출됩니다.
    // 광고 데이터를 바인딩합니다.
    [self renderAd:ad];
  } onFailure:^(NSError * _Nullable error) {
    // 할당된 광고가 없으면 호출됩니다.
    NSLog(@"Failed to load a native ad");
  }];
}

- (void)renderAd(BABAd *ad) {
  // (1) Ad 의 각 요소를 세팅합니다.
  _titleLabel.text = ad.creative.title;
  _descriptionLabel.text = ad.creative.body;
  
  [_iconImageView sd_setImageWithURL:[NSURL URLWithString:ad.creative.iconUrl]];
  _ctaLabel.text = [NSString stringWithFormat:@"+%d %@", (int)ad.reward, ad.creative.callToAction];
  [_rewardIcon setImage:[UIImage imageNamed:@"point_icon"]];
  
  // (2) NativeAdView 에 다음의 항목을 추가합니다.
  _adView.ad = ad;
  _adView.mediaView = _mediaView;
  
  // (3) 광고 클릭이 가능한 영역을 지정합니다.
  _adView.clickableViews = @[_ctaButton, _iconImageView];
}
3.x (변경 후)
@interface ViewController ()

@property (nonatomic, strong, readonly) BZVNativeAdViewBinder *viewBinder;

@end

@implementation ViewController

- (void)viewDidLoad {
  ...생략...
  
  _viewBinder = [BZVNativeAdViewBinder viewBinderWithBlock:^(BZVNativeAdViewBinderBuilder * _Nonnull builder) {
    builder.nativeAdView = self.nativeAdView;
    builder.mediaView = self.mediaView;
    builder.iconImageView = self.iconImageView;
    builder.titleLabel = self.titleLabel;
    builder.descriptionLabel = self.descriptionLabel;
    builder.ctaView = self.ctaView;
  }];

  BZVNativeAdRequest *adRequest = [[BZVNativeAdRequest alloc] init];
  BZVBuzzAdNative *buzzAdNative = [BZVBuzzAdNative nativeWithUnitId:@"YOUR_NATIVE_UNIT_ID"];
  [buzzAdNative loadAdWithAdRequest:adRequest onSuccess:^(BZVNativeAd * _Nonnull nativeAd) {
    // 할당된 광고가 있으면 호출됩니다.
    // 광고 데이터를 바인딩합니다.
    [self renderAd:nativeAd];
  } onFailure:^(BZVError * _Nonnull error) {
    // 할당된 광고가 없으면 호출됩니다.
    NSLog(@"Failed to load a native ad");
  }];
}

- (void)renderAd:(BZVNativeAd *)ad {
  [_viewBinder bindWithNativeAd:ad];
}

@end
Swift
2.x (변경 전)
final class ViewController: UIViewController {

  override func viewDidLoad() {
    ...생략...    

    let adLoader = BABAdLoader(unitId: "YOUR_NATIVE_UNIT_ID")
    adLoader.loadAdWith(onSuccess: { ad in
      // 할당된 광고가 있으면 호출됩니다.
      // 광고 데이터를 바인딩합니다.
      self.renderAd(ad: ad)
    }, onFailure: { error in
      // 할당된 광고가 없으면 호출됩니다.
      print("Failed to load a native ad")
    })
  }
  
  func renderAd(ad: BABAd) {
    // (1) Ad 의 각 요소를 세팅합니다.
    self.titleLabel.text = ad.creative.title
    self.descriptionLabel.text = ad.creative.body
    
    if let urlString = ad.creative.iconUrl {
      self.iconImageView.sd_setImage(with: URL(string: urlString))
    }
    self.ctaLabel.text = "\(Int(ad.reward))P \(ad.creative.callToAction ?? "디폴트 스트링")"
    self.rewardIcon.image = UIImage(named: "point_icon")
    
    // (2) NativeAdView 에 다음의 항목을 추가합니다.
    self.adView.ad = ad
    self.adView.mediaView = self.mediaView

    // (3) 광고 클릭이 가능한 영역을 지정합니다.
    self.adView.clickableViews = [self.ctaButton, self.iconImageView]
  }
}
3.x (변경 후)
final class ViewController: UIViewController {
  lazy var viewBinder = BZVNativeAdViewBinder { builder in
    builder.nativeAdView = self.nativeAdView
    builder.mediaView = self.mediaView
    builder.iconImageView = self.iconImageView
    builder.titleLabel = self.titleLabel
    builder.descriptionLabel = self.descriptionLabel
    builder.ctaView = self.ctaView
  }

  override func viewDidLoad() {
    ...생략...
    
    let nativeAdRequest = BZVNativeAdRequest()
    let buzzAdNative = BZVBuzzAdNative(unitId: "YOUR_NATIVE_UNIT_ID")
    buzzAdNative.loadAd(with: nativeAdRequest) { nativeAd in
      // 할당된 광고가 있으면 호출됩니다.
      // 광고 데이터를 바인딩합니다.
      self.renderAd(nativeAd)
    } onFailure: { error in
      // 할당된 광고가 없으면 호출됩니다.
      print("Failed to load a native ad")
    }
  }

  func renderAd(_ ad: BZVNativeAd) {
    viewBinder.bind(with: ad)
  }
}

Native 고급 설정

CTA 버튼 자체 구현하기

BuzzAd iOS용 SDK 3.0에서는 CTA 버튼을 자체 구현할 때 사용할 수 있는 BZVCtaViewProtocol을 제공합니다. BZVCtaViewProtocol을 준수하는 클래스는 광고 데이터를 바인딩할 때 BZVNativeAdViewBinderctaView 인자로 설정할 수 있으며 자동으로 CTA 버튼의 상태에 따라 UI가 업데이트 됩니다.

CTA 버튼을 자체 구현하려면 아래의 순서대로 기존 코드를 수정하세요.

  1. 광고 레이아웃을 구성하는 클래스의 updateCtaButtonWithAd 함수에서 CTA 뷰의 UI를 업데이트하는 코드를 삭제하세요.

  2. BABNativeAdViewDelegate의 콜백에서 updateCtaButtonWithAd 함수를 호출하는 코드를 삭제하세요.

  3. CtaViewProtocol을 준수하는 UIView 클래스의 서브클래스를 생성하세요.

  4. 광고 레이아웃을 구성하는 클래스에서 이전 단계에서 생성한 CTA 버튼 클래스를 사용하세요.

  5. 광고 데이터를 바인딩할 때 ctaView 인자로 자체 구현한 CTA 버튼을 설정하세요.

Objective-C
2.x (변경 전)
@import UIKit;
@import BuzzAdBenefit;

@interface ViewController () <BABNativeAdViewDelegate>

@property (nonatomic, strong, readonly) BABNativeAdView *nativeAdView;
@property (nonatomic, strong, readonly) BABMediaView *mediaView;
@property (nonatomic, strong, readonly) UIImageView *iconImageView;
@property (nonatomic, strong, readonly) UILabel *titleLabel;
@property (nonatomic, strong, readonly) UILabel *descriptionLabel;
@property (nonatomic, strong, readonly) UIImageView *rewardIcon;
@property (nonatomic, strong, readonly) UILabel *ctaLabel;
  
@end

@implementation ViewController

...생략...

- (void)renderAd:(BABAd *)ad {
    [super renderAd:ad];
  
    self.titleLabel.text = ad.creative.title;
    self.descriptionLabel.text = ad.creative.body;
    [self.iconImageView sd_setImageWithURL:[NSURL URLWithString:ad.creative.iconUrl]];
  
    self.adView.ad = ad;
    self.adView.mediaView = self.mediaView;
    self.adView.clickableViews = @[self.ctaButton, self.iconImageView];
    
    [self updateCtaButtonWithAd:ad];
}

- (void)updateCtaButtonWithAd:(BABAd *)ad {
  NSString *callToAction = ad.creative.callToAction;
  double reward = [ad getAvailableReward];
  double totalReward = [ad getTotalReward];
  BOOL isParticipated = [ad isParticipated];
  BOOL isClicked = [ad isClicked];
  BOOL isActionType = [ad isActionType];
  if (isClicked && isActionType && !isParticipated) {
    // 참여 확인 중인 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
  } else {
    if (totalReward > 0 && isParticipated) {
      // 참여 완료한 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
    } else if (reward > 0) {
      // 리워드가 있는 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
    } else {
      // 리워드가 없는 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
    }
  }
}

#pragma mark -- BABNativeAdViewDelegate
- (void)BABNativeAdView:(BABNativeAdView *)adView didImpressAd:(BABAd *)ad {
}

- (void)BABNativeAdView:(BABNativeAdView *)adView didClickAd:(BABAd *)ad {
  [self updateCtaButtonWithAd:ad];
}

- (void)BABNativeAdView:(BABNativeAdView *)adView willRequestRewardForAd:(BABAd *)ad {
}

- (void)BABNativeAdView:(BABNativeAdView *)adView didRewardForAd:(BABAd *)ad withResult:(BABRewardResult)result {
  [self updateCtaButtonWithAd:ad];
}

- (void)BABNativeAdView:(BABNativeAdView *)adView didParticipateAd:(BABAd *)ad {
  [self updateCtaButtonWithAd:ad];
}

@end
3.x (변경 후)
@import UIKit;
@import BuzzAdBenefit;

@interface CustomCtaView : UIView <BZVCtaViewProtocol>

@end

@implementation CustomCtaView

...생략...

#pragma mark - BZVCtaViewProtocol
- (void)renderRewardNotAvailableViewStateWithCtaText:(NSString *)ctaText {
  // 리워드가 없는 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
}

- (void)renderRewardAvailableViewStateWithCtaText:(NSString *)ctaText reward:(NSInteger)reward {
  // 리워드가 있는 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
}

- (void)renderParticipatingViewStateWithCtaText:(NSString *)ctaText {
  // 참여 확인 중인 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
}

- (void)renderParticipatedViewStateWithCtaText:(NSString *)ctaText {
  // 참여 완료한 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
}
@import UIKit;
@import BuzzAdBenefit;

@interface ViewController ()

@property (nonatomic, strong, readonly) BZVNativeAdView *nativeAdView;
@property (nonatomic, strong, readonly) BZVMediaView *mediaView;
@property (nonatomic, strong, readonly) UIImageView *iconImageView;
@property (nonatomic, strong, readonly) UILabel *titleLabel;
@property (nonatomic, strong, readonly) UILabel *descriptionLabel;
@property (nonatomic, strong, readonly) CustomCtaView *ctaView;
@property (nonatomic, strong, readonly) BZVNativeAdViewBinder *viewBinder;

@end

@implementation ViewController

- (void)viewDidLoad {
  ...생략...
  
  _viewBinder = [BZVNativeAdViewBinder viewBinderWithBlock:^(BZVNativeAdViewBinderBuilder * _Nonnull builder) {
    builder.nativeAdView = self.nativeAdView;
    builder.mediaView = self.mediaView;
    builder.iconImageView = self.iconImageView;
    builder.titleLabel = self.titleLabel;
    builder.descriptionLabel = self.descriptionLabel;
    builder.ctaView = self.ctaView;
  }];
}

- (void)renderAd:(BZVNativeAd *)ad {
  [_viewBinder bindWithNativeAd:ad];
}

@end
Swift
2.x (변경 전)
final class ViewController: UIViewController, BABNativeAdViewDelegate {
  let adView = BABNativeAdView(frame: .zero)
  let mediaView = BABMediaView(frame: .zero)
  let iconImageView = UIImageView(frame: .zero)
  let titleLabel = UILabel(frame: .zero)
  let descriptionLabel = UILabel(frame: .zero)
  let ctaView = CustomCtaView(frame: .zero)
  let rewardIcon = UIImageView(frame: .zero)
  let ctaLabel = UILabel(frame: .zero)
  ...생략...

  // Bind view with ad
  override func renderAd(_ ad: BABAd) {
    super.renderAd(ad)
    
    self.titleLabel.text = ad.creative.title
    self.descriptionLabel.text = ad.creative.body
    
    if let urlString = ad.creative.iconUrl {
      self.iconImageView.sd_setImage(with: URL(string: urlString))
    }
    
    self.adView.ad = ad
    self.adView.mediaView = self.mediaView
    self.adView.clickableViews = [self.ctaButton, self.iconImageView]
    
    updateCtaButton(ad: ad)
  }
  
  func updateCtaButton(ad: BABAd) {
    let callToAction = ad.creative.callToAction ?? "디폴트 스트링"
    let reward = ad.getAvailableReward()
    let totalReward = ad.getTotalReward()
    let isParticipated = ad.isParticipated()
    let isClicked = ad.isClicked()
    let isActionType = ad.isActionType()
    if (isClicked && isActionType && !isParticipated) {
      // 참여 확인 중인 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
    } else {
      if (totalReward > 0 && isParticipated) {
        // 참여 완료한 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
      } else if (reward > 0) {
        // 리워드가 있는 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
      } else {
        // 리워드가 없는 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
      }
    }
  }
  
  // MARK: BABNativeAdViewDelegate
  func babNativeAdView(_ adView: BABNativeAdView, didImpress ad: BABAd) {
  }
  
  func babNativeAdView(_ adView: BABNativeAdView, didClick ad: BABAd) {
    updateCtaButton(ad: ad)
  }
  
  func babNativeAdView(_ adView: BABNativeAdView, willRequestRewardFor ad: BABAd) {
  }
  
  func babNativeAdView(_ adView: BABNativeAdView, didRewardFor ad: BABAd, with result: BABRewardResult) {
    updateCtaButton(ad: ad)
  }
  
  func babNativeAdView(_ adView: BABNativeAdView, didParticipateAd ad: BABAd) {
    updateCtaButton(ad: ad)
  }
}
3.x (변경 후)
import UIKit
import BuzzAdBenefit

final class CustomCtaView: UIView, BZVCtaViewProtocol {
  ...생략...

  // MARK: BZVCtaViewProtocol
  func renderRewardNotAvailableViewState(withCtaText ctaText: String) {
    // 리워드가 없는 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
  }

  func renderRewardAvailableViewState(withCtaText ctaText: String, reward: Int) {
    // 리워드가 있는 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
  }

  func renderParticipatingViewState(withCtaText ctaText: String) {
    // 참여 확인 중인 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
  }

  func renderParticipatedViewState(withCtaText ctaText: String) {
    // 참여 완료한 광고에 대한 CTA 뷰 레이아웃을 정의합니다.
  }
}
import UIKit
import BuzzAdBenefit

final class ViewController: UIViewController {
  let nativeAdView = BZVNativeAdView(frame: .zero)
  let mediaView = BZVMediaView(frame: .zero)
  let iconImageView = UIImageView(frame: .zero)
  let titleLabel = UILabel(frame: .zero)
  let descriptionLabel = UILabel(frame: .zero)
  let ctaView = CustomCtaView(frame: .zero)
  lazy var viewBinder = BZVNativeAdViewBinder { builder in
    builder.nativeAdView = self.nativeAdView
    builder.mediaView = self.mediaView
    builder.iconImageView = self.iconImageView
    builder.titleLabel = self.titleLabel
    builder.descriptionLabel = self.descriptionLabel
    builder.ctaView = self.ctaView
  }

  ...생략...
  
  override func renderAd(_ ad: BZVNativeAd) {
    viewBinder.bind(with: ad)
  }
}

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

기존에 한 번에 여러 개의 광고를 로드하는 기능을 사용하는 경우에만 해당합니다.

BuzzAd iOS용 SDK 3.0에서는 여러 개의 광고를 로드할 때 BZVNativeAdsRequest 클래스를 사용하도록 변경했습니다. 한 번에 여러 개의 광고를 요청하려면 아래의 순서대로 기존 코드를 수정하세요.

  1. BABAdLoader 클래스를 삭제하세요.

  2. 빌더 블록을 이용해 BZVBuzzAdNative를 생성하세요..

  3. BZVNativeAdsRequest 데이터 객체를 생성해 [BZVBuzzAdNative loadAdsWithAdsRequest:]를 호출하세요.

Objective-C
2.x (변경 전)
BABAdLoader *adLoader = [[BABAdLoader alloc] initWithUnitId:@"YOUR_NATIVE_AD_UNIT_ID"];
[adLoader loadAdsWithSize:NATIVE_ADS_COUNT onSuccess:^(NSArray<BABAd *> * _Nonnull ads) {
  // 광고 할당이 성공하면 호출됩니다.
} onFailure:^(NSError * _Nullable error) {
  // 할당된 광고가 없으면 호출됩니다.
  NSLog(@"Failed to load native ads");
}];
3.x (변경 후)
BZVNativeAdsRequest *adsRequest = [BZVNativeAdsRequest requestWithBlock:^(BZVNativeAdsRequestBuilder * _Nonnull builder) {
  builder.adCount = @(NATIVE_ADS_COUNT); // 한 번에 로드할 광고 개수를 설정합니다.
}];

BZVBuzzAdNative *buzzAdNative = [BZVBuzzAdNative nativeWithUnitId:@"YOUR_NATIVE_UNIT_ID"];
[buzzAdNative loadAdsWithAdsRequest:adsRequest onSuccess:^(NSArray<BZVNativeAd *> * _Nonnull nativeAds) {
  // 광고 할당이 성공하면 호출됩니다.
} onFailure:^(BZVError * _Nonnull error) {
  // 할당된 광고가 없으면 호출됩니다.
  NSLog(@"Failed to load native ads");
}];
Swift
2.x (변경 전)
let adLoader = BABAdLoader(unitId: "YOUR_NATIVE_AD_UNIT_ID")
adLoader.loadAds(withSize: NATIVE_ADS_COUNT, onSuccess: { ads in
  // 광고 할당이 성공하면 호출됩니다.
}, onFailure: { error in
  // 할당된 광고가 없으면 호출됩니다.
  print("Failed to load native ads")
})
3.x (변경 후)
let adsRequest = BZVNativeAdsRequest { builder in
  builder.adCount = NSNumber(value: NATIVE_ADS_COUNT) // 한 번에 로드할 광고 개수를 설정합니다.
}

let buzzAdNative = BZVBuzzAdNative(unitId: "YOUR_NATIVE_UNIT_ID")
buzzAdNative.loadAds(with: adsRequest) { nativeAds in
  // 광고 할당이 성공하면 호출됩니다.
} onFailure: { error in
  // 할당된 광고가 없으면 호출됩니다.
  print("Failed to load native ads")
}

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

기존에 광고 이벤트를 수신하는 경우에만 해당합니다.

  • 광고 참여 상태에 따라 CTA View를 변경하기 위해 이벤트 리스너를 사용했다면, 더 이상 사용할 필요 없습니다.

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

BuzzAd iOS용 SDK 3.0에서는 BABNativeAdViewDelegateBZVNativeAdEventDelegate로 변경하고 BABNativeAdView가 아닌 BZVNativeAd의 delegate으로 설정하도록 변경했습니다.

광고 이벤트 리스너를 등록하려면 아래의 순서대로 기존 코드를 수정하세요.

  1. BABNativeAdView에서 delegate를 설정하는 코드를 삭제하세요.

  2. BABNativeAdViewDelegateBZVNativeAdEventDelegate로 변경하세요.

  3. renderAd 호출 시점에 ad 객체에 BZVNativeAdEventDelegate를 설정하세요.

Objective-C
2.x (변경 전)
@interface ViewController () <BABNativeAdViewDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
  ...생략...
  _adView.deleagte = self;
}

#pragma mark - BABNativeAdViewDelegate

- (void)BABNativeAdView:(BABNativeAdView *)adView didImpressAd:(BABAd *)ad {
  // Native 광고가 사용자에게 노출되었을 때 호출됩니다.
}

- (void)BABNativeAdView:(BABNativeAdView *)adView didClickAd:(BABAd *)ad {
  // 사용자가 Native 광고를 클릭했을 때 호출됩니다.
}

- (void)BABNativeAdView:(BABNativeAdView *)adView willRequestRewardForAd:(BABAd *)ad {
  // 리워드 적립 요청시에 호출됩니다.
}

- (void)BABNativeAdView:(BABNativeAdView *)adView didRewardForAd:(BABAd *)ad withResult:(BABRewardResult)result {
  // 리워드 적립의 결과를 수신했을 때 호출됩니다.
}

- (void)BABNativeAdView:(BABNativeAdView *)adView didParticipateAd:(BABAd *)ad {
  // 광고 참여가 완료되었을 때 호출됩니다.
}

@end
3.x (변경 후)
@interface ViewController () <BZVNativeAdEventDelegate>

@end

@implementation ViewController

- (void)renderAd:(BZVNativeAd *)ad {
  [_viewBinder bindWithNativeAd:ad];
  
  // Optional: Native 광고 이벤트 처리를 위한 delegate을 등록하고 각 이벤트에 따라 필요한 기능을 구현합니다.
  // 주의: 반드시 bindWithNativeAd 함수를 호출한 이후에 리스너 등록을 해야합니다.
  [ad addNativeAdEventDelegate:self];
}


#pragma mark - BZVNativeAdEventDelegate
- (void)didImpressAd:(BZVNativeAd *)nativeAd {
  // Native 광고가 유저에게 노출되었을 때 호출됩니다.
}

- (void)didClickAd:(BZVNativeAd *)nativeAd {
  // 사용자가 Native 광고를 클릭했을 때 호출됩니다.
}

- (void)didRequestRewardForAd:(BZVNativeAd *)nativeAd {
  // 리워드 적립 요청시에 호출됩니다.
}

- (void)didRewardForAd:(BZVNativeAd *)nativeAd withResult:(BZVRewardResult)result {
  // 리워드 적립의 결과를 수신했을 때 호출됩니다.
}

- (void)didParticipateAd:(BZVNativeAd *)nativeAd {
  // 광고 참여가 완료되었을 때 호출됩니다.
}

@end
Swift
2.x (변경 전)
final class ViewController: UIViewController, BABNativeAdViewDelegate {
  override func viewDidLoad {
    ...생략...
    adView.deleagte = self
  }
    
  func babNativeAdView(_ adView: BABNativeAdView, didImpress ad: BABAd) {
    // Native 광고가 사용자에게 노출되었을 때 호출됩니다. 
  }
  
  func babNativeAdView(_ adView: BABNativeAdView, didClick ad: BABAd) { 
    // 사용자가 Native 광고를 클릭했을 때 호출됩니다.
  }
  
  func babNativeAdView(_ adView: BABNativeAdView, willRequestRewardFor ad: BABAd) {
    // 리워드 적립 요청시에 호출됩니다.
  }

  func babNativeAdView(_ adView: BABNativeAdView, didRewardFor ad: BABAd, with result: BABRewardResult) {
    // 리워드 적립의 결과를 수신했을 때 호출됩니다.
  }
  
  func babNativeAdView(_ adView: BABNativeAdView, didParticipateAd ad: BABAd) {
    // 광고 참여가 완료되었을 때 호출됩니다.
  }
}
3.x (변경 후)
import UIKit
import BuzzAdBenefit

final class ViewController: UIViewController, BZVNativeAdEventDelegate {

  private func renderAd(_ ad: BZVNativeAd) {
    viewBinder.bind(with: ad)
    
    // Optional: Native 광고 이벤트 처리를 위한 delegate을 등록하고 각 이벤트에 따라 필요한 기능을 구현합니다.
    // 주의: 반드시 bind 함수를 호출한 이후에 리스너 등록을 해야합니다.
    ad.add(self)
  }
  
  // MARK: BZVNativeAdEventDelegate
  func didImpress(_ nativeAd: BZVNativeAd) {
    // Native 광고가 유저에게 노출되었을 때 호출됩니다.
  }

  func didClick(_ nativeAd: BZVNativeAd) {
    // 유저가 Native 광고를 클릭했을 때 호출됩니다.
  }

  func didRequestReward(for nativeAd: BZVNativeAd) {
    // 리워드 적립 요청시에 호출됩니다.
  }

  func didReward(for nativeAd: BZVNativeAd, with result: BZVRewardResult) {
    // 리워드 적립의 결과를 수신했을 때 호출됩니다.
  }

  func didParticipateAd(_ nativeAd: BZVNativeAd) {
    // 광고 참여가 완료되었을 때 호출됩니다.
  }
}

비디오 광고 리스너 등록하기

기존에 비디오 광고 리스너를 등록한 경우에만 해당합니다.

BuzzAd iOS용 SDK 3.0에서는 BABNativeAdViewVideoDelegateBZVNativeAdViewVideoDelegate로 변경했습니다.

비디오 광고 리스너를 등록하려면 기존의 BABNativeAdViewVideoDelegateBZVNativeAdViewVideoDelegate으로 변경하세요.

Objective-C
2.x (변경 전)
@interface ViewController () <BABNativeAdViewVideoDelegate>

@end
3.x (변경 후)
@interface ViewController () <BZVNativeAdViewVideoDelegate>

@end
Swift
2.x (변경 전)
final class ViewController: UIViewController, BABNativeAdViewVideoDelegate {
}
3.x (변경 후)
final class ViewController: UIViewController, BZVNativeAdViewVideoDelegate {
}

API 변경 내역

2.x (변경 전)

3.0 (변경 후)

설명

BABNativeAdView

BZVNativeAdView

클래스의 이름을 변경했습니다.

BABMediaView

BZVMediaView

클래스의 이름을 변경했습니다.

BABAdLoader

BZVBuzzAdNative

클래스의 이름을 변경했습니다.

[BABAdLoader loadAdWithOnSuccess:onFailure]

[BZVBuzzAdNative loadAdWithAdRequest:onSuccess:onFailure]

BZVNativeAdRequest 인자를 요구하도록 변경했습니다.

[BABAdLoader loadAdsWithSize:onSuccess:onFailure]

[BZVBuzzAdNative loadAdsWithAdsRequest:onSuccess:onFailure]

함수의 이름을 변경하고 BZVNativeAdsRequest 인자를 요구하도록 변경했습니다.

N/A

BZVNativeAdReuqest

클래스를 추가했습니다.

N/A

BZVNativeAdsReuqest

클래스를 추가했습니다.

BABNativeAdViewDelegate

BZVNativeAdEventDelegate

클래스의 이름을 변경했습니다. BABNativeAdView가 아닌 BZVNativeAd의 delegate로 설정하도록 변경했습니다.

BABNativeAdViewVideoDelegate

BZVNativeAdViewVideoDelegate

클래스의 이름을 변경했습니다.

  • No labels