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

# 네이티브광고

<figure><img src="/files/7vvpLunpsgYi74VTMFe6" alt="" width="214"><figcaption></figcaption></figure>

## 네이티브 레이아웃 구성 + Renderer 설정

애드팝콘에서는 일반 네이티브와 네이티브 동영상을 지원합니다. 원하는 타입에 맞추어 레이아웃을 구성해 주세요.

* 일반 네이티브

{% content-ref url="/pages/prclGGoBmor8cTj6noRG" %}
[네이티브 레이아웃 가이드](/ssp-sdk/sdk/ios/ios-3.1.0+/undefined-2/undefined.md)
{% endcontent-ref %}

* 네이티브 동영상

{% content-ref url="/pages/gUBsCg3FpUuHxP5w0Din" %}
[네이티브 동영상 레이아웃 가이드](/ssp-sdk/sdk/ios/ios-3.1.0+/undefined-2/undefined-1.md)
{% endcontent-ref %}

## 인스턴스 생성

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

```swift
import APSSPSDK

var nativeAd: APSSPNativeAd!

nativeAd = APSSPNativeAd(
    appKey: "YOUR_APP_KEY",
    placementId: "YOUR_PLACEMENT_ID"
)
nativeAd.delegate = self
view.addSubview(nativeAd)
```

{% endtab %}

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

```objc
@import APSSPSDK;

APSSPNativeAd *nativeAd = [[APSSPNativeAd alloc] initWithAppKey:@"YOUR_APP_KEY"
                                                     placementId:@"YOUR_PLACEMENT_ID"
                                              rootViewController:nil];
nativeAd.delegate = self;
[self.view addSubview:nativeAd];
```

{% endtab %}
{% endtabs %}

## 네이티브 광고 요청

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

```swift
nativeAd.load()
```

{% endtab %}

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

```objc
[nativeAd load];
```

{% endtab %}
{% endtabs %}

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

## 네이티브 광고 중단

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

```swift
nativeAd.stop()
```

{% endtab %}

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

```objc
[nativeAd stop];
```

{% endtab %}
{% endtabs %}

## No Ad 시 광고 영역 처리

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

```swift
nativeAd.noAdViewHidden(false)        // true (Default)
```

{% endtab %}

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

```objc
[nativeAd noAdViewHidden:NO];        // YES (Default)
```

{% endtab %}
{% endtabs %}

## 수동 클릭 이벤트

기본 네이티브 UI 이외의 버튼에서 클릭 이벤트를 발생시키려면:

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

```swift
nativeAd.manualClickEvent()
```

{% endtab %}

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

```objc
[nativeAd manualClickEvent];
```

{% endtab %}
{% endtabs %}

## 이벤트 리스너

<table><thead><tr><th width="321.7647705078125">이벤트 리스너</th><th>설명</th></tr></thead><tbody><tr><td><code>apsspNativeAdLoadSuccess</code></td><td>네이티브 광고 로딩 성공</td></tr><tr><td><code>apsspNativeAdLoadFail</code></td><td>네이티브 광고 로딩 실패</td></tr><tr><td><code>apsspNativeAdImpression</code></td><td>네이티브 광고 노출</td></tr><tr><td><code>apsspNativeAdClicked</code></td><td>네이티브 광고 클릭</td></tr><tr><td><code>apsspNativeAdHidden</code></td><td>네이티브 광고 닫기 (NAM 전용)</td></tr></tbody></table>

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

```swift
extension ViewController: APSSPNativeAdDelegate {

    func apsspNativeAdLoadSuccess(nativeAdView: APSSPNativeAd) {
    }

    func apsspNativeAdLoadFail(nativeAdView: APSSPNativeAd, error: APSSPNetworkError) {
    }

    func apsspNativeAdImpression(nativeAd: APSSPNativeAd) {
    }

    func apsspNativeAdClicked(nativeAd: APSSPNativeAd) {
    }

    func apsspNativeAdHidden(nativeAd: APSSPNativeAd) {
    }
}
```

{% endtab %}

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

```objc
- (void)apsspNativeAdLoadSuccessWithNativeAdView:(APSSPNativeAd *)nativeAdView {
}

- (void)apsspNativeAdLoadFailWithNativeAdView:(APSSPNativeAd *)nativeAdView error:(enum APSSPNetworkError)error {
}

- (void)apsspNativeAdImpressionWithNativeAd:(APSSPNativeAd *)nativeAd {
}

- (void)apsspNativeAdClickedWithNativeAd:(APSSPNativeAd *)nativeAd {
}

- (void)apsspNativeAdHiddenWithNativeAd:(APSSPNativeAd *)nativeAd {
}
```

{% endtab %}
{% endtabs %}
