# Unity 배너 통합

> SDK를 초기화하고, 초기화 후에 배너 광고 오브젝트를 생성하고, 적절한 광고 크기와 포지션을 설정하여 Unity 배너 광고를 통합할 수 있습니다.

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

> **Note:**
>
> 이 기술 자료는 SDK 8.4.0 이상(베타 버전 API)에 해당합니다.

## 필수 조건##prerequisites

* 레벨플레이 SDK를 애플리케이션 올바르게 연동했는지 확인합니다. 통합은 [여기](/grow/levelplay/sdk/unity/package-integration.md) 설명되어 있습니다.
* 레벨플레이 초기화 API 사용하여 SDK를 초기화해야 합니다.
* 레벨플레이 대시보드에서 AdUnitID를 찾습니다. 자세히 알아보기 [여기](/grow/levelplay/platform/get-started/ad-units.md).

## 배너 광고 오브젝트 생성, 크기 및 위치 설정##create-banner-ad-object-set-size-and-position

배너 광고 오브젝트의 생성은 **OnInitSuccess** 콜백을 수신한 후에 수행해야 합니다.

```csharp
// Create the banner object and set the ad unit id 
LevelPlayBannerAd bannerAd = new LevelPlayBannerAd(bannerAdUnitId);
```

참고: `LevelPlayBannerAd` 생성자는 선택적 `Config` 파라미터도 지원합니다.

```csharp
// Use optional Config parameter
LevelPlayBannerAd(string adUnitId, Config config = null)
```

특별한 설정이 필요하지 않으면 `Config` 파라미터를 생략하고 `adUnitId`만 전달할 수 있습니다. 배너 기본 속성으로 생성됩니다.

| 속성              | 기본                 |
| --------------- | ------------------ |
| 크기              | Banner             |
| 위치              | BottomCenter       |
| displayOnLoad   | true               |
| respectSafeArea | false(Android만 해당) |

배너 매개 변수를 커스터마이즈하려면 다음과 같이 `Config` 빌더를 사용하십시오.

```csharp
var configBuilder = new LevelPlayBannerAd.Config.Builder();
configBuilder.SetSize(LevelPlayAdSize.LARGE);
configBuilder.SetPosition(LevelPlayBannerPosition.TopCenter);
configBuilder.SetDisplayOnLoad(true);
configBuilder.SetRespectSafeArea(true); // Only relevant for Android
configBuilder.SetPlacementName("bannerPlacement");
configBuilder.SetBidFloor(1.0); // Minimum bid price in USD
var bannerConfig = configBuilder.Build();

bannerAd = new LevelPlayBannerAd(bannerAdUnitId, bannerConfig);
```

### 배너 크기##banner-sizes

| LevelPlayAdSize   | 설명                                                 | dp 단위의 측정 항목(너비 X 높이) |
| ----------------- | -------------------------------------------------- | --------------------- |
| 배너                | 표준 배너                                              | 320 x 50              |
| 대규모               | 대형 배너                                              | 320 x 90              |
| MEDIUM\_RECTANGLE | 중간 직사각형(MREC)                                      | 300 x 250             |
| 적응적               | 모바일 및 태블릿의 크기 및 방향, 방향 설정 조정하기 위해 광고를 자동으로 렌더링합니다. | 기기 너비 X 권장 높이         |

광고 크기를 생성하려면 다음 옵션 중 하나를 따르십시오.

**화면 너비에 맞게 조정되는 적응적 광고 크기(권장):**
이 옵션은 기기 유형에 따라 배너 또는 LEADERBOARD를 반환합니다. 적응적 기능을 지원하는 네트워크(Google, Yandex)는 최적화 로직에 따라 높이를 반환합니다.

* 레벨플레이 SDK 8.8.0 이상의 경우 다음을 사용하여 배너 로드하기 전에 반환될 적응적 배너 너비와 높이를 결정할 수 있습니다.

```csharp
LevelPlayAdSize adSize = LevelPlayAdSize.CreateAdaptiveAdSize();
int width = adSize.Width;
int height = adSize.Height;
```

* For LevelPlay SDK below 8.8.0:

```csharp
LevelPlayAdSize adSize = LevelPlayAdSize.CreateAdaptiveAdSize();
```

**특정 배너 크기:** 이 옵션을 사용하면 특정 배너 크기를 설정할 수 있습니다. BANNER, LARGE, MEDIUM\_RECTANGLE.

```csharp
LevelPlayAdSize adSize = LevelPlayAdSize.BANNER;
```

### 배너 위치##banner-positions

화면에 배너를 표시하기 위한 기본 위치는 **BottomCenter**입니다. 아래는 지원되는 모든 포지션의 전체 목록입니다.

* TopLeft
* TopCenter
* TopRight
* CenterLeft
* 센터
* CenterRight
* BottomLeft
* BottomCenter
* BottomRight

```csharp
LevelPlayBannerAd bannerAd = new LevelPlayBannerAd(adUnitId, LevelPlayAdSize.BANNER, LevelPlayBannerPosition.TopLeft);
```

dp에 정의된 x 및 y 값이 있는 `LevelPlayBannerPosition` 오브젝트를 생성하여 화면의 특정(x, y)좌표에 배너를 배치할 수도 있습니다.

```csharp
LevelPlayBannerPosition position = new LevelPlayBannerPosition(new Vector2(x, y));
LevelPlayBannerAd bannerAd = new LevelPlayBannerAd(adUnitId, adSize, position, placementName, displayOnLoad, respectSafeArea);
```

### Placements##placements

우리는 보고만을 위한 배너에 있는 [플레이스먼트를](/grow/levelplay/platform/settings/placements.md) 지원합니다. 모든 재로드된 광고에 영향을 미치도록 `LoadAd` 전에 설정해야 합니다.

```csharp
// Set the placement name
LevelPlayBannerAd bannerAd = new LevelPlayBannerAd("bannerAdUnitId", LevelPlayAdSize.BANNER, placementName:"placementName");
```

## 배너 이벤트 구현##implement-the-banner-events

코드에서 `LevelPlayBannerAd` 이벤트를 듣습니다. SDK는 아래에 나열된 가능한 모든 이벤트를 알립니다.

* 배너 광고를 로드하기 전에 리스너를 설정하는 것이 좋습니다.
* 각 배너 광고에는 자체 리스너 구현이 있어야 합니다.
* 콜백은 메인 스레드 실행됩니다.

```csharp
// Register to the events 
bannerAd.OnAdLoaded += BannerOnAdLoadedEvent;
bannerAd.OnAdLoadFailed += BannerOnAdLoadFailedEvent;
bannerAd.OnAdDisplayed += BannerOnAdDisplayedEvent;
bannerAd.OnAdDisplayFailed += BannerOnAdDisplayFailedEvent;
bannerAd.OnAdClicked += BannerOnAdClickedEvent;
bannerAd.OnAdCollapsed += BannerOnAdCollapsedEvent;
bannerAd.OnAdLeftApplication += BannerOnAdLeftApplicationEvent;
bannerAd.OnAdExpanded += BannerOnAdExpandedEvent;

// Implement the events
void BannerOnAdLoadedEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdLoadFailedEvent(LevelPlayAdError ironSourceError) {}
void BannerOnAdClickedEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdDisplayedEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error) {}
void BannerOnAdCollapsedEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdLeftApplicationEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdExpandedEvent(LevelPlayAdInfo adInfo) {}
```

### 레벨플레이 광고 정보##levelplay-ad-info

`LevelPlayAdInfo` 파라미터에는 로드된 광고에 대한 정보가 포함됩니다. 자세히 알아보기 [여기](/grow/levelplay/sdk/unity/levelplay-listener-adinfo-integration.md).

## 배너 광고 로드##load-banner-ad

배너 광고를 로드하려면 `LoadAd`를 사용합니다.

```csharp
bannerAd.LoadAd();
```

## 배너 새로고침 일시 정지 및 재개##pause-and-resume-banner-refresh

새로고침 값이 플랫폼에서 정의된 경우 코드에서 배너 새로고침을 일시 정지할 수 있습니다. 배너 광고의 자동 새로고침을 중지하거나, 일시 중지한 후 다시 활성화하다, 사용 가능하다.

> **Note:**
>
> 배너 다시 표시되면 배너가 일시 정지된 시점부터 새로고침까지의 시간을 완료합니다.

```csharp
// Pause refresh
bannerAd.PauseAutoRefresh();
// Resume refresh
bannerAd.ResumeAutoRefresh();
```

bannerAd.HideAd();

## 배너 숨기기 및 표시##hide-and-show-banners

배너 생성자 일부로 배너 배경에 로드하고 관련된 경우에만 화면에 표시할 수 있습니다. 로딩 후 광고 가시성을 제어하기 위해 다음 API를 사용할 수 있습니다.

> **Note:**
>
> 광고가 숨겨지면 자동 새로고침이 켜져 있는 한 백그라운드에서 계속 새로고침됩니다.

```csharp
// Show ad 
bannerAd.ShowAd(); 
// Hide ad 
bannerAd.HideAd();
```

## 디스플레이 컷아웃(Android만 해당)##display-cutouts-(android-only)

Android 디바이스의 디스플레이 컷아웃은 카메라, 센서, 스피커와 같은 필수 컴포넌트를 위해 예약된 지정된 영역, 일반적으로 에지 투 에지 디스플레이가 있는 스마트폰과 디바이스에서 사용됩니다. 컷아웃은 잠재적으로 게임 뷰 제한하여 화면의 배너 배치에 영향을 미칠 수 있습니다. 배너 광고와 표시된 컷아웃의 중복을 방지하려면 `LevelPlayBannerAd`를 생성하고 `respectSafeArea`를 true로 설정합니다.

디스플레이 컷아웃을 위한 Google 솔루션에 대해 자세히 알아보세요[. 여기](https://developer.android.com/guide/topics/display-cutout)에서

Android 컷아웃을 지원하려면 `Config`를 사용하여 배너 오브젝트를 생성하고 respectSafeArea 값을 true로 설정합니다(기본값은 false).

```csharp
var configBuilder = new LevelPlayBannerAd.Config.Builder();
configBuilder.SetRespectSafeArea(true); // Only relevant for Android
var bannerConfig = configBuilder.Build();

bannerAd = new LevelPlayBannerAd(bannerAdUnitId, bannerConfig);
```

## 배너 광고 삭제##destroy-banner-ad

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

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

```csharp
bannerAd.DestroyAd();
```

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

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

```csharp
public class BannerAdSample {
  private LevelPlayBannerAd bannerAd;
  void CreateBannerAd() {
    // Create ad configuration - optional
    var adConfig = new LevelPlayBannerAd.Config.Builder()
      .SetSize(LevelPlayAdSize.BANNER)
      .SetPlacementName("placementName")
      .SetPosition(LevelPlayBannerPosition.BottomCenter)
      .SetDisplayOnLoad(true)
      .SetRespectSafeArea(true)
      .Build();
        
    // Create banner instance
    bannerAd = new LevelPlayBannerAd("bannerAdUnitId", adConfig);
    // Subscribe BannerAd events
    bannerAd.OnAdLoaded += BannerOnAdLoadedEvent;
    bannerAd.OnAdLoadFailed += BannerOnAdLoadFailedEvent;
    bannerAd.OnAdDisplayed += BannerOnAdDisplayedEvent;
    bannerAd.OnAdDisplayFailed += BannerOnAdDisplayFailedEvent;
    bannerAd.OnAdClicked += BannerOnAdClickedEvent;
    bannerAd.OnAdCollapsed += BannerOnAdCollapsedEvent;
    bannerAd.OnAdLeftApplication += BannerOnAdLeftApplicationEvent;
    bannerAd.OnAdExpanded += BannerOnAdExpandedEvent;
  }
  public void LoadBannerAd() {
    //Load the banner ad 
    bannerAd.LoadAd();
  }
  public void ShowBannerAd() {
    //Show the banner ad, call this method only if you turned off the auto show when you created this banner instance.
    bannerAd.ShowAd();
  }
  public void HideBannerAd() {
    //Hide banner
    bannerAd.HideAd();
  }
  public void DestroyBannerAd() {
    //Destroy banner
    bannerAd.DestroyAd();
  }
  //Implement BannerAd Events
  public void BannerOnAdLoadedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdLoadFailedEvent(LevelPlayAdError ironSourceError) {}
  public void BannerOnAdClickedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdDisplayedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error){}
  public void BannerOnAdCollapsedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdLeftApplicationEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdExpandedEvent(LevelPlayAdInfo adInfo) {}
}
```

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

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

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

이제 모두 애플리케이션 배너를 제공하도록 설정되었습니다. [통합 테스트 제품군](/grow/levelplay/sdk/unity/integration-test-suite.md)과의 통합 여부 확인

에디터 내에서 통합을 테스트할 수 있습니다. Unity 에디터에서 모형 광고를 미리 보려면 [미리보기 모형 광고 가이드](/grow/levelplay/sdk/unity/preview-mock-ads-in-editor.md)를 참조하십시오.

다음은 무엇입니까?
배너 광고 네트워크를 추가로 연동하거나 추가 광고 형식을 설정 Unity 통합 가이드를 따르십시오.

* [Mediation Networks 추가](/grow/levelplay/sdk/unity/mediation-networks.md)
* [보상형 광고](/grow/levelplay/sdk/unity/rewarded-ad-integration-package.md)
* [인터스티셜 광고](/grow/levelplay/sdk/unity/interstitial-integration.md)
