# 스플래시 뷰컨트롤러 연동

앱 기동 시 최초 실행되는 뷰컨트롤러를 에이드랍의 스플래시 뷰컨트롤러로 대체함으로써 간단하게 스플래시 광고를 연동할 수 있는 방법입니다.

## 0단계. 규격 확인하기 <a href="#size" id="size"></a>

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

* 로고 영역 : 로고 이미지가 들어가는 영역의 높이가 180px 입니다.
* 광고 영역 : 영역 자체 사이즈는 360dp X 270dp 입니다. 광고 소재 이미지 사이즈는 실제 노출 시 화질의 손상을 막기 위해 영역의 3배 사이즈인 1080dp x 810dp를 권장합니다.&#x20;

<figure><img src="https://114331753-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F80r9IosbRVD44m7nPdej%2Fuploads%2FBwDYpuEGXIzPS3gJjJJE%2F%E1%84%89%E1%85%B3%E1%84%91%E1%85%B3%E1%86%AF%E1%84%85%E1%85%A2%E1%84%89%E1%85%B5%20%E1%84%80%E1%85%AA%E1%86%BC%E1%84%80%E1%85%A9%20%E1%84%80%E1%85%B2%E1%84%80%E1%85%A7%E1%86%A8%20%E1%84%80%E1%85%A1%E1%84%8B%E1%85%B5%E1%84%83%E1%85%B3.png?alt=media&#x26;token=2c9e1e64-1817-4f5b-a8e4-2247ac330eff" alt=""><figcaption></figcaption></figure>

## 1단계. `LaunchScreen.storyboard` 를 다음 파일로 교체해주세요. <a href="#file-change" id="file-change"></a>

{% file src="<https://114331753-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F80r9IosbRVD44m7nPdej%2Fuploads%2FMspiJxQZSVCYno5SCumq%2FLaunchScreen.storyboard?alt=media&token=87e8251c-fad7-4f43-8664-5ce6006e4a13>" %}

{% hint style="info" %}
로고 이미지를 추가하고, 스플래시 배경색상을 변경해주세요.&#x20;

로고 이미지가 들어가는 영역의 높이 180px, 가운데 로고의 사이즈는 80px x 80px을 권장합니다.

단, 로고 이미지의 레이아웃(위치)은 수정하지 않아야 SDK에서 컨트롤하는 스플래시 광고 뷰에서 로고의 위치가 자연스럽게 노출됩니다.
{% endhint %}

## 2단계. 앱이 기동 할 때, `AdropSplashAdViewController` 를 보여주세요. <a href="#adropsplashadviewcontroller" id="adropsplashadviewcontroller"></a>

### 1. `UIWindowSceneDelegate` 를 사용하는 경우 <a href="#uiwindownscenedelegate" id="uiwindownscenedelegate"></a>

{% hint style="info" %}
로컬 환경에서 배너 노출을 확인하고 싶다면, 아래의 TEST\_UNIT\_ID를 사용해주세요.

자세한 예시는 [Github](https://github.com/OpenRhapsody/adrop_ads_flutter/blob/master/example/lib/views/rewarded_example.dart)에서 확인하실 수 있습니다.
{% endhint %}

개발용 광고 Unit Id 는 `PUBLIC_TEST_UNIT_ID_SPLASH` 입니다.

| Ad type | Ad unit ID                     |
| ------- | ------------------------------ |
| Splash  | PUBLIC\_TEST\_UNIT\_ID\_SPLASH |

{% tabs %}
{% tab title="Swift" %}

```swift
import UIKit
import AdropAds

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        
        // production 배포 시, 'true'를 사용하세요.
        // 특정 국가에서 이 SDK를 사용하고 있다면, 
        // ISO 3166 alpha-2 국가 코드 array를 전달하세요.
        // 타겟 링크가 열리는 브라우저 설정이 필요하다면, useInAppBrowser 값을 바꿔주세요.
        Adrop.initialize(production: false, targetCountries: [], useInAppBrowser: false);

        self.window = UIWindow(windowScene: windowScene)
        
        let splashViewController = AdropSplashAdViewController(unitId: "PUBLIC_TEST_UNIT_ID_SPLASH")
        splashViewController.backgroundColor = .systemBackground
        splashViewController.logoImage = UIImage(named: "your_logo_name")
        splashViewController.mainViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
        splashViewController.displayDuration = 1
        splashViewController.delegate = self
        
        self.window?.rootViewController = splashViewController
        self.window?.makeKeyAndVisible()
    }
}

extension SceneDelegate: AdropSplashAdDelegate {
    func onAdReceived(_ ad: AdropAds.AdropSplashAd) {
        print("onAdReceived \(ad.unitId) \(ad.creativeId)")
    }
    
    func onAdFailedToReceive(_ ad: AdropAds.AdropSplashAd, _ errorCode: AdropAds.AdropErrorCode) {
        print("onAdFailedToReceive: \(ad.unitId) error: \(AdropErrorCodeToString(code: errorCode))")
    }
    
    func onAdImpression(_ ad: AdropSplashAd) {
        print("onAdImpression: \(ad.unitId)")
    }
}
```

{% endtab %}
{% endtabs %}

### 2. `UIApplicationDelegate`를 사용하는 경우 <a href="#uiapplicationdelegate" id="uiapplicationdelegate"></a>

{% tabs %}
{% tab title="Swift" %}

```swift
import UIKit
import AdropAds

class AppDelegate: UIApplicationDelegate {
    var window: UIWindow?
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // ...    
        let splashViewController = AdropSplashAdViewController(unitId: "PUBLIC_TEST_UNIT_ID_SPLASH")
        splashViewController.backgroundColor = .systemBackground
        splashViewController.logoImage = UIImage(named: "img_logo_splash")
        splashViewController.mainViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController()
        splashViewController.displayDuration = 1
        splashViewController.delegate = self
            
        self.window?.rootViewController = splashViewController
        self.window?.makeKeyAndVisible()
        // ...
        
        return result
    }
    

extension AppDelegate: AdropSplashAdDelegate {
    func onAdReceived(_ ad: AdropAds.AdropSplashAd) {
        print("onAdReceived \(ad.unitId)")
    }
    
    func onAdFailedToReceive(_ ad: AdropAds.AdropSplashAd, _ errorCode: AdropAds.AdropErrorCode) {
        print("onAdFailedToReceive: \(ad.unitId) error: \(AdropErrorCodeToString(code: errorCode))")
    }
    
    func onAdImpression(_ ad: AdropSplashAd) {
        print("onAdImpression: \(ad.unitId)")
    }
}
```

{% endtab %}
{% endtabs %}

## 적용 확인하기 <a href="#check-splash-activity" id="check-splash-activity"></a>

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

{% hint style="info" %}
광고 유닛에 연결된 광고가 없다면, 스플래시 광고가 랜더링 되지 않습니다.\
따라서 스플래시 광고가 정상적으로 랜더링 되는지 확인하고 싶으면, TEST\_UNIT\_ID 를 사용해 주세요.

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

<figure><img src="https://114331753-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F80r9IosbRVD44m7nPdej%2Fuploads%2FsC5yCTttkmG4oj60sPXX%2Fimage%20(2).png?alt=media&#x26;token=b9ce7b40-1cdc-427f-9d2b-568aee287594" alt=""><figcaption></figcaption></figure>
