목차
개요
이 장에서는 BuzzAd iOS용 SDK 버전을 3.0으로 업데이트하기 위해 필요한 Interstitial 지면의 설정을 안내합니다.
주요 변경 사항
BuzzAd iOS용 SDK의 공통 변경 사항 및 아래의 사항이 변경되었습니다.
Interstitial 지면 클래스
BABInterstitialAdHandler
를BZVBuzzAdInterstitial
로 변경했습니다.Interstitial 광고의 UI가 업데이트 되었습니다.
Interstitial 기본 설정
광고 할당 및 표시하기 및 광고 요청에 대한 콜백
BuzzAd iOS용 SDK 3.0에서는 BABInterstitialAdHandler
, BABInterstitialAdHandlerDelegate
를 각각 BZVBuzzAdInterstitial
, BZVBuzzAdInterstitialDelegate
로 변경하고 광고를 표시하기 전에 미리 할당받을 수 있도록 load
함수를 추가했습니다.
Interstitial 광고를 할당받고 표시하려면 아래의 순서대로 기존 코드를 수정하세요.
BABInterstitialAdHandler
클래스를BZVBuzzAdInterstitial
로 변경하세요.BABInterstitialAdHandlerDelegate
클래스를BZVBuzzAdInterstitialDelegate
로 변경하세요.[BABInterstitialAdHandler show:withConfig]
함수를[BZVBuzzAdInterstitial load]
함수로 변경하고,BZVBuzzAdInterstitialDidLoadAd:
delegate 함수가 호출된 시점에[BZVBuzzAdInterstitial presentOnViewController:]
를 호출하세요.
Objective-C
2.x (변경 전)
@import BuzzAdBenefit; @interface ViewController () <BZVBuzzAdInterstitialDelegate> @property (nonatomic, strong, readonly) BABInterstitialAdHandler *interstitialAdHandler; @end @implementation InterstitialViewControllerGuide - (void)viewDidLoad { [super viewDidLoad]; _interstitialAdHandler = [[BABInterstitialAdHandler alloc] initWithUnitId:@"YOUR_INTERSTITIAL_UNIT_ID" type:BABInterstitialDialog]; _interstitialAdHandler.delegate = self; // Interstitial 광고를 화면에 표시합니다. [_interstitialAdHandler show:self withConfig:nil]; } #pragma mark - BABInterstitialAdHandlerDelegate - (void)BABInterstitialAdHandlerDidSucceedLoadingAd:(BABInterstitialAdHandler *)adHandler { // 할당된 광고가 있으면 호출됩니다. } - (void)BABInterstitialAdHandler:(BABInterstitialAdHandler *)adLoader didFailToLoadAdWithError:(BABError *)error { // 할당된 광고가 없으면 호출됩니다. } - (void)BABInterstitialViewControllerDidFinish:(UIViewController *)viewController { // Interstitial 지면이 종료되면 호출됩니다. // 필요에 따라 추가 기능을 구현하세요. } @end
3.x (변경 후)
@import BuzzAdBenefit; @interface ViewController () <BABInterstitialAdHandlerDelegate> @property (nonatomic, strong, readonly) BZVBuzzAdInterstitial *buzzAdInterstitial; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _buzzAdInterstitial = [BZVBuzzAdInterstitial interstitialWithBlock:^(BZVBuzzAdInterstitialBuilder * _Nonnull builder) { builder.unitId = @"YOUR_INTERSTITIAL_UNIT_ID"; builder.type = BZVBuzzAdInterstitialDialog; }]; _buzzAdInterstitial.delegate = self; [_buzzAdInterstitial load]; } #pragma mark - BZVBuzzAdInterstitialDelegate - (void)BZVBuzzAdInterstitialDidLoadAd:(BZVBuzzAdInterstitial *)interstitial { // 할당된 광고가 있으면 호출됩니다. // Interstitial 광고를 화면에 표시합니다. [interstitial presentOnViewController:self]; } - (void)BZVBuzzAdInterstitialDidFailToLoadAd:(BZVBuzzAdInterstitial *)interstitial withError:(BZVError *)error { // 할당된 광고가 없으면 호출됩니다. } - (void)BZVBuzzAdInterstitialDidDismiss:(UIViewController *)viewController { // Interstitial 지면이 종료되면 호출됩니다. // 필요에 따라 추가 기능을 구현하세요. } @end
Swift
2.x (변경 전)
import UIKit import BuzzAdBenefit final class ViewController: UIViewController, BABInterstitialAdHandlerDelegate { let interstitialAdHandler = BABInterstitialAdHandler(unitId: "INTERSTITIAL_UNIT_ID", type: BABInterstitialDialog) override func viewDidLoad() { super.viewDidLoad() interstitialAdHandler.delegate = self // Interstitial 광고를 화면에 표시합니다. interstitialAdHandler.show(self, with: nil) } // MARK: BABInterstitialAdHandlerDelegate func bzvBuzzAdInterstitialDidLoadAd(_ interstitial: BZVBuzzAdInterstitial) { // 할당된 광고가 있으면 호출됩니다. } func bzvBuzzAdInterstitialDidFail(toLoadAd interstitial: BZVBuzzAdInterstitial, withError error: BZVError) { // 할당된 광고가 없으면 호출됩니다. } func bzvBuzzAdInterstitialDidDismiss(_ viewController: UIViewController) { // Interstitial 지면이 종료되면 호출됩니다. // 필요에 따라 추가 기능을 구현하세요. } }
3.x (변경 후)
import UIKit import BuzzAdBenefit final class ViewController: UIViewController, BZVBuzzAdInterstitialDelegate { let buzzAdInterstitial = BZVBuzzAdInterstitial { builder in builder.unitId = "YOUR_INTERSTITIAL_UNIT_ID" builder.type = .dialog } override func viewDidLoad() { super.viewDidLoad() buzzAdInterstitial.delegate = self buzzAdInterstitial.load() } // MARK: BZVBuzzAdInterstitialDelegate func bzvBuzzAdInterstitialDidLoadAd(_ interstitial: BZVBuzzAdInterstitial) { // 할당된 광고가 있으면 호출됩니다. // Interstitial 광고를 화면에 표시합니다. interstitial.present(on: self) } func bzvBuzzAdInterstitialDidFail(toLoadAd interstitial: BZVBuzzAdInterstitial, withError error: BZVError) { // 할당된 광고가 없으면 호출됩니다. } func bzvBuzzAdInterstitialDidDismiss(_ viewController: UIViewController) { // Interstitial 지면이 종료되면 호출됩니다. // 필요에 따라 추가 기능을 구현하세요. } }
Interstitial 고급 설정
광고 개수 설정하기
BuzzAd iOS용 SDK 3.0에서는 바텀 시트 형태의 Interstitial 지면에서 한 번에 요청할 광고 개수를 설정하는 방법이 변경되었습니다.
광고 개수를 설정하려면 아래의 순서대로 기존 코드를 수정하세요.
BABInterstitialAdConfig
에서adCount
를 설정하는 코드를 삭제하세요.원하는 광고 개수를 버즈빌 담당자에게 전달하세요.
Objective-C
2.x (변경 전)
BABInterstitialConfig *config = [[BABInterstitialConfig alloc] init]; [config setAdCount:YOUR_ADS_COUNT]; 삭제
Swift
2.x (변경 전)
let config = BABInterstitialConfig() config.adCount = YOUR_ADS_COUNT // 삭제
Interstitial 디자인 커스터마이징
기존에 Interstitial 디자인을 커스터마이징한 경우에만 해당합니다.
BuzzAd iOS용 SDK 3.0에서는 텍스트 색상, 배경 색상, CTA 버튼의 디자인을 BABInterstitialConfig
가 아닌 BZVBuzzAdInterstitialTheme
에 설정하도록 변경했습니다. 또한, interstitial 광고의 업데이트 된 UI에서 필요로 하지 않는 topIcon
, titleText
, titleTextColor
플래그를 삭제했습니다.
텍스트 색상, 배경 색상, 또는 CTA 버튼의 디자인을 변경하려면 아래의 순서대로 기존 코드를 수정하세요.
BABInterstitialConfig
에서topIcon
,titleText
,titleTextColor
,backgroundColor
,showInquiryButton
,ctaViewIcon
,ctaViewTextColor
,ctaViewBackgroundColor
를 설정하는 코드를 삭제하세요.BZVBuzzAdInterstitialTheme
에textColor
,backgroundColor
,inquiryButtonHidden
,rewardIcon
,participatedIcon
,ctaViewTextColor
,ctaViewBackgroundColor
를 설정하세요.이전 단계에서 생성한
BZVBuzzAdInterstitialTheme
을BZVBuzzAdInterstitial
의theme
으로 설정하세요.
Objective-C
2.x (변경 전)
BABInterstitialConfig *config = [[BABInterstitialConfig alloc] init]; [config setTopIcon:[UIImage imageNamed:@"YOUR_TOP_ICON"]]; [config setTitleText:@"YOUR_TITLE_TEXT"]; [config setTitleTextColor:UIColor.YOUR_TITLE_TEXT_COLOR]; [config setBackgroundColor:UIColor.YOUR_BACKGROUND_COLOR]; [config setShowInquiryButton:NO]; [config setCtaViewIcon:[[BABStateValue<UIImage *> alloc] initWithEnabled:[UIImage imageNamed:@"YOUR_REWARD_ICON"] disabled:[UIImage imageNamed:@"YOUR_PARTICIPATED_ICON"]]]; [config setCtaViewTextColor:[[BABStateValue<UIColor *> alloc] initWithEnabled:UIColor.YOUR_CTA_TEXT_NORMAL_COLOR disabled:UIColor.YOUR_CTA_TEXT_DISABLED_COLOR]]; [config setCtaViewBackgroundColor:[[BABStateValue<UIColor *> alloc] initWithEnabled:UIColor.YOUR_CTA_BACKGROUND_NORMAL_COLOR disabled:UIColor.YOUR_CTA_BACKGROUND_DISABLED_COLOR]];
3.x (변경 후)
BZVBuzzAdInterstitial *buzzAdInterstitial = [BZVBuzzAdInterstitial interstitialWithBlock:^(BZVBuzzAdInterstitialBuilder * _Nonnull builder) { builder.unitId = @"YOUR_INTERSTITIAL_UNIT_ID"; builder.type = BZVBuzzAdInterstitialDialog; builder.inquiryButtonHidden = YES; builder.theme = [BZVBuzzAdInterstitialTheme themeWithBlock:^(BZVBuzzAdInterstitialThemeBuilder * _Nonnull builder) { builder.textColor = UIColor.YOUR_TEXT_COLOR; builder.backgroundColor = UIColor.YOUR_TEXT_COLOR; builder.rewardIcon = [UIImage imageNamed:@"YOUR_REWARD_ICON"]; builder.participatedIcon = [UIImage imageNamed:@"YOUR_PARTICIPATED_ICON"]; builder.inquiryButtonHidden = YES; builder.ctaTextColor = [BZVControlStateResource resourceWithBlock:^(BZVControlStateResourceBuilder * _Nonnull builder) { [builder setValue:UIColor.YOUR_CTA_TEXT_NORMAL_COLOR forState:BZVControlStateNormal]; }]; builder.ctaBackgroundColor = [BZVControlStateResource resourceWithBlock:^(BZVControlStateResourceBuilder * _Nonnull builder) { [builder setValue:UIColor.YOUR_CTA_BACKGROUND_NORMAL_COLOR forState:BZVControlStateNormal]; }]; }]; }];
Swift
2.x (변경 전)
let config = BABInterstitialConfig() config.topIcon = UIImage(named: "YOUR_TOP_ICON")! config.titleText = "YOUR_TITLE_TEXT" config.titleTextColor = UIColor.YOUR_TITLE_TEXT_COLOR config.backgroundColor = UIColor.YOUR_BACKGROUND_COLOR config.showInquiryButton = false config.ctaViewIcon = BABStateValue<UIImage>(enabled: UIImage(named: "YOUR_REWARD_ICON")!, disabled: UIImage(named: "YOUR_PARTICIPATED_ICON")!) config.ctaViewTextColor = BABStateValue<UIColor>(enabled: UIColor.YOUR_CTA_TEXT_NORMAL_COLOR, disabled: UIColor.YOUR_CTA_TEXT_DISABLED_COLOR) config.ctaViewBackgroundColor = BABStateValue<UIColor>(enabled: UIColor.YOUR_CTA_BACKGROUND_NORMAL_COLOR, disabled:UIColor.YOUR_CTA_BACKGROUND_DISABLED_COLOR)
3.x (변경 후)
let buzzAdInterstitial = BZVBuzzAdInterstitial { builder in builder.unitId = "YOUR_INTERSTITIAL_UNIT_ID" builder.type = .dialog builder.inquiryButtonHidden = true builder.theme = BZVBuzzAdInterstitialTheme { (builder: BZVBuzzAdInterstitialThemeBuilder) in builder.textColor = UIColor.YOUR_TEXT_COLOR builder.backgroundColor = UIColor.YOUR_BACKGROUND_COLOR builder.rewardIcon = UIImage(named: "YOUR_REWARD_ICON")! builder.participatedIcon = UIImage(named: "YOUR_PARTICIPATED_ICON")! builder.inquiryButtonHidden = true builder.ctaTextColor = BZVControlStateResource { builder in builder.setValue(UIColor.YOUR_CTA_TEXT_NORMAL_COLOR, for: .normal) } builder.ctaBackgroundColor = BZVControlStateResource { builder in builder.setValue(UIColor.YOUR_CTA_BACKGROUND_NORMAL_COLOR, for: .normal) } } }
API 변경 내역
2.x (변경 전) | 3.0 (변경 후) | 설명 |
---|---|---|
|
| 클래스의 이름을 변경했습니다. |
|
| 클래스의 이름을 변경했습니다. |
|
|
|
|
| Interstitial 디자인을 변경할 때 |
BABInterstitialConfig 변경 내역
2.x (변경 전) | 3.0 (변경 후) | 설명 |
---|---|---|
| N/A | Interstitial 광고의 UI를 업데이트함에 따라 삭제했습니다. |
| N/A | Interstitial 광고의 UI를 업데이트함에 따라 삭제했습니다. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| N/A | 버즈빌 서버에서 제어하도록 변경되었습니다. |