스플래시 광고

최초 실행되는 ViewController에 NestAds의 NestAdsSplashAdView 를 세팅하여 스플래시 광고를 표시하는 가이드입니다.

기본 요건

시작 가이드에 따라 필요한 과정을 완료합니다.


테스트 광고 게재위치

Placement Code(게재위치 코드)는 어드민의 인벤토리 > 게재위치 메뉴에서 게재위치를 등록 시 시스템을 통해 자동으로 생성됩니다.

테스트 게재위치 목록

placementCode
설명

SAMPLE_SPLASH

360x256 이미지 + 애드뱃지


광고 표시하기

  1. 스플래시 화면으로 사용할 뷰컨트롤러를 생성합니다. (ex. SplashViewController)

  2. AppDelegate 또는 SceneDelegate 에서 rootViewController를 1. 에서 생성한 뷰컨트롤러로 설정합니다.

func scene(
    _ scene: UIScene, willConnectTo session: UISceneSession,
    options connectionOptions: UIScene.ConnectionOptions
  ) {
    guard let windowScene = (scene as? UIWindowScene) else { return }

    window = UIWindow(windowScene: windowScene)
    let splashVC = SplashViewController()
    window?.rootViewController = splashVC
  }
  1. SplashViewController 에서 NestAdsSplashAdView 를 생성하여 스플래시 광고 설정을 마칩니다.

class SplashViewController: UIViewController {

  // 어플리케이션 로고 이미지
    let logoImageView: UIImageView = {
      let imageView = UIImageView()

      imageView.image = UIImage(named: "nestAdsLogo")
      imageView.contentMode = .scaleAspectFit
      return imageView
    }()

    var containerView: UIView = {
      let view = UIView()
      return view
    }()
    var splashView: NestAdsSplashAdView!

    override func viewDidLoad() {
    super.viewDidLoad()

    setupUI()

    // 스플래시뷰의 사이즈를 지정하며, 이 때 size는 NestAdsAdSizeFromCGSize 메서드를 통해 생성합니다.
    let size = NestAdsAdSizeFromCGSize(containerView.frame.size)

    // 스플래시뷰를 초기화 합니다.
    splashView = NestAdsSplashAdView(size: size)
    // splashView = NestAdsSplashAdView(size: size, origin: CGPoint(x: 0, y: 0))

    // 광고 요청을 하기전 delegate를 설정하도록 주의합니다.
    splashView.delegate = self

    // placementCode를 설정합니다.
    splashView.placementCode = "SAMPLE_SPLASH"
    // duration을 설정하지 않았을 때의 기본값은 3이며, 1~5의 숫자를 설정할 수 있습니다.
    splashView.duration = 3

    // 광고를 요청합니다.
    splashView.load(NestAdsAdRequest())

  }
  private func setupUI() {
   //로고 이미지, 스플래시뷰 를 배치합니다.
  }
}
  1. NestAdsSplashAdViewDelegatesplashAdViewDidReachDuration 메서드에서 화면 전환을 합니다.

extension SplashViewController: NestAdsSplashAdViewDelegate {
  ...

    func splashAdViewDidReachDuration(_ splashAdView: NestAdsSDK.NestAdsSplashAdView) {
      // duration 시간이 지나고 이 메서드가 호출됩니다.이 시점에서 화면 전환을 합니다.
      transitionToMainScreen()
    }

    private func transitionToMainScreen() {
      // 화면 전화하는 예시 코드입니다.
    DispatchQueue.main.async {
      guard let windowScene = UIApplication.shared.connectedScenes.first as? UIWindowScene,
        let sceneDelegate = windowScene.delegate as? SceneDelegate
      else { return }

      let mainVC = MainViewController()
      let navigationController = UINavigationController(rootViewController: mainVC)

      sceneDelegate.window?.rootViewController = navigationController
    }
  }

}

광고 delegate

NestAdsSplashAdView 에서 지원하는 delegate는 다음을 참고하세요.

1) 광고 요청에 성공한 경우 아래의 순서로 불립니다.

splashAdViewDidReceiveAd -> splashAdViewDidRecordImpression -> duration시간이 지난 후 -> splashAdViewDidReachDuration

2) 광고 요청에 실패한 경우 아래의 순서로 불립니다.

splashAdView(_:didFailToReceiveAdWithError:) -> duration시간이 지난 후 -> splashAdViewDidReachDuration
extension SplashViewController: NestAdsSplashAdViewDelegate {
  ...

  // 광고 로드에 성공한 경우 호출됩니다.
  func splashAdViewDidReceiveAd(_ splashAdView: NestAdsSDK.NestAdsSplashAdView) {

  }

  // 광고 로드에 실패한 경우 호출됩니다.
  func splashAdView(
    _ splashAdView: NestAdsSDK.NestAdsSplashAdView, didFailToReceiveAdWithError error: NestAdsAdError
  ) {

  }

  // 광고 로드에 성공한 후 광고 노출이 완료되면 호출됩니다.
  func splashAdViewDidRecordImpression(_ splashAdView: NestAdsSDK.NestAdsSplashAdView) {

  }

  // 설정한 duration 시간이 지나면 호출됩니다.
  // 이 곳에서 메인 화면으로 이동 구현을 권장합니다.
  func splashAdViewDidReachDuration(_ splashAdView: NestAdsSDK.NestAdsSplashAdView) {

  }

}

Last updated