# iOS용 배너 통합

> 배너 광고 오브젝트 생성하고 크기를 설정하고 앱의 뷰 계층 구조 구조에 표시하여 iOS 앱에서 배너 광고를 구현합니다.

배너는 정적 광고 또는 애니메이션 광고 중 하나일 수 있는 직사각형 시스템 기반 광고로, 라이브 앱 콘텐츠 주위에 지정된 영역 게재됩니다.

> **Note:**
>
> 이 기술 자료는 SDK 8.4.0 이상에 해당합니다.

## 필수 조건##prerequisites

* 레벨플레이 SDK를 애플리케이션 올바르게 연동했는지 확인합니다. 통합은 [여기](/grow/levelplay/sdk/ios/sdk-integration.md) 설명되어 있습니다.
* 레벨플레이 초기화 API 사용하여 SDK를 초기화해야 합니다.
* 레벨플레이 대시보드에서 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 x 50              |
| largeSize           | 대형 배너                                              | 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

이 옵션을 사용하면 배너 크기를 구체적으로 설정할 수 있습니다. BANNER, LARGE, MEDIUM\_RECTANGLE.

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 마크 - 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 *)오류 {
   // 선택 사항 광고가 화면에 표시되지 못함
   }
   - (void)didLeaveAppWithAdInfo:(LPMAdInfo *)adInfo {
   // 선택 사항 사용자 광고를 누르고 앱 밖으로 이동 
   }
   - (void)didExpandAdWithAdInfo:(LPMAdInfo *)adInfo {
   // 선택 사항 광고가 전체 화면으로 열립니다.
   }
   - (void)didCollapseAdWithAdInfo:(LPMAdInfo *)adInfo {
   // 선택 사항 광고가 원본의, 원래의 크기로 복원됨
   }
   ```

2. **Swift**

   ```swift
   // 델리게이트 구현 설정 
   self.bannerAdView.setDelegate(self)
   func didLoadAd(with adInfo: LPMAdInfo) {
   //광고가 성공적으로 로드되었습니다. 
   }
   func didFailToLoadAd(withAdUnitId adUnitId: 문자열, 오류: 오류) {
   // 광고 로드 실패
   }
   func didClickAd(with adInfo: LPMAdInfo) {
   // 광고가 클릭되었습니다.
   }
   func didDisplayAd(with adInfo: LPMAdInfo) {
   // 광고가 표시되고 화면에 표시되었습니다.
   }
   func didFailToDisplayAd(with adInfo: LPMAdInfo, 오류: 오류) {
   // 선택 사항 광고가 화면에 표시되지 못함
   }
   func didLeaveApp(with adInfo: LPMAdInfo) {
   // 선택 사항 사용자 광고를 누르고 앱 밖으로 이동 
   }
   func didExpandAd(with adInfo: LPMAdInfo) {
   // 선택 사항 광고가 전체 화면으로 열립니다.
   }
   func didCollapseAd(with adInfo: LPMAdInfo) {
   // 선택 사항 광고가 원본의, 원래의 크기로 복원됨
   }
   ```

### 레벨플레이 광고 정보##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(자체 포함)
   ```

## **일시 정지 및 재개 배너 새로 고침**##**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**

배너를 파괴하려면 **파괴** 메서드를 호출합니다.

삭제된 배너 더 이상 표시할 수 없습니다. 더 많은 광고를 표시하려면 새 **LPMBannerAdView** 오브젝트를 만드십시오.

1. **Objective-C**

   ```objective-c
   [self.bannerAdView 제거];
   ```

2. **Swift**

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

## 배너 광고의 전체 구현 예시##full-implementation-example-of-banner-ads

다음은 적응적 배너 크기를 사용하여 배너 광고를 생성하고 로드하는 예제입니다.

1. **Objective-C**

   ```objective-c
   NS_ASSUME_NONNULL_BEGIN
   @interface BannerAdViewController () <LPMBannerAdViewDelegate>
   @properties(nonatomic, strong) LPMBannerAdView *bannerAd;
   @end
   @implementation BannerAdViewController
   - (void)할당 해제 {
   [self.bannerAd destroy];
   }
   - (void)createBannerAd {
   LPMAdSize *bannerSize = [자체 BannerSize 얻기] ?: [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. 특정 배너 크기 - 배너, 대형, 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 오류:(NSError *)오류 {}
   - (void)didLeaveAppWithAdInfo:(LPMAdInfo *)adInfo {}
   - (void)didExpandAdWithAdInfo:(LPMAdInfo *)adInfo {}
   - (void)didCollapseAdWithAdInfo:(LPMAdInfo *)adInfo {}
   @end
   NS_ASSUME_NONNULL_END
   ```

2. **Swift**

   ```swift
   임포트 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. 특정 배너 크기 - 배너, 대형, 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.activate([centerX, bottom, width, height])
   }
   }
   // MARK: - LPMBannerAdViewDelegate
   public func didLoadAd(with adInfo: LPMAdInfo) {}
   public func didFailToLoadAd(withAdUnitId adUnitId: 문자열, 오류: 오류) {}
   public func didClickAd(with adInfo: LPMAdInfo) {}
   public func didDisplayAd(with adInfo: LPMAdInfo) {}
   public func didFailToDisplayAd(with adInfo: LPMAdInfo, 오류: 오류) {}
   public func didLeaveApp(with adInfo: LPMAdInfo) {}
   public func didExpandAd(with adInfo: LPMAdInfo) {}
   public func didCollapseAd(with adInfo: LPMAdInfo) {}
   }
   ```

## **레벨플레이 Mediation 데모 앱**##**levelplay-mediation-demo-app**

통합 데모 애플리케이션 앱에 배너 배너 유닛 API를 통합하는 방법을 보여 줍니다.

[iOS 데모 애플리케이션 다운로드](https://github.com/ironsource-mobile/Mediation-Demo-Apps)

[통합 테스트 제품군](/grow/levelplay/sdk/ios/integration-test-suite.md)과의 통합 여부 확인

## 다음 단계##next-steps

배너 광고 네트워크를 추가로 연동하거나 추가 광고 형식을 설정 Unity 통합 가이드를 따르십시오.

* [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)
