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

# 비디오믹스광고

### 인스턴스 생성

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

```swift
import APSSPSDK

var videoMixAd: APSSPVideoMixAd!

videoMixAd = APSSPVideoMixAd(
    appKey: "YOUR_APP_KEY",
    placementId: "YOUR_PLACEMENT_ID",
    rootViewController: self
)
videoMixAd.delegate = self
```

{% endtab %}

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

```objc
@import APSSPSDK;

APSSPVideoMixAd *videoMixAd = [[APSSPVideoMixAd alloc] initWithAppKey:@"YOUR_APP_KEY"
                                                           placementId:@"YOUR_PLACEMENT_ID"
                                                    rootViewController:self];
videoMixAd.delegate = self;
```

{% endtab %}
{% endtabs %}

### 유저 식별값 설정

비디오 믹스의 리워드 비디오 광고 타입 시청 완료 시 유저를 식별하기 위해 사용됩니다.\
&#x20;**광고 load 전에 설정해야 합니다.**

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

```swift
APSSPAds.setUSerID(usn: "TEST_USN")
```

{% endtab %}

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

```objc
[APSSPAds setUSerIDWithUsn:@"TEST_USN"];
```

{% endtab %}
{% endtabs %}

### 비디오 믹스 광고 요청

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

```swift
videoMixAd.load()
```

{% endtab %}

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

```objc
[videoMixAd load];
```

{% endtab %}
{% endtabs %}

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

### 비디오 믹스 광고 노출

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

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

{% endtab %}

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

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

{% endtab %}
{% endtabs %}

### 비디오 믹스 광고 중단

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

```swift
videoMixAd.stopAd()
```

{% endtab %}

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

```objc
[videoMixAd stopAd];
```

{% endtab %}
{% endtabs %}

## APSSPVideoMixAdType

<table><thead><tr><th width="193.78302001953125">Swift</th><th width="337.6251220703125">Objective-C</th><th width="112.6119384765625">rawValue</th><th>설명</th></tr></thead><tbody><tr><td><code>.Interstitial</code></td><td><code>APSSPVideoMixAdTypeInterstitial</code></td><td>2</td><td>전면 광고</td></tr><tr><td><code>.InterstitialVideo</code></td><td><code>APSSPVideoMixAdTypeInterstitialVideo</code></td><td>4</td><td>전면 비디오</td></tr><tr><td><code>.RewardVideo</code></td><td><code>APSSPVideoMixAdTypeRewardVideo</code></td><td>6</td><td>리워드 비디오</td></tr></tbody></table>

## 이벤트 리스너

| 이벤트 리스너                        | 설명                           |
| ------------------------------ | ---------------------------- |
| `apsspVideoMixAdLoadSuccess`   | 광고 로딩 성공 (videoMixAdType 포함) |
| `apsspVideoMixAdLoadFail`      | 광고 로딩 실패                     |
| `apsspVideoMixAdShowSuccess`   | 광고 노출 성공                     |
| `apsspVideoMixAdShowFail`      | 광고 노출 실패                     |
| `apsspVideoMixAdClosed`        | 광고 닫기 (videoMixAdType 포함)    |
| `apsspVideoMixAdPlayCompleted` | 비디오 재생 완료                    |

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

```swift
extension ViewController: APSSPVideoMixAdDelegate {

    func apsspVideoMixAdLoadSuccess(videoMixAd: APSSPVideoMixAd, videoMixAdType: APSSPVideoMixAdType) {
        videoMixAd.present(from: self)
    }

    func apsspVideoMixAdLoadFail(videoMixAd: APSSPVideoMixAd, error: APSSPNetworkError) {
    }

    func apsspVideoMixAdShowSuccess(videoMixAd: APSSPVideoMixAd) {
    }

    func apsspVideoMixAdShowFail(videoMixAd: APSSPVideoMixAd) {
    }

    func apsspVideoMixAdClosed(videoMixAd: APSSPVideoMixAd, videoMixAdType: APSSPVideoMixAdType) {
    }

    func apsspVideoMixAdPlayCompleted(videoMixAd: APSSPVideoMixAd, adNetworkNo: Int, completed: Bool) {
    }
}
```

{% endtab %}

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

```objc
- (void)apsspVideoMixAdLoadSuccessWithVideoMixAd:(APSSPVideoMixAd *)videoMixAd videoMixAdType:(enum APSSPVideoMixAdType)videoMixAdType {
    [videoMixAd presentFrom:self];
}

- (void)apsspVideoMixAdLoadFailWithVideoMixAd:(APSSPVideoMixAd *)videoMixAd error:(enum APSSPNetworkError)error {
}

- (void)apsspVideoMixAdShowSuccessWithVideoMixAd:(APSSPVideoMixAd *)videoMixAd {
}

- (void)apsspVideoMixAdShowFailWithVideoMixAd:(APSSPVideoMixAd *)videoMixAd {
}

- (void)apsspVideoMixAdClosedWithVideoMixAd:(APSSPVideoMixAd *)videoMixAd videoMixAdType:(enum APSSPVideoMixAdType)videoMixAdType {
}

- (void)apsspVideoMixAdPlayCompletedWithVideoMixAd:(APSSPVideoMixAd *)videoMixAd adNetworkNo:(NSInteger)adNetworkNo completed:(BOOL)completed {
}
```

{% endtab %}
{% endtabs %}
