> 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 %}
