(iOS v3.0.x) 3. Native 마이그레이션 가이드
목차
- 1 개요
- 2 주요 변경 사항
- 3 Native 기본 설정
- 3.1 광고 레이아웃 구성하기
- 3.2 광고 할당 및 표시하기
- 4 Native 고급 설정
- 4.1 CTA 버튼 자체 구현하기
- 4.2 한 번에 여러 개의 광고 로드하기
- 4.3 광고 이벤트 리스너 등록하기
- 4.4 비디오 광고 리스너 등록하기
- 5 API 변경 내역
개요
이 장에서는 BuzzAd iOS용 SDK 버전을 3.0으로 업데이트하기 위해 필요한 Native 지면의 설정을 안내합니다.
주요 변경 사항
BuzzAd iOS용 SDK의 공통 변경 사항 및 아래의 사항이 변경되었습니다.
Native 지면 클래스
BABAdLoader
를BZVBuzzAdNative
로 변경했습니다.광고를 표시할 때 광고 데이터를 자동으로 바인딩하는 기능을 추가했습니다.
광고 요청에 대한 응답으로
BABAd
객체 대신BZVNativeAd
를 반환하도록 변경했습니다.BZVNativeAd
객체는 광고를 보여주기 위해 필요한 정보 이외에 불필요한 정보를 포함하지 않습니다.BZVCtaViewProtocol
을 준수하는 클래스를 사용하여 CTA 버튼을 자체 구현하도록 변경했습니다.
Native 기본 설정
광고 레이아웃 구성하기
BuzzAd iOS용 SDK 3.0에서는 BABNativeAdView
, BABMediaView
를 각각 BZVNativeAdView
와 BZVMediaView
로 변경했습니다.
Native 광고 레이아웃을 구성하려면 기존의 BABNativeAdView
와 BABMediaView
를 각각 BZVNativeAdView
와 BZVMediaView
로 변경하세요.
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 광고를 할당받고 표시하려면 아래의 순서대로 기존 코드를 수정하세요.
BABAdLoader
클래스를 삭제하세요.빌더 블록을 이용해
BZVBuzzAdNative
를 생성하세요.BZVNativeAdRequest
데이터 객체를 생성해[BZVBuzzAdNative loadAdWithAdRequest:]
를 호출하세요.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
을 준수하는 클래스는 광고 데이터를 바인딩할 때 BZVNativeAdViewBinder
의 ctaView
인자로 설정할 수 있으며 자동으로 CTA 버튼의 상태에 따라 UI가 업데이트 됩니다.
CTA 버튼을 자체 구현하려면 아래의 순서대로 기존 코드를 수정하세요.
광고 레이아웃을 구성하는 클래스의
updateCtaButtonWithAd
함수에서 CTA 뷰의 UI를 업데이트하는 코드를 삭제하세요.BABNativeAdViewDelegate
의 콜백에서updateCtaButtonWithAd
함수를 호출하는 코드를 삭제하세요.CtaViewProtocol
을 준수하는UIView
클래스의 서브클래스를 생성하세요.광고 레이아웃을 구성하는 클래스에서 이전 단계에서 생성한 CTA 버튼 클래스를 사용하세요.
광고 데이터를 바인딩할 때
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
클래스를 사용하도록 변경했습니다. 한 번에 여러 개의 광고를 요청하려면 아래의 순서대로 기존 코드를 수정하세요.
BABAdLoader
클래스를 삭제하세요.빌더 블록을 이용해
BZVBuzzAdNative
를 생성하세요..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에서는 BABNativeAdViewDelegate
를 BZVNativeAdEventDelegate
로 변경하고 BABNativeAdView
가 아닌 BZVNativeAd
의 delegate으로 설정하도록 변경했습니다.
광고 이벤트 리스너를 등록하려면 아래의 순서대로 기존 코드를 수정하세요.
BABNativeAdView
에서 delegate를 설정하는 코드를 삭제하세요.BABNativeAdViewDelegate
를BZVNativeAdEventDelegate
로 변경하세요.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에서는 BABNativeAdViewVideoDelegate
를 BZVNativeAdViewVideoDelegate
로 변경했습니다.
비디오 광고 리스너를 등록하려면 기존의 BABNativeAdViewVideoDelegate
을 BZVNativeAdViewVideoDelegate
으로 변경하세요.
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 (변경 후) | 설명 |
---|---|---|
|
| 클래스의 이름을 변경했습니다. |
|
| 클래스의 이름을 변경했습니다. |
|
| 클래스의 이름을 변경했습니다. |
|
|
|
|
| 함수의 이름을 변경하고 |
N/A |
| 클래스를 추가했습니다. |
N/A |
| 클래스를 추가했습니다. |
|
| 클래스의 이름을 변경했습니다. |
|
| 클래스의 이름을 변경했습니다. |