적응형 배너

적응형 배너는 차세대 반응형 광고이며, 각 기기의 광고 크기를 최적화하여 실적을 극대화할 수 있습니다. 고정된 높이만 지원하는 스마트 배너를 개선한 적응형 배너를 사용하면 사용자가 광고 폭을 지정함으로써 최적의 광고 크기를 결정할 수 있습니다.

최적의 광고 크기를 선택하기 위해 적응형 배너는 고정된 높이 대신 고정된 가로 세로 비율을 사용합니다. 따라서 기기에서 더 일관된 화면 비율을 차지하는 배너 광고가 게재되므로 실적을 높일 수 있는 가능성이 늘어납니다.

적응형 배너로 작업할 때는 지정된 기기 및 너비에 대해 항상 일정한 크기가 반환됩니다. 특정 기기에서 레이아웃을 테스트한 후에는 광고 크기가 변경되지 않습니다. 그러나 배너 소재의 크기는 기기에 따라 달라질 수 있습니다. 따라서 레이아웃에서 광고 높이 변화를 수용하도록 설정하는 것이 좋습니다. 드문 경우이지만 적응형 광고의 전체 크기가 표시되지 않을 수 있으며 이때 표준 크기의 광고 소재가 이 슬롯의 중앙에 대신 배치됩니다.

기본 요건

적응형 배너를 사용하는 경우

적응형 배너는 업계 표준 320x50 배너 크기 및 스마트 배너 형식을 대체할 수 있도록 설계되었습니다.

이러한 배너 크기는 일반적으로 화면 상단이나 하단에 고정되는 앵커 광고 배너로 사용됩니다.

앵커 광고 배너의 경우 적응형 배너를 사용할 때의 가로 세로 비율은 표준 320x50 광고의 비율과 비슷합니다(아래 3가지 예 참고).


320x50 배너

적응형 배너

스마트 배너

적응형 배너는 사용 가능한 화면 크기를 더 효과적으로 사용합니다. 또한 스마트 배너와 비교할 때 다음과 같은 이유로 적응형 배너가 더 효과적입니다.

  • 적응형 배너의 너비는 꼭 전체 화면일 필요 없이 사용자가 원하는 너비로 설정할 수 있으므로 iOS의 안전 영역과 Android의 디스플레이 컷아웃 내에 위치하도록 처리할 수 있습니다.

  • 또한 크기가 다른 여러 기기에서 높이를 일정하게 유지하는 대신 각 기기에 맞는 최적화된 높이를 선택하므로 다양한 기기에서도 배너가 제대로 표시될 수 있습니다.

구현 관련 참고사항

앱에서 적응형 배너를 구현하는 경우 다음 사항에 유의하세요.

  • 최신 버전의 Google 모바일 광고 Unity 플러그인을 사용 중인지 확인합니다. 미디에이션의 경우 각 미디에이션 어댑터의 최신 버전을 사용합니다.
  • 적응형 배너 크기는 전체 너비를 사용할 때 가장 효과적으로 작동하도록 설계되었습니다. 대부분의 경우 이 값은 사용 중인 기기 화면의 전체 너비입니다. 적용 가능한 안전 영역을 고려해야 합니다.
  • Google 모바일 광고 SDK는 적응형 AdSize API 사용 시 지정된 너비에 맞게 광고 높이를 최적화하여 배너 크기를 조정합니다.
  • 적응형 배너의 광고 크기를 가져오는 세 가지 메서드가 있습니다. 가로 모드에서는 AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth, 세로 모드에서는 AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth, 실행 시점의 기기 방향에서는 AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth 메서드를 사용합니다.
  • 특정 기기에서 특정 너비에 대해 반환되는 크기는 항상 동일하므로 특정 기기에서 레이아웃을 테스트한 후에는 광고 크기가 변경되지 않습니다.
  • 앵커 광고 배너 높이는 기기 높이의 15% 또는 90dp(밀도 독립형 픽셀)를 초과할 수 없으며, 50dp보다는 커야 합니다.
  • 전체 너비 배너의 경우 특정 너비를 제공하는 대신 AdSize.FullWidth 플래그를 사용할 수 있습니다.

빠른 시작

간단한 적응형 앵커 배너를 구현하려면 아래 단계를 따르세요.

  1. 적응형 배너 광고 크기를 가져옵니다. 가져오는 크기는 적응형 배너를 요청하는 데 사용됩니다. 적응형 광고 크기를 가져오려면 다음 항목을 확인하세요.
    1. 화면의 전체 너비를 사용하지 않으려는 경우에는 밀도 독립 픽셀로 사용 중인 기기의 너비를 가져오거나 원하는 너비를 설정하세요. Screen.width 같은 Unity API는 픽셀의 절댓값을 반환하므로 MobileAds.Utils.GetDeviceScale()에서 검색 가능한 기기 배율로 나눌 수 있어야 합니다.
    2. 전체 너비 배너에는 AdSize.FullWidth 플래그를 사용합니다.
    3. AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width) 같은 광고 크기 클래스에 적절한 정적 메서드를 사용하여 기기의 현재 방향에 대한 적응형 AdSize 객체를 가져옵니다.
  2. 광고 단위 ID, 적응형 크기, 관련성 높은 광고 게재 위치를 사용하여 BannerView 객체를 만듭니다.
  3. 일반적인 배너를 요청하는 것과 마찬가지로 준비된 광고 보기에서 광고 요청 객체를 만들고 LoadAd() 메서드를 사용하여 배너를 로드합니다.

코드 예

다음은 안전 영역을 고려하여 화면 너비에 맞게 적응형 배너를 로드하고 새로고침하는 스크립트의 예입니다.

using UnityEngine;
using System;
using GoogleMobileAds.Api;

public class NewMonoBehaviour : MonoBehaviour
{
    private BannerView bannerView;

    // Use this for initialization
    void Start()
    {
        RequestBanner();
    }

    public void OnGUI()
    {
        GUI.skin.label.fontSize = 60;
        Rect textOutputRect = new Rect(
          0.15f * Screen.width,
          0.25f * Screen.height,
          0.7f * Screen.width,
          0.3f * Screen.height);
        GUI.Label(textOutputRect, "Adaptive Banner Example");
    }

    private void RequestBanner()
    {
        // These ad units are configured to always serve test ads.
        #if UNITY_EDITOR
            string adUnitId = "unused";
        #elif UNITY_ANDROID
            string adUnitId = "ca-app-pub-3212738706492790/6113697308";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3212738706492790/5381898163";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        // Clean up banner ad before creating a new one.
        if (this.bannerView != null)
        {
            this.bannerView.Destroy();
        }

        AdSize adaptiveSize =
                AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);

        this.bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom);

        // Register for ad events.
        this.bannerView.OnAdLoaded += this.HandleAdLoaded;
        this.bannerView.OnAdFailedToLoad += this.HandleAdFailedToLoad;
        this.bannerView.OnAdOpening += this.HandleAdOpened;
        this.bannerView.OnAdClosed += this.HandleAdClosed;
        this.bannerView.OnAdLeavingApplication += this.HandleAdLeftApplication;

        AdRequest adRequest = new AdRequest.Builder()
            .AddTestDevice(AdRequest.TestDeviceSimulator)
            .AddTestDevice("0123456789ABCDEF0123456789ABCDEF")
            .Build();

        // Load a banner ad.
        this.bannerView.LoadAd(adRequest);
    }

    #region Banner callback handlers

    public void HandleAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
        MonoBehaviour.print(String.Format("Ad Height: {0}, width: {1}",
            this.bannerView.GetHeightInPixels(),
            this.bannerView.GetWidthInPixels()));
    }

    public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print(
                "HandleFailedToReceiveAd event received with message: " + args.Message);
    }

    public void HandleAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

    public void HandleAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    public void HandleAdLeftApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLeftApplication event received");
    }

    #endregion
}

여기서 AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth 함수는 현재 인터페이스 방향에 대한 앵커 광고 위치의 배너 크기를 가져오는 데 사용됩니다. 앵커 광고 배너를 지정된 방향으로 미리 로드하려면 AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidthAdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth의 관련 함수를 사용하세요.