스플래시 광고
최초 실행되는 ViewController에 NestAds의 NestAdsSplashAdView 를 세팅하여 스플래시 광고를 표시하는 가이드입니다.
기본 요건
시작 가이드에 따라 필요한 과정을 완료합니다.
테스트 광고 게재위치
Placement Code(게재위치 코드)는 어드민의 인벤토리 > 게재위치 메뉴에서 게재위치를 등록 시 시스템을 통해 자동으로 생성됩니다.
테스트 게재위치 목록
placementCode
설명
SAMPLE_SPLASH
360x256 이미지 + 애드뱃지
광고 표시하기
스플래시 화면으로 사용할 뷰컨트롤러를 생성합니다. (ex. SplashViewController)
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
}
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() {
//로고 이미지, 스플래시뷰 를 배치합니다.
}
}
NestAdsSplashAdViewDelegate
의splashAdViewDidReachDuration
메서드에서 화면 전환을 합니다.
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