> 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-1.md).

# 배너 광고

## 1. 배너 뷰 인스턴스 생성

배너 광고를 노출하기 위해 뷰를 생성 및 추가합니다. 광고를 노출하고자 하는 ViewController.m 을 수정하여 <mark style="color:red;">`AdPopcornSSPBannerView.h, AdPopcornSSPAdSize.h`</mark> 를 import 하여 AdPopcornSSPBannerView 인스턴스 변수를 생성해주세요.

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

```objectivec
#import <AdPopcornSSP/AdPopcornSSPBannerView.h>
#import <AdPopcornSSP/AdPopcornSSPAdSize.h>

@interface AdPopcornSSPBannerViewController () <AdPopcornSSPBannerViewDelegate> 
{	
    AdPopcornSSPBannerView *_bannerView;
}

@end
```

{% endtab %}

{% tab title="Swift" %}

```swift
class ViewController: UIViewController, APSSPBannerViewDelegate
{	
    // Banner
    var bannerView: AdPopcornSSPBannerView!
}
```

{% endtab %}
{% endtabs %}

배너 인스턴스를 구현합니다.

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

```objectivec
//ViewController.m을 수정하여 생성한 인스턴스를 구현합니다.
@implementation AdPopcornSSPBannerViewController 

- (void)viewDidLoad { 
	[super viewDidLoad]; 		
	// case1. viewController에 bannerView를 add 할 경우.
	_bannerView = [[AdPopcornSSPBannerView alloc] initWithBannerViewSize:SSPBannerViewSize320x50 origin:CGPointMake
	(X 좌표, Y 좌표) appKey:@"YOUR_APP_KEY" placementId:@"YOUR_PLACEMENT_Id" viewController:self];

	// case2. viewController 내 특정 view(bannerParentView) 영역에 bannerView를 add 할 경우
	_bannerView = [[AdPopcornSSPBannerView alloc] initWithBannerViewSize:SSPBannerViewSize320x50 origin:CGPointMake
	(X 좌표, Y 좌표) appKey:@"YOUR_APP_KEY" placementId:@"YOUR_PLACEMENT_Id" view:bannerParentView rootViewController:self];
}
@end
```

{% endtab %}

{% tab title="Swift" %}

```swift
class ViewController: UIViewController, APSSPBannerViewDelegate
{	
    // Banner
    var bannerView: AdPopcornSSPBannerView!
    override func viewDidLoad() {
        super.viewDidLoad()
	bannerView = AdPopcornSSPBannerView.init(bannerViewSize: SSPBannerViewSize320x50,
        origin:CGPoint(x:0.0, y:self.view.frame.size.height - 50.0 - AdPopcornSSPAdSize.adSize(SSPBannerViewSize320x50).height),
        appKey: "YOUR_APP_KEY", placementId: "YOUR_PLACEMENT_ID", viewController: self)
    }
}
```

{% endtab %}
{% endtabs %}

### 1) Placement ID 변경

배너 광고인스턴스 생성 시 사용한 placementID를 변경하고자 할 경우, 아래와 같은 방식으로 변경합니다.

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

```objectivec
_bannerView.placementId = @"변경하고자 할 ID";
```

{% endtab %}

{% tab title="Swift" %}

```swift
bannerView.placementId = "변경하고자 할 ID"
```

{% endtab %}
{% endtabs %}

## 2. 배너 광고 요청

배너 인스턴스 구현 후 loadRequest API 를 호출하여 배너 광고를 요청합니다.

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

```objectivec
[_bannerView loadRequest];
```

{% endtab %}

{% tab title="Swift" %}

```swift
bannerView.loadRequest()
```

{% endtab %}
{% endtabs %}

{% hint style="danger" %}
loadRequst 호출에 대한 결과로 광고 수신에 실패한 경우에는 loadAd 재호출을 하시면 안됩니다. 과도한 광고 요청 api 호출은 block 사유가 됩니다.
{% endhint %}

## 3. 배너 크기

애드팝콘 SSP 배너는 현재 아래의 사이즈를 AdPopcornSSPAdSize.h 에 선언하여 지원하고 있습니다.

* SSPBannerViewSize320x50
* SSPBannerViewSize300x250
* SSPBannerViewSize320x100
* SSPBannerViewSizeAdaptive(NAM 전용)

## 4. 광고 전환 주기

adRefreshRate API를 이용하여 수신한 광고의 전환 주기를 설정합니다. 최소 30초에서 최대 300초로 설정할 수 있습니다. adRefreshRate 를 -1로 설정 시 애드팝콘 광고가 로드 된 후, 자동 refresh 가 되지 않습니다.

단, 미디에이션 네트워크 광고는 해당 기능을 제공하는 업체에 대해서만 설정이 적용됩니다.

{% hint style="info" %}
Default 값은 60초 입니다.
{% endhint %}

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

```objectivec
//adRefreshRate = (NSInteger)seconds
_bannerView.adRefreshRate = 35;
```

{% endtab %}

{% tab title="Swift" %}

```swift
bannerView.adRefreshRate = 35;
```

{% endtab %}
{% endtabs %}

## 5. 배너 광고 애니메이션

애드팝콘 에서 제공하는 배너 광고는 총 6가지의 애니메이션을 추가할 수 있습니다.

{% hint style="info" %}
Default 값은 SSPBannerViewAnimNONE 입니다.
{% endhint %}

<table><thead><tr><th width="388">parameter</th><th>설명</th></tr></thead><tbody><tr><td>SSPBannerViewAnimNONE</td><td>배너 애니메이션 없음</td></tr><tr><td>SSPBannerViewAnimFadeIn</td><td>페이드 인 애니메이션</td></tr><tr><td>SSPBannerViewAnimFlipFromLeft </td><td>왼쪽으로 플립애니메이션</td></tr><tr><td>SSPBannerViewAnimFlipFromRight</td><td>오른쪽으로 플립 애니메이션</td></tr><tr><td>SSPBannerViewAnimCurlUp </td><td>윗쪽으로 회전 애니메이션</td></tr><tr><td>SSPBannerViewAnimCurlDown </td><td>아래쪽으로 회전 애니메이션</td></tr></tbody></table>

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

```objectivec
[_bannerView setAnimType:SSPBannerViewAnimFlipFromLeft];
```

{% endtab %}

{% tab title="Swift" %}

```swift
bannerView.setAnimType(SSPBannerViewAnimFlipFromIn)
```

{% endtab %}
{% endtabs %}

## 6. 배너 배경색 채우기

애드팝콘 에서 제공하는 배너 광고는 배너 광고가 나오는 뷰의 빈 공간에 배경색을 채울 수 있습니다.&#x20;

{% hint style="info" %}
Default 값은 true (=배경 채우기) 입니다.
{% endhint %}

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

```objectivec
[_bannerView setAutoBgColor:false];     // Defaults 'true'
```

{% endtab %}

{% tab title="Swift" %}

```swift
bannerView.setAutoBgColor(false)   // Defaults 'true'
```

{% endtab %}
{% endtabs %}

## 7. 광고 중단

<mark style="color:red;">`stopAd`</mark> API를 호출하여 해당 배너 뷰의 사용하지 않도록 설정 합니다.

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

```objectivec
[_bannerView stopAd];
```

{% endtab %}

{% tab title="Swift" %}

```swift
bannerView.stopAd()
```

{% endtab %}
{% endtabs %}

## 8. 델리게이트

배너광고에서 발생하는 이벤트에 대한 델리게이트를 제공합니다. 델리게이트를 사용하기 위해서는 <mark style="color:red;">`APSSPBannerViewDelegate`</mark>를 추가하여야 합니다.

bannerView 인스턴스에 delegate를 설정하고 구현하여야 합니다.

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

<table><thead><tr><th width="322">delegate</th><th>설명</th></tr></thead><tbody><tr><td>APSSPBannerViewLoadSuccess</td><td>배너광고 로드 성공</td></tr><tr><td>APSSPBannerViewLoadFail, error</td><td>배너광고 로드 실패. <a href="/pages/qEliH2tRuJF6CW2rnJU1">에러코드 값</a></td></tr><tr><td>APSSPBannerViewClicked</td><td>배너광고 클릭</td></tr></tbody></table>
{% endtab %}

{% tab title="Swift" %}

<table><thead><tr><th width="325">delegate</th><th>설명</th></tr></thead><tbody><tr><td>apsspBannerViewLoadSuccess</td><td>배너광고 로드 성공</td></tr><tr><td>apsspBannerViewLoadFail(error)</td><td>배너광고 로드 실패. <a href="/pages/qEliH2tRuJF6CW2rnJU1">에러코드 값</a></td></tr><tr><td>apsspBannerViewClicked</td><td>배너광고 클릭</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

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

```objectivec
#import "AdPopcornSSPBannerViewController.h"

@interface AdPopcornSSPBannerViewController () <APSSPBannerViewDelegate>

@end

@implementation AdPopcornSSPBannerViewController

	- (void)viewDidLoad
	{	
		[super viewDidLoad];	
		
		// 배너 델리게이트 설정	
		_bannerView.delegate = self;
	}
	
	// 배너 델리게이트 구현
	- (void)APSSPBannerViewLoadSuccess:(AdPopcornSSPBannerView *)bannerView
	{ 
		NSLog(@"BannerAd Loading Success");
	}
	
	- (void)APSSPBannerViewLoadFail:(AdPopcornSSPBannerView *)bannerView error:(AdPopcornSSPError *)error
	{ 
		NSLog(@"BannerAd Laoding Failed, ErrorCode : %@", error);
	}
	
	- (void)APSSPBannerViewClicked:(AdPopcornSSPBannerView *)bannerView
	{ 
		NSLog(@"BannerAd Clicked");
	}

@end
```

{% endtab %}

{% tab title="Swift" %}

<pre class="language-swift"><code class="lang-swift">class ViewController: UIViewController, APSSPBannerViewDelegate
{	
    // Banner
    var bannerView: AdPopcornSSPBannerView!
    override func viewDidLoad() {
        super.viewDidLoad()
        bannerView = AdPopcornSSPBannerView.init(bannerViewSize: SSPBannerViewSize320x50,
    origin:CGPoint(x:0.0, y:self.view.frame.size.height - 50.0 - AdPopcornSSPAdSize.adSize(SSPBannerViewSize320x50).height),
<strong>    appKey: "YOUR_APP_KEY", placementId: "YOUR_PLACEMENT_Id", viewController: self)
</strong>        bannerView.delegate = self
    }

    // Banner Delegate
    func apsspBannerViewLoadSuccess(_ bannerView: AdPopcornSSPBannerView!) {
    }
    func apsspBannerViewLoadFail(_ bannerView: AdPopcornSSPBannerView!, error: AdPopcornSSPError!) {
    }
    func apsspBannerViewClicked(_ bannerView: AdPopcornSSPBannerView!) {
    }
}
</code></pre>

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://adpopcornssp.gitbook.io/ssp-sdk/sdk/ios/ios-2.x.x/undefined-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
