Адаптивные баннеры — это новое поколение адаптивной рекламы, обеспечивающее максимальную эффективность за счет оптимизации размера рекламы для каждого устройства. В отличие от смарт-баннеров, которые поддерживают только фиксированную высоту, адаптивные баннеры позволяют указать ширину объявления и использовать ее для определения оптимального размера объявления.
Чтобы выбрать лучший размер объявления, в адаптивных баннерах используются фиксированные соотношения сторон вместо фиксированной высоты. В результате рекламные баннеры занимают более постоянную часть экрана на всех устройствах и предоставляют возможности для повышения производительности.
При работе с адаптивными баннерами обратите внимание, что они всегда будут возвращать постоянный размер для данного устройства и ширины. Протестировав макет на конкретном устройстве, вы можете быть уверены, что размер объявления не изменится. Однако размер баннера может меняться на разных устройствах. Следовательно, мы рекомендуем учитывать разницу в высоте объявления в макете. В редких случаях полный адаптивный размер может оказаться не заполненным, и вместо этого в этом месте будет размещено объявление стандартного размера.
Предварительные условия
- Следуйте инструкциям из руководства по началу работы о том, как импортировать плагин Mobile Ads Unity и включить Mobile Ads SDK .
Когда использовать адаптивные баннеры
Адаптивные баннеры предназначены для полной замены как стандартного размера баннера 320x50, так и формата смарт-баннера, который они заменяют.
Эти размеры баннеров обычно используются в качестве привязанных баннеров, которые обычно закрепляются в верхней или нижней части экрана.
Для таких привязанных баннеров соотношение сторон при использовании адаптивных баннеров будет аналогично соотношению стандартной рекламы размером 320x50, как можно увидеть на трех примерах ниже:
баннер 320х50 | Адаптивный баннер | Смарт-баннер |
Адаптивный баннер позволяет лучше использовать доступный размер экрана. Кроме того, по сравнению со смарт-баннером, адаптивный баннер является лучшим выбором, потому что:
Он использует любую предоставленную вами ширину вместо принудительного полноэкранного режима, что позволяет вам учитывать безопасную область на 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/admob/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
.