스플래시 뷰컨트롤러 연동 (SwiftUI)

0단계. 규격 확인하기

스플래시 광고가 게재되는 스플래시 화면은 로고와 광고 유닛으로 구성됩니다. 로고가 너무 클 경우, 광고에 로고가 가려지는 경우가 발생할 수 있으니 아래의 가이드를 꼭 확인해 주세요.

  • 로고 영역 : 로고 이미지가 들어가는 영역의 높이가 180px 입니다.

  • 광고 영역 : 영역 자체 사이즈는 360dp X 270dp 입니다. 광고 소재 이미지 사이즈는 실제 노출 시 화질의 손상을 막기 위해 영역의 3배 사이즈인 1080dp x 810dp를 권장합니다.

1단계. AdropSplashAdViewController 를 SwiftUI에서 사용할 수 있도록 다음과 같이 SplashAdView를 만들어주세요.

import SwiftUI
import AdropAds

struct SplashAdView: UIViewRepresentable {
    static let unitId = "PUBLIC_TEST_UNIT_ID_SPLASH"
    fileprivate let completion: () -> Void
    fileprivate let splashVC: AdropSplashAdViewController
    
    init(completion: @escaping() -> Void) {
        self.completion = completion
        self.splashVC = AdropSplashAdViewController(unitId: Self.unitId);
        
    }
    
    func makeUIView(context: Context) -> UIView {
        splashVC.backgroundColor = .white
        splashVC.logoImage = UIImage(named: "splash_logo")

        splashVC.displayDuration = 1    // 스플래시 광고 노출시간 입니다. 0.5~3 사이의 값을 입력하실 수 있습니다.
        splashVC.delegate = context.coordinator
        
        return splashVC.view
    }
    
    func updateUIView(_ uiView: UIViewType, context: Context) {
    }
    
    func makeCoordinator() -> SplashAdCoordinator {
        SplashAdCoordinator(splashAdView: self)
    }
}

class SplashAdCoordinator: NSObject, AdropSplashAdDelegate {
    let splashAdView: SplashAdView
    
    init(splashAdView: SplashAdView) {
        self.splashAdView = splashAdView
    }
    
    // 스플래시 광고가 종료되었을 때, 호출되는 콜백함수 입니다.
    // impressed 가 true 일 경우, 스플래시 광고가 노출되었음을 의미합니다.
    func onAdClose(_ ad: AdropSplashAd, impressed: Bool) {
        UIView.animate(withDuration: impressed ? 0.3 : 0) {
            self.splashAdView.splashVC.view.alpha = 0
        } completion: { _ in
            self.splashAdView.completion()
        }
    }
}

위 샘플 코드에서 "splash_logo" 이미지(로고)의 사이즈는 80x80 을 권장합니다.

2단계. 앱이 기동 할 때, SplashAdView 를 보여주세요.

import SwiftUI

struct ContentView: View {
    @State private var showMainView = false
    
    var body: some View {
        if showMainView {
            VStack {
                Image("splash_logo")
                    .resizable()
                    .scaledToFit()
                    .frame(width: 100, height: 100)
                    .cornerRadius(20)
                    .zIndex(2)
                Text("Hello, Adrop! Yay")
            }
            .padding()
            
        } else {
            SplashAdView {
                showMainView = true
            }
            .edgesIgnoringSafeArea(.all)
            .zIndex(0)
        }
    }
}

스플래시 광고는 앱을 최초 설치하고, 첫번째 기동 시에는 노출되지 않습니다. 앱의 기동과 동시에 노출되어야 하는 스플래시 광고 특성상, 로컬 디바이스에 캐싱된 광고가 있을 경우에만 노출하고 있습니다.

적용 확인하기

console에서 발급받은 unitId가 한 번이라도 광고요청을 할 경우 성공적으로 연결됩니다.

광고 유닛에 연결된 광고가 없다면, 스플래시 광고가 랜더링 되지 않습니다. 따라서 스플래시 광고가 정상적으로 랜더링 되는지 확인하고 싶으면, TEST_UNIT_ID 를 사용해 주세요.

TEST_UNIT_ID 를 사용하면 스플래시 광고 랜더링 확인은 할 수 있지만, console과 연결되지는 않습니다. 따라서 성공적인 연결을 확인하려면 콘솔에 등록한 광고 유닛의 아이디를 적용해 주시고, 하단 이미지 처럼 콘솔을 확인해 주세요.

Last updated