목차
Table of Contents |
---|
minLevel | 1 |
---|
maxLevel | 2 |
---|
exclude | 목차 |
---|
|
개요
이 장에서는 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 (변경 전)
Code Block |
---|
|
@import BuzzAdBenefit;
@interface ViewController ()
@property (nonatomic, strong, readonly) BABNativeAdView *nativeAdView;
@property (nonatomic, strong, readonly) BABMediaView *mediaView;
...생략...
@end |
3.x (변경 후)
Code Block |
---|
|
@import BuzzAdBenefit;
@interface ViewController ()
@property (nonatomic, strong, readonly) BZVNativeAdView *nativeAdView;
@property (nonatomic, strong, readonly) BZVMediaView *mediaView;
...생략...
@end |
Swift
2.x (변경 전)
Code Block |
---|
|
import BuzzAdBenefit
final class ViewController: UIViewController {
let nativeAdView = BABNativeAdView(frame: .zero)
let mediaView = BABMediaView(frame: .zero)
...생략...
} |
3.x (변경 후)
Code Block |
---|
|
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
를 반환하도록 변경했습니다.
...
BABAdLoader
클래스를 삭제하세요.
빌더 블록을 이용해 BZVBuzzAdNative
를 생성하세요.
BZVNativeAdRequest
데이터 객체를 생성해 [BZVBuzzAdNative loadAdWithAdRequest:]
를 호출하세요.
renderAd
함수에서 광고 데이터를 수동으로 바인딩하는 코드를 삭제하고 BZVNativeAdViewBinder
를 사용하여 자동으로 바인딩하세요.
Objective-C
2.x (변경 전)
Code Block |
---|
|
@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 (변경 후)
Code Block |
---|
|
@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 (변경 전)
Code Block |
---|
|
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 (변경 후)
Code Block |
---|
|
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가 업데이트 됩니다.
...
광고 레이아웃을 구성하는 클래스의 updateCtaButtonWithAd
함수에서 CTA 뷰의 UI를 업데이트하는 코드를 삭제하세요.
BABNativeAdViewDelegate
의 콜백에서 updateCtaButtonWithAd
함수를 호출하는 코드를 삭제하세요.
CtaViewProtocol
을 준수하는 UIView
클래스의 서브클래스를 생성하세요.
광고 레이아웃을 구성하는 클래스에서 이전 단계에서 생성한 CTA 버튼 클래스를 사용하세요.
광고 데이터를 바인딩할 때 ctaView
인자로 자체 구현한 CTA 버튼을 설정하세요.
Objective-C
2.x (변경 전)
Code Block |
---|
|
@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 (변경 후)
Code Block |
---|
|
@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 뷰 레이아웃을 정의합니다.
} |
Code Block |
---|
|
@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 (변경 전)
Code Block |
---|
|
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 (변경 후)
Code Block |
---|
|
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 뷰 레이아웃을 정의합니다.
}
} |
Code Block |
---|
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)
}
} |
한 번에 여러 개의 광고 로드하기
Note |
---|
기존에 한 번에 여러 개의 광고를 로드하는 기능을 사용하는 경우에만 해당합니다. |
...
BABAdLoader
클래스를 삭제하세요.
빌더 블록을 이용해 BZVBuzzAdNative
를 생성하세요..
BZVNativeAdsRequest
데이터 객체를 생성해 [BZVBuzzAdNative loadAdsWithAdsRequest:]
를 호출하세요.
Objective-C
2.x (변경 전)
Code Block |
---|
|
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 (변경 후)
Code Block |
---|
|
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 (변경 전)
Code Block |
---|
|
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 (변경 후)
Code Block |
---|
|
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")
} |
광고 이벤트 리스너 등록하기
Note |
---|
기존에 광고 이벤트를 수신하는 경우에만 해당합니다. |
...
BABNativeAdView
에서 delegate를 설정하는 코드를 삭제하세요.
BABNativeAdViewDelegate
를 BZVNativeAdEventDelegate
로 변경하세요.
renderAd
호출 시점에 ad 객체에 BZVNativeAdEventDelegate
를 설정하세요.
Objective-C
2.x (변경 전)
Code Block |
---|
|
@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 (변경 후)
Code Block |
---|
|
@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 (변경 전)
Code Block |
---|
|
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 (변경 후)
Code Block |
---|
|
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) {
// 광고 참여가 완료되었을 때 호출됩니다.
}
} |
비디오 광고 리스너 등록하기
Note |
---|
기존에 비디오 광고 리스너를 등록한 경우에만 해당합니다. |
...
비디오 광고 리스너를 등록하려면 기존의 BABNativeAdViewVideoDelegate
을 BZVNativeAdViewVideoDelegate
으로 변경하세요.
Objective-C
2.x (변경 전)
Code Block |
---|
|
@interface ViewController () <BABNativeAdViewVideoDelegate>
@end |
3.x (변경 후)
Code Block |
---|
|
@interface ViewController () <BZVNativeAdViewVideoDelegate>
@end |
Swift
2.x (변경 전)
Code Block |
---|
|
final class ViewController: UIViewController, BABNativeAdViewVideoDelegate {
} |
3.x (변경 후)
Code Block |
---|
|
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
| 클래스의 이름을 변경했습니다. |
...