> For the complete documentation index, see [llms.txt](https://adpopcornssp.gitbook.io/ssp-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adpopcornssp.gitbook.io/ssp-sdk/sdk/ios/ios-3.1.0+/undefined-9.md).

# 모달광고

모달 광고는 화면 하단 또는 중앙에 팝업 형태로 노출되는 광고입니다. "오늘 그만 보기" 기능을 지원합니다.

<figure><img src="https://50533756-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqmkw7pJLtjFGD5fwChbN%2Fuploads%2FCST5PzJJXnFfEuZ5V3h0%2F%E1%84%86%E1%85%A9%E1%84%83%E1%85%A1%E1%86%AF%E1%84%80%E1%85%AA%E1%86%BC%E1%84%80%E1%85%A9.png?alt=media&amp;token=e4222e0a-17c2-4a9f-856f-809b8ac8ab95" alt="" width="214"><figcaption></figcaption></figure>

## 인스턴스 생성

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

```swift
import APSSPSDK

var modalAd: APSSPModalAd!

modalAd = APSSPModalAd(
    appKey: "YOUR_APP_KEY",
    placementId: "YOUR_PLACEMENT_ID",
    viewController: self
)
modalAd.delegate = self
```

{% endtab %}

{% tab title="Objective-C" %}

```objc
@import APSSPSDK;

APSSPModalAd *modalAd = [[APSSPModalAd alloc] initWithAppKey:@"YOUR_APP_KEY"
                                                 placementId:@"YOUR_PLACEMENT_ID"
                                              viewController:self];
modalAd.delegate = self;
```

{% endtab %}
{% endtabs %}

## 모달 광고 옵션 설정

### 닫기 버튼 타입

| 값   | 설명          |
| --- | ----------- |
| `0` | 광고 닫기 (기본값) |
| `1` | 오늘 그만 보기    |

### 광고 위치

| 값   | 설명       |
| --- | -------- |
| `0` | 하단 (기본값) |
| `1` | 중앙       |

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

```swift
modalAd.closeBtnType = 1
modalAd.adGravity = 1
modalAd.closeOnBackgroundTap = true        // background click시 close 처리
modalAd.closeBtnTextColor = .red
modalAd.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5)
```

{% endtab %}

{% tab title="Objective-C" %}

```objc
modalAd.closeBtnType = 1;
modalAd.adGravity = 1;
modalAd.closeOnBackgroundTap = YES;      // background click시 close 처리
modalAd.closeBtnTextColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1.0];
modalAd.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
```

{% endtab %}
{% endtabs %}

## 모달 광고 요청

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

```swift
modalAd.loadRequest()
```

{% endtab %}

{% tab title="Objective-C" %}

```objc
[modalAd loadRequest];
```

{% endtab %}
{% endtabs %}

## 모달 광고 노출

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

```swift
modalAd.present(from: self)
```

{% endtab %}

{% tab title="Objective-C" %}

```objc
[modalAd presentFrom:self];
```

{% endtab %}
{% endtabs %}

## 이벤트 리스너

| 이벤트 리스너                   | 설명          |
| ------------------------- | ----------- |
| `apsspModalAdLoadSuccess` | 모달 광고 로딩 성공 |
| `apsspModalAdLoadFail`    | 모달 광고 로딩 실패 |
| `apsspModalAdShowSuccess` | 모달 광고 노출 성공 |
| `apsspModalAdShowFail`    | 모달 광고 노출 실패 |
| `apsspModalAdClicked`     | 모달 광고 클릭    |
| `apsspModalAdClosed`      | 모달 광고 닫기    |

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

```swift
extension ViewController: APSSPModalAdDelegate {

    func apsspModalAdLoadSuccess(_ modalAd: APSSPModalAd) {
        modalAd.present(from: self)
    }

    func apsspModalAdLoadFail(_ modalAd: APSSPModalAd, error: APSSPNetworkError) {
    }

    func apsspModalAdShowSuccess(_ modalAd: APSSPModalAd) {
    }

    func apsspModalAdShowFail(_ modalAd: APSSPModalAd, error: APSSPNetworkError) {
    }

    func apsspModalAdClicked(_ modalAd: APSSPModalAd) {
    }

    func apsspModalAdClosed(_ modalAd: APSSPModalAd) {
    }
}
```

{% endtab %}

{% tab title="Objective-C" %}

```objc
- (void)apsspModalAdLoadSuccess:(APSSPModalAd *)modalAd {
    [modalAd presentFrom:self];
}

- (void)apsspModalAdLoadFail:(APSSPModalAd *)modalAd error:(enum APSSPNetworkError)error {
}

- (void)apsspModalAdShowSuccess:(APSSPModalAd *)modalAd {
}

- (void)apsspModalAdShowFail:(APSSPModalAd *)modalAd error:(enum APSSPNetworkError)error {
}

- (void)apsspModalAdClicked:(APSSPModalAd *)modalAd {
}

- (void)apsspModalAdClosed:(APSSPModalAd *)modalAd {
}
```

{% endtab %}
{% endtabs %}
