Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

목차

Table of Contents
minLevel1
maxLevel1
exclude목차

개요

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

주요 변경 사항

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

  • Interstitial 지면 클래스 BABInterstitialAdHandlerBZVBuzzAdInterstitial로 변경했습니다.

  • Interstitial 광고의 UI가 업데이트 되었습니다.

Interstitial 기본 설정

광고 할당 및 표시하기 및 광고 요청에 대한 콜백

BuzzAd iOS용 SDK 3.0에서는 BABInterstitialAdHandler, BABInterstitialAdHandlerDelegate를 각각 BZVBuzzAdInterstitial, BZVBuzzAdInterstitialDelegate로 변경하고 광고를 표시하기 전에 미리 할당받을 수 있도록 load 함수를 추가했습니다.

...

  1. BABInterstitialAdHandler 클래스를 BZVBuzzAdInterstitial로 변경하세요.

  2. BABInterstitialAdHandlerDelegate 클래스를 BZVBuzzAdInterstitialDelegate로 변경하세요.

  3. [BABInterstitialAdHandler show:withConfig] 함수를 [BZVBuzzAdInterstitial load] 함수로 변경하고, BZVBuzzAdInterstitialDidLoadAd: delegate 함수가 호출된 시점에 [BZVBuzzAdInterstitial presentOnViewController:]를 호출하세요.

Objective-C
2.x (변경 전)
Code Block
languageobjective-c
@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 (변경 후)
Code Block
languageobjective-c
@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 (변경 전)
Code Block
languageswift
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 (변경 후)
Code Block
languageswift
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 지면에서 한 번에 요청할 광고 개수를 설정하는 방법이 변경되었습니다.

...

  1. BABInterstitialAdConfig에서 adCount를 설정하는 코드를 삭제하세요.

  2. 원하는 광고 개수를 버즈빌 담당자에게 전달하세요.

Objective-C
2.x (변경 전)
Code Block
languageobjective-c
BABInterstitialConfig *config = [[BABInterstitialConfig alloc] init];
[config setAdCount:YOUR_ADS_COUNT]; 삭제
Swift
2.x (변경 전)
Code Block
languageswift
let config = BABInterstitialConfig()
config.adCount = YOUR_ADS_COUNT // 삭제

Interstitial 디자인 커스터마이징

Note

기존에 Interstitial 디자인을 커스터마이징한 경우에만 해당합니다.

...

  1. BABInterstitialConfig에서 topIcon, titleText, titleTextColor, backgroundColor, showInquiryButton, ctaViewIcon, ctaViewTextColor, ctaViewBackgroundColor를 설정하는 코드를 삭제하세요.

  2. BZVBuzzAdInterstitialThemetextColor, backgroundColor, inquiryButtonHidden, rewardIcon, participatedIcon, ctaViewTextColor, ctaViewBackgroundColor를 설정하세요.

  3. 이전 단계에서 생성한 BZVBuzzAdInterstitialThemeBZVBuzzAdInterstitialtheme으로 설정하세요.

Objective-C
2.x (변경 전)
Code Block
languageobjective-c
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 (변경 후)
Code Block
languageobjective-c
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 (변경 전)
Code Block
languageswift
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 (변경 후)
Code Block
languageswift
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 (변경 후)

설명

BABInterstitialAdHandler

BZVBuzzAdInterstitial

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

BABInterstitialAdHandlerDelegate

BABInterstitialAdHandlerDelegate

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

[BABInterstitialAdHandler show:withConfig:]

[BZVBuzzAdInterstitial load], [BZVBuzzAdInterstitial presentOnViewController]

show 함수를 loadpresent 함수로 분리했습니다.

BABInterstitialConfig

BZVBuzzAdInterstitialTheme

Interstitial 디자인을 변경할 때 BZVBuzzAdInterstitialTheme을 사용하도록 변경했습니다.

BABInterstitialConfig 변경 내역

2.x (변경 전)

3.0 (변경 후)

설명

topIcon

N/A

Interstitial 광고의 UI를 업데이트함에 따라 삭제했습니다.

titleText

N/A

Interstitial 광고의 UI를 업데이트함에 따라 삭제했습니다.

titleTextColor

BuzzAdInterstitialTheme.textColor

BuzzAdInterstitialTheme 클래스의 빌더 블록에서 설정하도록 변경했습니다.

backgroundColor

BuzzAdInterstitialTheme.backgroundColor

BuzzAdInterstitialTheme 클래스의 빌더 블록에서 설정하도록 변경했습니다.

showInquiryButton

BuzzAdInterstitial.hideInquiryButton

BuzzAdInterstitial 클래스의 빌더 블록에서 설정하도록 변경했습니다.

ctaViewIcon

BuzzAdInterstitialTheme.rewardIcon, BuzzAdInterstitialTheme.participatedIcon

BuzzAdInterstitialTheme 클래스의 빌더 블록에서 설정하도록 변경했습니다.

ctaViewTextColor

BuzzAdInterstitialTheme.ctaTextColor

BuzzAdInterstitialTheme 클래스의 빌더 블록에서 설정하도록 변경했습니다.

ctaViewBackgroundColor

BuzzAdInterstitialTheme.ctaBackgroundColor

BuzzAdInterstitialTheme 클래스의 빌더 블록에서 설정하도록 변경했습니다.

adCount

N/A

버즈빌 서버에서 제어하도록 변경되었습니다.