# iOS 用バナーインテグレーション

> iOS アプリケーションにバナー広告を実装するには、バナー広告オブジェクトを作成し、そのサイズを設定し、アプリケーションのビュー階層内に表示します。

バナーはシステムによって開始される長方形の広告で、静的またはアニメーションにすることができ、ライブアコンテンツ定されたエリアで配信されます。

> **Note:**
>
> このドキュメントは SDK 8.4.0 以降に関連するものです。

## 前提条件##prerequisites

* LevelPlay SDK がアプリケーションに正しく統合されていることを確認します。インテグレーションの概要は[こちら](/grow/levelplay/sdk/ios/sdk-integration.md)です。
* LevelPlay 初期化 API を使用して SDK を初期化してください。
* LevelPlay ダッシュボードで AdUnitID を見つけます。

## バナー広告オブジェクトの作成とサイズの設定##create-banner-ad-object-and-set-size

バナー広告オブジェクトの作成は、**onInitSuccess** コールバックの受信後に行う必要があります。

1. **Objective-C**

   ```objective-c
   // 広告設定の作成 - 任意
   LPMBannerAdViewConfigBuilder *adConfigBuilder = [LPMBannerAdViewConfigBuilder new];
   [adConfigBuilder setWithAdSize:bannerSize];
   [adConfigBuilder setWithPlacementName:@"placementName"];
   LPMBannerAdViewConfig *adConfig = [adConfigBuilder build];
   // バナービューの作成と広告単位 ID の設定
   self.bannerAd = [[LPMBannerAdView alloc] initWithAdUnitId:@"adUnitId" config: adConfig];
   ```

2. **Swift**

   ```swift
   // 広告設定の作成 - 任意
   let adConfig = LPMBannerAdViewConfigBuilder()
   .set(adSize: bannerSize)
   .set(placementName: "placementName")
   .build()
   // バナービューの作成と広告単位 ID の設定
   self.bannerAd = LPMBannerAdView(adUnitId: "adUnitId", config: adConfig)
   ```

### バナーサイズ##banner-sizes

| **LPMAdSize**       | 説明                                     | 寸法 (dp) (幅 X 高さ) |
| ------------------- | -------------------------------------- | ---------------- |
| bannerSize          | 標準バナー                                  | 320×50           |
| largeSize           | Large バナー                              | 320 x 90         |
| mediumRectangleSize | 中矩形 (MREC)                             | 300 x 250        |
| 適応型                 | 広告を自動的にレンダリングして、モバイルおよびタブレットのサイズと向きを調整 | デバイスの幅 X 推奨の高高さ  |

広告サイズを作成するには、以下のいずれかのオプションに従います。

### 画面幅に合わせて調整できる適応型広告サイズ（推奨）##adaptive-ad-size-that-adjusts-to-the-screen-width-(recommended)

このオプションは、デバイス タイプに応じてバナーまたは LeaderBOARD を返します。適応特徴をサポートするネットワーク (Google、Yandex) は、最適化ロジックに基づいて高ささを返します。

1. **Objective-C**

   ```objective-c
   LPMAdSize *bannerSize = [LPMAdSize createAdaptiveAdSize];
   [self.bannerAdView setAdSize: bannerSize];
   ```

2. **Swift**

   ```swift
   let bannerSize = LPMAdSize.createAdaptive()
   self.bannerAdView.setAdSize(bannerSize)
   ```

### 特定のバナーサイズ##specific-banner-size

このオプションでは、バナーサイズを明確に設定できます。バナー、LARGE、MEDIUM＿矩形。

1. **Objective-C**

   ```objective-c
   LPMAdSize *bannerSize = [LPMAdSize createAdaptiveAdSize];
   [self.bannerAdView setAdSize: bannerSize];
   ```

2. **Swift**

   ```swift
   let bannerSize = LPMAdSize.large()
   self.bannerAdView.setAdSize(bannerSize)
   ```

#### Placements##placements

バナーの[プレースメントは](/grow/levelplay/platform/settings/placements.md)、レポートの目的でのみサポートされます。プレースメントは\*\*、loadAd\*\* の前に設定して、リロードされたすべての広告に影響を与える必要があります。

1. **Objective-C**

   ```objective-c
   // 配置名を設定します
   [self.bannerAdView setPlacementName:@"PlacementName"];
   ```

2. **Swift**

   ```swift
   // 配置名を設定します
   self.bannerAdView.setPlacementName("PlacementName")
   ```

## バナーデリゲートの設定##set-banner-delegates

コードに **LPMBannerAdViewDelegate** を実装して、広告の配信を通知します。

* バナー広告をロードする前にデリゲートを設定することをお勧めします。
* バナー広告ビューごとに、独自のデリゲート実装が必要です。
* コールバックはメインスレッドで実行されます。
* コールバックがすべてのネットワークでサポートされていない場合は、任意としてマークされます。

1. **Objective-C**

   ```objective-c
   // デリゲート実装の設定 
   [self.bannerAdView setDelegate:self];
   #pragma mark - LPMBannerAdViewDelegate
   - (void)didLoadAdWithAdInfo:(nonnull LPMAdInfo *)adInfo {
   //広告が正常にロードされました
   }
   - (void)didFailToLoadAdWithAdUnitId:(nonnull NSString *)adUnitId error:(nonnull NSError *)error { 
   // 広告ロード失敗
   }
   - (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {
   // 広告がクリックされました
   }
   - (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {
   // 広告が画面に表示されました
   }
   - (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {
   // Optional.Ad failed to be displayed on screen(画面に広告を表示できませんでした)
   }
   - (void)didLeaveAppWithAdInfo:(LPMAdInfo *)adInfo {
   // Optional.ユーザーが広告をクリックし、アプリケーション外に移動した 
   }
   - (void)didExpandAdWithAdInfo:(LPMAdInfo *)adInfo {
   // Optional.広告が全画面で開かれる
   }
   - (void)didCollapseAdWithAdInfo:(LPMAdInfo *)adInfo {
   // Optional.広告が元のサイズに復元される
   }
   ```

2. **Swift**

   ```swift
   // デリゲート実装の設定 
   self.bannerAdView.setDelegate(self)
   func didLoadAd(with adInfo:LPMAdInfo) {
   //広告が正常にロードされました 
   }
   func didFailToLoadAd(withAdUnitId adUnitId:文字列、エラー：Error) {
   // 広告ロード失敗
   }
   func didClickAd(with adInfo:LPMAdInfo) {
   // 広告がクリックされました
   }
   func didDisplayAd(with adInfo:LPMAdInfo) {
   // 広告が画面に表示されました
   }
   func didFailToDisplayAd(with adInfo:LPMAdInfo、エラー：Error) {
   // Optional.Ad failed to be displayed on screen(画面に広告を表示できませんでした)
   }
   func didLeaveApp(with adInfo:LPMAdInfo) {
   // Optional.ユーザーが広告をクリックし、アプリケーション外に移動した 
   }
   func didExpandAd(with adInfo:LPMAdInfo) {
   // Optional.広告が全画面で開かれる
   }
   func didCollapseAd(with adInfo:LPMAdInfo) {
   // Optional.広告が元のサイズに復元される
   }
   ```

### LevelPlay 広告情報##levelplay-ad-info

**LPMAdInfo** パラメーターには、ロードされた広告に関する情報が含まれます。実装と使用可能なフィールドの詳細については、[こちら](/grow/levelplay/sdk/ios/levelplay-listener-adinfo-integration.md)を参照してください。

## ロードバナー広告##load-banner-ad

バナー広告をロードするには、**loadAd** を使用します。

1. **Objective-C**

   ```objective-c
   // バナー広告のロード
   [self.bannerAdView loadAdWithViewController:self]
   ```

2. **Swift**

   ```swift
   // バナー広告のロード
   self.bannerAdView.loadAd(with: self)
   ```

## **バナー更新の一時停止と再開**##**pause-and-resume-banner-refresh**

プラットフォームで更新値が定義されている場合は、コードのバナー更新を一時停止できます。バナー広告の自動更新を停止するか、一時停止後に再度有効にするには、以下の方法を使用します。

> **Note:**
>
> バナーが再度表示されると、バナーが一時停止されてから更新までの時間が完了します。

* **pauseAutoRefresh** - バナー広告の自動更新を一時停止します。
* **resumeAutoRefresh** - バナー広告が一時停止された後、自動更新を再開します。

1. **Objective-C**

   ```objective-c
   // 更新一時停止
   [self.bannerAdView pauseAutoRefresh]; 
   // 更新を再開
   [self.bannerAdView resumeAutoRefresh];
   ```

2. **Swift**

   ```swift
   // 更新一時停止
   self.bannerAdView.pauseAutoRefresh()
   // 更新を再開
   self.bannerAdView.resumeAutoRefresh()
   ```

## **バナー広告の破棄**##**destroy-banner-ad**

バナーを破棄するには、 **destroy** メソッドを呼び出します。

破棄されたバナーは再度表示できなくなります。さらに広告を表示するには、新しい **LPMBannerAdView** オブジェクトを作成します。

1. **Objective-C**

   ```objective-c
   [self.bannerAdView destroy];
   ```

2. **Swift**

   ```swift
   self.bannerAdView.destroy()
   ```

## バナー広告の完全な実装例##full-implementation-example-of-banner-ads

適応型バナーサイズを使用してバナー広告を作成およびロードする例を示します。

1. **Objective-C**

   ```objective-c
   NS_ASSUME_NONNULL_BEGIN
   @interface BannerAdViewController () <LPMBannerAdViewDelegate>
   @property(nonatomic, strong) LPMBannerAdView *bannerAd;
   @end
   @implementation BannerAdViewController
   - (void)dealloc {
   [self.bannerAd destroy];
   }
   - (void)createBannerAd {
   LPMAdSize *bannerSize = [self getBannerSize] ?: [LPMAdSize mediumRectangleSize];
   // 広告設定の作成 - 任意
   LPMBannerAdViewConfigBuilder *adConfigBuilder = [LPMBannerAdViewConfigBuilder new];
   [adConfigBuilder setWithAdSize:bannerSize];
   [adConfigBuilder setWithPlacementName:@"placementName"];
   LPMBannerAdViewConfig *adConfig = [adConfigBuilder build];
   // バナービューの作成と広告単位 ID の設定
   self.bannerAd = [[LPMBannerAdView alloc] initWithAdUnitId:@"adUnitId" config: adConfig];

   // Set the delegate implementation
   [self.bannerAd setDelegate:self];

   // Add the banner view to the view hierarchy with the proper constraints
   [self addBannerViewWithSize:bannerSize];
   }
   - (LPMAdSize *)getBannerSize {
   // 1.推奨 - 画面幅に合わせて調整する適応型広告サイズ
   LPMAdSize *bannerSize = [LPMAdSize createAdaptiveAdSize];
   // 2.固定幅広告サイズを使用した適応型広告サイズ
   // self.bannerSize = [LPMAdSize createAdaptiveAdSizeWithWidth:400];
   // 3.特定のバナーサイズ - BANNER、LARGE、MEDIUM_RECTangle
   // self.bannerSize = [LPMAdSize mediumRectangleSize];

   return bannerSize;
   }
   - (void)loadBannerAd {
   [self.bannerAd loadAdWithViewController:self];
   }
   - (void)addBannerViewWithSize:(LPMAdSize *)bannerSize {
   self.bannerAd.translatesAutoresizingMaskIntoConstraints = NO;

   // Add the banner view to the view hierarchy
   [self.view addSubview:self.bannerAd];
   [NSLayoutConstraint activateConstraints:@[
      [self.bannerAd.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor],
      [self.bannerAd.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
      [self.bannerAd.widthAnchor constraintEqualToConstant:bannerSize.width],
      [self.bannerAd.heightAnchor constraintEqualToConstant:bannerSize.height]
   ]];
   }
   #pragma mark - LPMBannerAdViewDelegate
   - (void)didLoadAdWithAdInfo:(nonnull LPMAdInfo *)adInfo {}
   - (void)didFailToLoadAdWithAdUnitId:(nonnull NSString *)adUnitId error:(nonnull NSError *)error {}
   - (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}
   - (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {}
   - (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {}
   - (void)didLeaveAppWithAdInfo:(LPMAdInfo *)adInfo {}
   - (void)didExpandAdWithAdInfo:(LPMAdInfo *)adInfo {}
   - (void)didCollapseAdWithAdInfo:(LPMAdInfo *)adInfo {}
   @end
   NS_ASSUME_NONNULL_END
   ```

2. **Swift**

   ```swift
   import UIKit
   public class BannerAdViewController:UIViewController, LPMBannerAdViewDelegate {
   var bannerAd:LPMBannerAdView!
   deinit {
   self.bannerAd.destroy()
   }
   public func createBannerAd() {
   guard let bannerSize = getBannerSize() else {
      戻り値
   }
   // 広告設定の作成 - 任意
   let adConfig = LPMBannerAdViewConfigBuilder()
      .set(adSize: bannerSize)
      .set(placementName: "placementName")
      .build()
   // バナービューの作成と広告単位 ID の設定
   self.bannerAd = LPMBannerAdView(adUnitId: "adUnitId", config: adConfig)

   // Set the delegate implementation
   self.bannerAd.setDelegate(self)

   // Add the banner view to the view hierarchy with the proper constraints
   addBannerView(withSize: bannerSize)
   }
   public func getBannerSize() -> LPMAdSize? {
   // 1.推奨 - 画面幅に合わせて調整する適応型広告サイズ
   let bannerSize = LPMAdSize.createAdaptive()
   // 2.固定幅広告サイズを使用した適応型広告サイズ
   // bannerSize = LPMAdSize.createAdaptiveAdSize(withWidth:400)
   // 3.特定のバナーサイズ - BANNER、LARGE、MEDIUM_RECTangle
   // bannerSize = LPMAdSize.mediumRectangleSize()

   return bannerSize
   }
   public func loadBannerAd() {
   self.bannerAd.loadAd(with: self)
   }
   public func addBannerView(withSize bannerSize:LPMAdSize) {
   DispatchQueue.main.async {
      self.bannerAd.translatesAutoresizingMaskIntoConstraints = false
      self.view.addSubview(self.bannerAd)
      let centerX = self.bannerAd.centerXAnchor.constraint(equalTo: self.view.centerXAnchor)
      let bottom = self.bannerAd.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor)
      let width = self.bannerAd.widthAnchor.constraint(equalToConstant:CGFloat(bannerSize.width))
      let height = self.bannerAd.heightAnchor.constraint(equalToConstant:CGFloat(bannerSize.height))
      NSLayoutConstraint.アクティベート([centerX, bottom, width, height])
   }
   }
   // MARK: - LPMBannerAdViewDelegate
   public func didLoadAd(with adInfo:LPMAdInfo) {}
   public func didFailToLoadAd(withAdUnitId adUnitId:文字列、エラー：Error) {}
   public func didClickAd(with adInfo:LPMAdInfo) {}
   public func didDisplayAd(with adInfo:LPMAdInfo) {}
   public func didFailToDisplayAd(with adInfo:LPMAdInfo、エラー：Error) {}
   public func didLeaveApp(with adInfo:LPMAdInfo) {}
   public func didExpandAd(with adInfo:LPMAdInfo) {}
   public func didCollapseAd(with adInfo:LPMAdInfo) {}
   }
   ```

## **LevelPlay Mediation デモアプリケーション**##**levelplay-mediation-demo-app**

インテグレーション Demo (インテグレーションデモ) アプリケーションは、バナー広告単位 API をアプリケーションに統合する方法を示します。

[iOSデモアプリケーションのダウンロード](https://github.com/ironsource-mobile/Mediation-Demo-Apps)

[インテグレーションテストスイート](/grow/levelplay/sdk/ios/integration-test-suite.md)とのインテグレーションを確認します。

## 次のステップ##next-steps

インテグレーションガイドに従って、追加のバナー広告ネットワークのインテグレーションや追加の広告フォーマットの設定を行います。

* [Mediation Networks](/grow/levelplay/sdk/ios/mediation-networks.md)。
* [リワード広告](/grow/levelplay/sdk/ios/rewarded-ads-integration.md)
* [インタースティシャル広告](/grow/levelplay/sdk/ios/interstitial-integration.md)
* [ネイティブ広告](/grow/levelplay/sdk/ios/native-ads-integration.md)
