적응형 배너는 광고 크기를 기기별로 최적화하여 실적을 극대화하는 차세대 반응형 광고입니다. 고정된 높이만 지원하는 스마트 배너를 개선한 적응형 배너를 사용하면 사용자가 광고 너비를 지정함으로써 최적의 광고 크기를 결정할 수 있습니다.
최적의 광고 크기를 선택하기 위해 적응형 배너는 고정된 높이 대신 고정된 가로세로 비율을 사용합니다. 따라서 배너 광고가 기기에서 좀 더 일관성 있는 화면 크기를 차지하도록 게재되며 실적을 개선할 수 있는 기회의 폭이 넓어집니다.
적응형 배너로 작업할 때는 지정된 기기 및 너비에 대해 항상 일정한 크기가 반환된다는 점을 기억하세요. 특정 기기에서 레이아웃을 테스트한 후에는 광고 크기가 변경되지 않습니다. 그러나 배너 소재의 크기는 기기에 따라 달라질 수 있습니다. 따라서 레이아웃에서 광고 높이 변화를 수용하도록 설정하는 것이 좋습니다. 드문 경우이지만 전체 적응형 크기 광고가 매칭되지 않을 수 있으며 이때는 표준 크기의 광고 소재가 대신 이 슬롯의 중앙에 배치됩니다.
기본 요건
적응형 배너를 사용하는 것이 효과적인 경우
적응형 배너는 업계 표준 320x50 배너 크기 및 스마트 배너 형식을 대체할 수 있도록 설계되었습니다.
이러한 배너 크기는 일반적으로 화면 상단이나 하단에 고정되는 앵커 광고 배너로 사용됩니다.
앵커 광고 배너의 경우 적응형 배너를 사용할 때의 가로세로 비율은 표준 320x50 광고의 비율과 비슷합니다(아래 3가지 예 참고).
320x50 배너 |
적응형 배너 |
스마트 배너 |
적응형 배너는 사용 가능한 화면 크기를 더 효과적으로 사용합니다. 또한 스마트 배너와 비교하자면 다음과 같은 이유 때문에 적응형 배너를 사용하는 것이 더 좋습니다.
적응형 배너의 너비는 꼭 전체 화면일 필요 없이 사용자가 원하는 너비로 설정할 수 있으므로 iOS의 안전 영역과 Android의 디스플레이 컷아웃 내에 위치하도록 처리할 수 있습니다.
또한 크기가 다른 여러 기기에서 높이를 일정하게 유지하는 대신 각 기기에 맞는 최적화된 높이를 선택하므로 다양한 기기에서도 배너가 제대로 표시될 수 있습니다.
구현 참고사항
앱에서 적응형 배너를 구현할 때는 다음 사항에 유의하세요.
- 광고가 게재될 보기의 너비를 알아야 하며 해당하는 기기 너비와 적용 가능한 안전 영역 또는 컷아웃을 고려해야 합니다.
- 광고 슬롯을 채울 수 없는 작은 크기의 광고가 게재되는 경우 AdMob 정책을 준수하도록 광고 보기 배경이 불투명해야 합니다.
- 최신 버전의 Google 모바일 광고 Unity 플러그인을 사용 중인지 확인합니다. 미디에이션의 경우 각 미디에이션 어댑터의 최신 버전을 사용합니다.
- 적응형 배너 크기는 가능한 너비를 모두 사용할 때 가장 효과적으로 작동하도록 설계되었습니다. 대부분의 경우 이 값은 사용 중인 기기 화면의 전체 너비입니다. 적용 가능한 안전 영역을 고려해야 합니다.
- Google 모바일 광고 SDK는 적응형 AdSize API를 사용할 때 지정된 너비에 맞게 광고 높이를 최적화하여 배너 크기를 조정합니다.
- 적응형 배너의 광고 크기를 가져오는 세 가지 메서드가 있습니다. 가로 모드에서는
AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth
, 세로 모드에서는AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth
, 실행 시점의 기기 방향에서는AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth
메서드를 사용합니다. - 특정 기기에서 특정 너비에 대해 반환되는 크기는 항상 동일하므로 특정 기기에서 레이아웃을 테스트한 후에는 광고 크기가 변경되지 않습니다.
- 앵커 광고 배너 높이는 기기 높이의 15% 또는 90dp(밀도 독립형 픽셀) 중 더 작은 값을 초과할 수 없으며, 50dp보다는 커야 합니다.
- 전체 너비 배너의 경우 특정 너비를 제공하는 대신
AdSize.FullWidth
플래그를 사용할 수 있습니다.
빠른 시작
간단한 적응형 앵커 배너를 구현하려면 아래 단계를 따르세요.
- 적응형 배너 광고 크기를 가져옵니다. 가져오는 크기는 적응형 배너를 요청하는 데 사용됩니다. 적응형 광고 크기를 가져오려면 다음 사항을 확인하세요.
- 사용 중인 기기의 너비(dp)를 가져오거나 화면의 전체 너비를 사용하지 않으려는 경우에는 원하는 너비를 설정합니다.
Screen.width
와 같은 Unity API는 절대 픽셀을 반환하므로 기기 배율 (MobileAds.Utils.GetDeviceScale()
에서 검색 가능)로 나눠야 합니다. - 전체 너비 배너에는
AdSize.FullWidth
플래그를 사용합니다. AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width)
같은 광고 크기 클래스에 적절한 정적 메서드를 사용하여 기기의 현재 방향에 대한 적응형AdSize
객체를 가져옵니다.
- 사용 중인 기기의 너비(dp)를 가져오거나 화면의 전체 너비를 사용하지 않으려는 경우에는 원하는 너비를 설정합니다.
- 광고 단위 ID, 적응형 크기, 관련성 높은 광고 게재 위치를 사용하여
BannerView
객체를 만듭니다. - 일반적인 배너를 요청하는 것과 마찬가지로 준비된 광고 보기에서 광고 요청 객체를 만들고
LoadAd()
메서드를 사용하여 배너를 로드합니다.
코드 예
다음은 안전 영역을 고려하여 화면 너비에 맞게 적응형 배너를 로드하고 새로고침하는 스크립트의 예입니다.
using UnityEngine;
using System;
using GoogleMobileAds.Api;
public class AdaptiveBannerSample : MonoBehaviour
{
private BannerView _bannerView;
// Use this for initialization
void Start()
{
// Set your test devices.
// https://developers.google.com/ad-manager/mobile-ads-sdk/unity/test-ads
RequestConfiguration requestConfiguration = new RequestConfiguration
{
TestDeviceIds = new List<string>
{
AdRequest.TestDeviceSimulator,
// Add your test device IDs (replace with your own device IDs).
#if UNITY_IPHONE
"96e23e80653bb28980d3f40beb58915c"
#elif UNITY_ANDROID
"75EF8D155528C04DACBBA6F36F433035"
#endif
}
};
MobileAds.SetRequestConfiguration(requestConfiguration);
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus status) =>
{
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 (_bannerView != null)
{
_bannerView.Destroy();
}
AdSize adaptiveSize =
AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(AdSize.FullWidth);
_bannerView = new BannerView(adUnitId, adaptiveSize, AdPosition.Bottom);
// Register for ad events.
_bannerView.OnBannerAdLoaded += OnBannerAdLoaded;
_bannerView.OnBannerAdLoadFailed += OnBannerAdLoadFailed;
AdRequest adRequest = new AdRequest();
// Load a banner ad.
_bannerView.LoadAd(adRequest);
}
#region Banner callback handlers
private void OnBannerAdLoaded(object sender, EventArgs args)
{
Debug.Log("Banner view loaded an ad with response : "
+ _bannerView.GetResponseInfo());
Debug.Log("Ad Height: {0}, width: {1}",
_bannerView.GetHeightInPixels(),
_bannerView.GetWidthInPixels());
}
private void OnBannerAdLoadFailed(LoadAdError error)
{
Debug.LogError("Banner view failed to load an ad with error : "
+ error);
}
#endregion
}
여기서 AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth
함수는 현재 인터페이스 방향에 대한 앵커 광고 위치의 배너 크기를 가져오는 데 사용됩니다. 앵커 광고 배너를 지정된 방향으로 미리 로드하려면 AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth
및 AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth
의 관련 함수를 사용하세요.