스플래시 뷰컨트롤러 연동 (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)
        }
    }
}

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

콘솔에서 발급받은 unitId 로 1회 이상 광고 요청을 하면 성공적으로 연결됩니다.

연결이 성공적으로 되면, 콘솔에서 광고유닛의 상태 항목에 "SDK 연결이 필요해요" 라는 경고 문구가 사라집니다. 하단 이미지를 참고해주세요.

Last updated