> 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-2.x.x/undefined-7.md).

# 모달 광고

## 1. 인스턴스 생성

아래 코드를 추가하여 모달광고 인스턴스를 생성 합니다.

{% tabs %}
{% tab title="Objective-C" %}
MainViewController.m에 AdPopcornSSPModalAd.h 를 import 하고 인스턴스 변수를 선언합니다.

```objectivec
#import <AdPopcornSSP/AdPopcornSSPModalAd.h>					
@interface AdPopcornSSPModalAd() <APSSPModalAdDelegate>	
{										
    AdPopcornSSPModalAd *_sspModalAd;					
} 										
@end	

```

{% endtab %}

{% tab title="Swift" %}
MainViewController.swift 에 AdPopcornSSPModalAd 인스턴스 변수를 선언합니다.

```swift
class MainViewController: UIViewController, APSSPModalAdDelegate
{	
    // AdPopcornSSPModalAd
    var sspModalAd: AdPopcornSSPModalAd!
}

```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="Objective-C" %}
MainViewController.m 을 수정하여 생성한 인스턴스를 구현합니다.

```objectivec
@implementation MainViewController 

- (void)viewDidLoad { 
   [super viewDidLoad]; 
    
   _sspModalAd = [[AdPopcornSSPModalAd alloc] initWithKey:@"YOUR_APP_KEY" placementId:@"YOUR_PLACEMENT_ID" viewController:self];
   _sspModalAd.delegate = self;
   _sspModalAd.closeBtnType = 0;
   [_sspModalAd loadRequest];
}
@end
```

{% endtab %}

{% tab title="Swift" %}
MainViewController.swift 을 수정하여 생성한 인스턴스를 구현합니다.

```swift
class MainViewController: UIViewController, APSSPModalAdDelegate
{	
    // AdPopcornSSPModalAd
    var sspModalAd: AdPopcornSSPModalAd!
    override func viewDidLoad() {
        super.viewDidLoad()
	sspModalAd = AdPopcornSSPModalAd(key: "YOUR_APP_KEY", placementId: "YOUR_PLACEMENT_ID", viewController: self)
	sspModalAd.delegate = self
    }
}

```

{% endtab %}
{% endtabs %}

{% hint style="info" %}

* YOUR\_APP\_KEY : [애드팝콘 SSP 콘솔 페이지](https://www.console.adpopcorn.com/)에서 앱을 등록하고 발급 받은 앱 키
* YOUR\_PLACEMENT\_ID : [애드팝콘 SSP 콘솔 페이지](https://www.console.adpopcorn.com/)에서 생성한 배너 광고 PlacementId
  {% endhint %}

## 2. 모달 광고 닫기 버튼 타입 설정

모달 광고 닫기 버튼의 타입을 설정할 수 있습니다.

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

```objectivec
_sspModalAd.closeBtnType = 0 // 기본값 : 0
```

{% endtab %}

{% tab title="Swift" %}

```swift
sspModalAd.setCloseBtnType(0) // 기본값 : 0
```

{% endtab %}
{% endtabs %}

Default 값은 0 이며, 지원하는 닫기 버튼의 형태는 총 2가지입니다.

<table><thead><tr><th width="136" align="center">value</th><th>설명</th></tr></thead><tbody><tr><td align="center">0</td><td>광고 닫기 (기본 값)</td></tr><tr><td align="center">1</td><td>오늘 하루 안보기 (00시 기준으로 리셋)</td></tr></tbody></table>

## 3. 모달 광고 요청

<mark style="color:red;">`loadRequest`</mark> API를 호출하여모달 광고를 요청합니다.

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

```objectivec
[_sspModalAd loadRequest];
```

{% endtab %}

{% tab title="Swift" %}

```swift
sspModalAd.loadRequest()
```

{% endtab %}
{% endtabs %}

## 4. 모달 광고 노출

모달 광고를 성공적으로 로드 한 뒤, 아래 API를 호출하여 모달 광고를 노출하여 줍니다.

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

```objectivec
[_sspModalAd presentFromViewController:viewController];
```

{% endtab %}

{% tab title="Swift" %}

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

{% endtab %}
{% endtabs %}

## 5. 델리게이트 설정

모달 광고에서 발생하는 이벤트에 대한 델리게이트를 제공 합니다.

델리게이트를 사용하기 위해서는 APSSPModalAdDelegate를 추가 하여야 합니다.

{% tabs %}
{% tab title="Objective-C" %}
\_sspModalAd 인스턴스에 delegate를 설정하고 구현하여야 합니다.

| delegate                    | 설명                                                                 |
| --------------------------- | ------------------------------------------------------------------ |
| APSSPModalAdLoadSuccess     | 모달 광고 로드 성공                                                        |
| APSSPModalAdLoadFail, error | 모달 광고 로드 실패. [에러코드 값](/ssp-sdk/sdk/ios/ios-3.1.0+/undefined-13.md) |
| APSSPModalAdShowSuccess     | 모달 광고 화면 노출 성공                                                     |
| APSSPModalAdShowFail        | 모달 광고 노출 실패                                                        |
| APSSPModalAdClicked         | 모달 광고 클릭                                                           |
| APSSPModalAdClosed          | 모달 광고 닫기                                                           |
| {% endtab %}                |                                                                    |

{% tab title="Swift" %}
sspModalAd 인스턴스에 delegate를 설정하고 구현하여야 합니다.

| delegate                    | 설명                                                                 |
| --------------------------- | ------------------------------------------------------------------ |
| apsspModalAdLoadSuccess     | 모달 광고 로드 성공                                                        |
| apsspModalAdLoadFail(error) | 모달 광고 로드 실패. [에러코드 값](/ssp-sdk/sdk/ios/ios-3.1.0+/undefined-13.md) |
| apsspModalAdShowSuccess     | 모달 광고 화면 노출 성공                                                     |
| apsspModalAdShowFail        | 모달 광고 노출 실패                                                        |
| apsspModalAdClicked         | 모달 광고 클릭                                                           |
| apsspModalAdClosed          | 모달 광고 닫기                                                           |
| {% endtab %}                |                                                                    |
| {% endtabs %}               |                                                                    |

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

```objectivec
#import <AdPopcornSSP/AdPopcornSSPModalAd.h>

@interface MainViewController() <APSSPModalAdDelegate>
{ 
    AdPopcornSSPModalAd *_sspModalAd;
}
@end

@implementation MainViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    
    _sspModalAd = [[AdPopcornSSPModalAd alloc] initWithKey:@"YOUR_APP_KEY" placementId:@"YOUR_PLACEMENT_ID" viewController:self];
    _sspModalAd.delegate = self;
    _sspModalAd.closeBtnType = 0;
    [_sspModalAd loadRequest];
}
@end

#pragma APSSPModalAdDelegate 
	/*!
 @abstract
 modal 광고 load 완료시(성공시), 호출된다.
 */
- (void)APSSPModalAdLoadSuccess:(AdPopcornSSPModalAd *)modalAd
{
    NSLog(@"APSSPModalAdLoadSuccess : %@", modalAd);
    [modalAd presentFromViewController:self];
}

/*!
 @abstract
 modal 광고 load 실패시, 호출된다.
 */
- (void)APSSPModalAdLoadFail:(AdPopcornSSPModalAd *)modalAd error:(AdPopcornSSPError *)error
{
    NSLog(@"APSSPModalAdLoadFail : %@, error : %@", modalAd, error);
}
/*!
 @abstract
 modal 광고 close시, 호출된다.
 */
- (void)APSSPModalAdClosed:(AdPopcornSSPModalAd *)modalAd
{
    NSLog(@"APSSPModalAdClosed : %@", modalAd);
}

/*!
 @abstract
 modal 광고 클릭시, 호출된다.
 */
- (void)APSSPModalAdClicked:(AdPopcornSSPModalAd *)modalAd
{
    NSLog(@"APSSPModalAdClicked : %@", modalAd);
}

/*!
 @abstract
 modal 광고 show 완료시(성공시), 호출된다.
 */
- (void)APSSPModalAdShowSuccess:(AdPopcornSSPModalAd *)modalAd
{
    NSLog(@"APSSPModalAdShowSuccess : %@", modalAd);
}

/*!
 @abstract
 modal 광고 show 실패시, 호출된다.
 */
- (void)APSSPModalAdShowFail:(AdPopcornSSPModalAd *)modalAd error:(AdPopcornSSPError *)error
{
    NSLog(@"APSSPModalAdShowFail : %@, error : %@", modalAd, error);
}
@end
```

{% endtab %}

{% tab title="Swift" %}

```swift
class MainViewController: UIViewController, APSSPModalAdDelegate
{	
    // AdPopcornSSPModalAd
    var sspModalAd: AdPopcornSSPModalAd!
    override func viewDidLoad() {
        super.viewDidLoad()
	sspModalAd = AdPopcornSSPModalAd(key: "YOUR_APP_KEY", placementId: "YOUR_PLACEMENT_ID", viewController: self)
	sspModalAd.delegate = self
        sspModalAd.loadRequest()
    }
}

// ModalAd Delegate
func apsspModalAdLoadSuccess(_ modalAd: AdPopcornSSPModalAd!) {
    sspModalAd.present(from:self)
}
func apsspModalAdLoadFail(_ modalAd: AdPopcornSSPModalAd!, error: AdPopcornSSPError!) {
}
func apsspModalAdShowSuccess(_ modalAd: AdPopcornSSPModalAd!) {
}
func apsspModalAdShowFail(_ modalAd: AdPopcornSSPModalAd!) {
}
func apsspModalAdClicked(_ modalAd: AdPopcornSSPModalAd!) {
}
func apsspModalAdClosed(_ modalAd: AdPopcornSSPModalAd!) {
}
```

{% endtab %}
{% endtabs %}
