Адаптивные баннеры — это новое поколение адаптивной рекламы, обеспечивающее максимальную эффективность за счёт оптимизации размера рекламы для каждого устройства. Адаптивные баннеры являются усовершенствованием смарт-баннеров, которые поддерживали только фиксированную высоту, и позволяют указать ширину объявления и использовать её для определения оптимального размера.
Чтобы выбрать оптимальный размер рекламы, адаптивные баннеры используют фиксированные пропорции вместо фиксированной высоты. Это позволяет баннерам занимать более равномерную часть экрана на всех устройствах и повышает производительность.
При работе с адаптивными баннерами обратите внимание, что они всегда возвращают постоянный размер для заданного устройства и ширины. Протестировав макет на конкретном устройстве, вы можете быть уверены, что размер объявления не изменится. Однако размер баннера может меняться на разных устройствах. Поэтому мы рекомендуем учитывать в макете разницу в высоте объявления. В редких случаях адаптивный баннер может быть не заполнен полностью, и вместо этого креатив стандартного размера будет центрирован в этом слоте.
Предпосылки
Когда использовать адаптивные баннеры
Адаптивные баннеры предназначены для замены как стандартного размера баннера 320x50, так и формата смарт-баннера, который они заменяют.
Баннеры таких размеров обычно используются в качестве закрепленных баннеров, которые обычно крепятся к верхней или нижней части экрана.
Для таких закрепленных баннеров соотношение сторон при использовании адаптивных баннеров будет аналогично соотношению сторон стандартной рекламы размером 320x50, как можно увидеть в трех примерах ниже:
![]() баннер 320x50 | ![]() Адаптивный баннер | ![]() Смарт-баннер |
Адаптивный баннер эффективнее использует доступный размер экрана. Кроме того, по сравнению со смарт-баннером, адаптивный баннер является лучшим выбором, поскольку:
Он использует любую указанную вами ширину, а не принудительно устанавливает ширину на весь экран, что позволяет учитывать безопасную область на iOS и отображать вырезанные элементы на Android.
Он выбирает оптимальную высоту для конкретного устройства, а не поддерживает постоянную высоту для устройств разного размера, что смягчает эффект фрагментации устройств.
Заметки о реализации
При реализации адаптивных баннеров в вашем приложении учитывайте следующие моменты:
- Вам необходимо знать ширину области просмотра, в которой будет размещена реклама, а также учитывать ширину устройства и любые безопасные зоны или вырезы, которые применимы .
- Убедитесь, что фон вашего рекламного объявления непрозрачен, чтобы соответствовать политикам AdMob при показе объявлений меньшего размера, которые не заполняют рекламное место.
- Убедитесь, что вы используете последнюю версию плагина Google Mobile Ads Unity. Для медиации используйте последнюю версию каждого адаптера медиации.
- Адаптивные размеры баннеров рассчитаны на максимальную ширину. В большинстве случаев это будет полная ширина экрана используемого устройства. Обязательно учитывайте безопасные зоны.
- Google Mobile Ads SDK оптимизирует размер баннера, установив высоту объявления для заданной ширины при использовании адаптивных API AdSize.
- Существует три метода получения размера объявления для адаптивного размещения:
AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth
для альбомной ориентации,AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth
для портретной ориентации иAdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth
для текущей ориентации на момент выполнения. - Размер, возвращаемый для заданной ширины на заданном устройстве, всегда будет одинаковым, поэтому, протестировав макет на определенном устройстве, вы можете быть уверены, что размер объявления не изменится.
- Высота закрепленного баннера никогда не должна превышать 15% высоты устройства или 90 пикселей, независимых от плотности, и никогда не должна быть меньше 50 пикселей, независимых от плотности.
- Для полноэкранных баннеров можно использовать флаг
AdSize.FullWidth
вместо указания конкретной ширины.
Быстрый старт
Чтобы реализовать простой адаптивный якорный баннер, выполните следующие действия.
- Получите размер адаптивного баннера. Полученный размер будет использован для запроса вашего адаптивного баннера. Чтобы получить размер адаптивного баннера, убедитесь, что вы:
- Получите ширину используемого устройства в пикселях, не зависящих от плотности, или задайте собственную ширину, если вы не хотите использовать всю ширину экрана. Поскольку API Unity, такие как
Screen.width
, возвращают абсолютное значение в пикселях, необходимо разделить значение на масштаб устройства (который можно получить изMobileAds.Utils.GetDeviceScale()
). - Для баннеров полной ширины используйте флаг
AdSize.FullWidth
. - Используйте соответствующие статические методы в классе размера рекламы, например
AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width)
чтобы получить адаптивный объектAdSize
для текущей ориентации.
- Получите ширину используемого устройства в пикселях, не зависящих от плотности, или задайте собственную ширину, если вы не хотите использовать всю ширину экрана. Поскольку API Unity, такие как
- Создайте объект
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
.