# iOS에서 인터스티셜 광고 구현

> iOS 앱에서 인터스티셜 광고를 구현합니다. 광고 콘텐츠를 로드하고 Objective-C 또는 Swift 코드를 통해 표시하고 델리게이트를 사용하여 광고 이벤트를 처리합니다.

## 인터스티셜 광고 로드 예시##interstitial-ad-load-example

입찰에 대한 플레이스먼트 ID, Mediation 메타데이터 및 옵션 광고 마크업을 사용하여 `UADSLoadConfigurationBuilder`를 사용하여 로드 요청을 구성한 다음 `UADSInterstitialAd.load()`에 전달합니다. 완료 차단은 성공 시 로드된 `UADSInterstitialAd` 인스턴스를 수신합니다. 나중에 광고를 표시하거나 실패 시 오류 오브젝트 표시하는 데 필요하므로 유지합니다.

광고가 SDK에서 로드된 후 지정된 시간 내에 표시되지 않으면 만료됩니다. 로드된 광고 인스턴스에 `onAdExpired`를 할당하여 이를 감지합니다. 만료된 보상형 광고의 `show()` 시도는 실패합니다. 보상형 광고는 보상형 광고가 사용자가 보상을 요청할 때까지 미리 로드되고 보관되기 때문에 특히 중요합니다. 콜백을 사용하여 저장된 레퍼런스를 지우고 필요한 경우 새 광고가 준비되도록 새 `load()` 호출을 보냅니다.

1. **Objective-C**

   ```objective-c
   @proper티 (강력) UADSInterstitialAd *interstitialAd;

   UADSLoadConfigurationBuilder *builder =
       [[UADSLoadConfigurationBuilder alloc] initWithPlacementId:placementId];
   builder = [builder withMediationInfo:self.mediationInfo];
   builder = [builder withAdMarkup:bidResponse];

   [UADSInterstitialAd load:[빌더 빌드]
               완료:^(UADSInterstitialAd *ad, id<UnityAdsError> error) {
       if (error) {
           NSLog(@"Failed: %ld %@", (long)error.code, error.message);
       } else {
           __weak typeof(self) weakSelf = self;
           ad.onAdExpired = ^(UnityAd *expiredAd) {
               weakSelf.interstitialAd = nil;
               // reload here
           };
       }
   }];
   ```

2. **Swift**

   ```swift
   var interstitialAd: UADSInterstitialAd?

   let config = UADSLoadConfigurationBuilder(placementId: placementId)
     .with(mediationInfo: mediationInfo)
     .with(adMarkup: bidResponse)
     .build()

   UADSInterstitialAd.load(config) { ad, error in
     if let error = error {
         print("Failed: \(error.code) \(error.message)")
     } else {
         self.interstitialAd = ad
             ad?.onAdExpired = { [weak self] _ in
       self?.interstitialAd = nil
       // reload here
       }
     }
   }
   ```

## 인터스티셜 광고 표시 예시##interstitial-ad-show-example

보존된 `UADSInterstitialAd` 인스턴스에서 `show()`를 호출하여 표시 뷰 컨트롤러와 함께 빌드된 `UADSShowConfiguration` 및 `UADSInterstitialShowDelegate`를 전달합니다. 델리게이트는 광고 수명주기의 각 단계에 대해 콜백을 제공합니다. 광고가 표시되는 시점의 `showDidStart`, 사용자와 상호 작용하는 시점의 `showDidClick`, 광고가 닫히는 시점의 `showDidComplete`, 오류가 발생하는 경우의 `showDidFail`입니다.

1. **Objective-C**

   ```objective-c
   @interface MyDelegate : NSObject <UADSInterstitialShowDelegate>
   @end

   @implementation MyDelegate
   - (void)showDidStart:(UADSInterstitialAd *)unityAd {
   }
   - (void)showDidClick:(UADSInterstitialAd *)unityAd {
   }
   - (void)showDidComplete:(UADSInterstitialAd *)unityAd
                     와:(UADSShowFinishState)finishState {
   }
   - (void)showDidFail:(UADSInterstitialAd *)unityAd
               error:(id<UnityAdsError>) error {
   }
   @end

   UADSShowConfigurationBuilder *builder =
   [[UADSShowConfigurationBuilder alloc] init];
   builder = [builder withViewController:viewController];

   [self.interstitialAd show:[builder build] delegate:delegate];
   ```

2. **Swift**

   ```swift
   클래스 MyDelegate: NSObject, UADSInterstitialShowDelegate {
   func showDidStart(_ unityAd): UADSInterstitialAd) {
   }

   func showDidClick(_ unityAd: UADSInterstitialAd) {
   }

   func showDidComplete(
       _ unityAd: UADSInterstitialAd,
       with finishState: UADSShowFinishState
   ) {
   }

   func showDidFail(
       _ unityAd: UADSInterstitialAd,
       오류: UnityAdsError
   ) {
   }
   }

   let config = UADSShowConfigurationBuilder()
   .with(viewController: viewController)
   .build()

   interstitialAd?.show(config, delegate: delegate)
   ```

**다음 단계**: 구현 내용을 한 단계 더 발전시키려면 [iOS에서 보상형 광고 구현](/ads-ios/4.19.0/sdk-integration/rewarded-ads.md) 기술 자료를 참조하십시오.
