# iOS でのインタースティシャル広告の実装

> iOS アプリケーションにインタースティシャル広告を実装します。広告コンテンツをロードし、Objective-C または Swift コードを使用して表示し、デリゲートを使用して広告イベントを処理します。

## インタースティシャル広告ロード例##interstitial-ad-load-example

`UADSLoadConfigurationBuilder`を使用して、配置 ID、メディエーションメタデータ、入札用の任意の広告マークアップを含むロードリクエストを作成し、それを`UADSInterstitialAd.load()`に渡します。completion ブロックは、成功したときにロードされた`UADSInterstitialAd`インスタンスを受け取ります。後で広告を表示する必要があるため保持します。失敗した場合はエラー オブジェクトを表示します。

SDK が広告をロードした後、設定された時間内に広告が表示されない場合は、広告は期限切れになります。ロードされた広告インスタンスに`onAdExpired`を割り当ててこれを検出します。期限切れのリワード広告を`show()`しようとすると失敗します。リワード広告は多くの場合、プリロードされ、ユーザーがリワードをリクエストするまで保持されるため、これは特に重要です。コールバックを使用して、保存されたリファレンスを消去し、新しい`load()`呼び出しを発行します。これにより、必要なときに新しい広告が準備できます。

1. **Objective-C**

   ```objective-c
   @プロパティ（強）UADSInterstitialAd *interstitialAd;

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

   [UADSInterstitialAd load:[builder build]
               completion:^(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
   @インターフェース MyDelegate ：NSObject <UADSInterstitialShowDelegate>
   @end

   @implementation MyDelegate
   - (void)showDidStart:(UADSInterstitialAd *)unityAd {
   }
   - (void)showDidClick:(UADSInterstitialAd *)unityAd {
   }
   - (void)showDidComplete:(UADSInterstitialAd *)unityAd
                     with:(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,
       finishState でUADSShowFinishState
   ) {
   }

   func showDidFail(
       _ unityAd:UADSInterstitialAd,
       error：UnityAdsError
   ) {
   }
   }

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

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

**次のステップ**: 実装を改善するには、[iOS でのリワード広告の実装](/ads-ios/4.19.0/sdk-integration/rewarded-ads.md) に関するドキュメントを参照してください。
