Banery adaptacyjne to następna generacja reklam elastycznych, która maksymalizuje skuteczność, ponieważ optymalizuje rozmiar reklamy na każdym urządzeniu. To ulepszona wersja banerów inteligentnych, które obsługiwały jedynie ustalone wysokości. Banery adaptacyjne pozwalają natomiast określić szerokość reklamy i wykorzystują te dane do wyznaczenia optymalnego rozmiaru reklamy.
Aby dobrać najlepszy rozmiar reklamy, banery adaptacyjne używają stałych współczynników proporcji zamiast stałych wysokości. Sprawia to, że banery reklamowe zajmują bardziej spójną część ekranu na różnych urządzeniach i umożliwiają poprawę skuteczności.
Pamiętaj, że banery adaptacyjne zawsze zwracają stały rozmiar dla danego urządzenia i danej szerokości. Po przetestowaniu układu na danym urządzeniu możesz mieć pewność, że rozmiar reklamy się nie zmieni. Rozmiar kreacji banera może się jednak zmieniać w zależności od urządzenia. Dlatego zalecamy, aby układ uwzględniał różnice w wysokości reklamy. W rzadkich przypadkach pełny rozmiar adaptacyjny może nie zostać wypełniony, a w tym miejscu będzie wyświetlana kreacja o standardowym rozmiarze wyśrodkowana w boksie.
Wymagania wstępne
- Postępuj zgodnie z instrukcjami z przewodnika Pierwsze kroki dotyczącymi importowania wtyczki reklam mobilnych Unity i dodawania pakietu SDK do reklam mobilnych.
Kiedy używać banerów adaptacyjnych
Banery adaptacyjne zostały zaprojektowane jako niewymagający edytowania kodu zamiennik zgodnych ze standardem branżowym banerów w rozmiarze 320 x 50 oraz banerów inteligentnych, które bezpośrednio zastępują.
Te rozmiary banerów są często używane jako banery zakotwiczone, które są zazwyczaj zablokowane u góry lub u dołu ekranu.
W przypadku takich zakotwiczonych banerów współczynnik proporcji przy użyciu banerów adaptacyjnych będzie podobny do współczynnika standardowej reklamy 320 x 50, jak widać na tych 3 przykładach:
Baner 320 x 50 |
Baner adaptacyjny |
Baner inteligentny |
Baner adaptacyjny lepiej wykorzystuje dostępny rozmiar ekranu. Dodatkowo w porównaniu z banerem inteligentnym baner adaptacyjny jest lepszym wyborem, ponieważ:
Używa ona dowolnej podanej przez Ciebie szerokości, zamiast narzucać szerokość pełnego ekranu, co umożliwia uwzględnienie bezpiecznego obszaru na iOS i wyświetlanie wycięć na Androidzie.
Wybiera ona optymalną wysokość dla konkretnego urządzenia, zamiast utrzymywać stałą wysokość na urządzeniach o różnych rozmiarach, co ogranicza skutki fragmentacji urządzeń.
Uwagi dotyczące implementacji
Podczas implementowania banerów adaptacyjnych w aplikacji pamiętaj o tych kwestiach:
- Musisz znać szerokość widoku, w którym będzie umieszczona reklama. Należy wziąć pod uwagę szerokość urządzenia oraz odpowiednie bezpieczne strefy lub wycięcia.
- Aby zachować zgodność z zasadami AdMob, gdy wyświetlane są mniejsze rozmiary reklam, które nie wypełniają boksu reklamowego, upewnij się, że tło widoku reklamy jest nieprzezroczyste.
- Upewnij się, że używasz najnowszej wersji wtyczki Google Mobile Ads w Unity. W przypadku zapośredniczenia używaj najnowszej wersji każdego adaptera zapośredniczenia.
- Rozmiary banerów adaptacyjnych są zaprojektowane tak, aby najlepiej sprawdzać się przy pełnej dostępnej szerokości. W większości przypadków będzie to pełna szerokość ekranu urządzenia. Pamiętaj o odpowiednich bezpiecznych obszarach.
- Pakiet SDK do reklam mobilnych Google dostosuje rozmiar banera do zoptymalizowanej wysokości reklamy dla danej szerokości, gdy korzystasz z adaptacyjnych interfejsów AdSize API.
- Istnieją 3 metody określania rozmiaru reklamy adaptacyjnej:
AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth
dla orientacji poziomej,AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth
dla orientacji pionowej iAdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth
dla orientacji aktualnej w momencie wykonania. - Rozmiar zwrócony dla danej szerokości na danym urządzeniu będzie zawsze taki sam, dlatego po przetestowaniu układu na danym urządzeniu możesz mieć pewność, że rozmiar reklamy się nie zmieni.
- Wysokość zadokowanego banera nigdy nie przekracza 15% wysokości urządzenia lub 90 pikseli niezależnie od gęstości pikseli. Nie może być też mniejsza niż 50 pikseli niezależnie od gęstości pikseli.
- W przypadku banerów o pełnej szerokości zamiast podawania konkretnej szerokości możesz użyć flagi
AdSize.FullWidth
.
Krótkie wprowadzenie
Aby wdrożyć prosty zakotwiczony baner adaptacyjny, wykonaj podane niżej czynności.
- Uzyskaj rozmiar banera adaptacyjnego. Uzyskany rozmiar będzie wykorzystywany w żądaniach banera adaptacyjnego. Aby uzyskać rozmiar reklamy adaptacyjnej, pamiętaj o tych kwestiach:
- Uzyskaj szerokość używanego urządzenia w pikselach niezależnych od gęstości lub ustaw własną szerokość, jeśli nie chcesz używać pełnej szerokości ekranu.
Interfejsy API Unity, takie jak
Screen.width
, zwracają wartości bezwzględne w pikselach, dlatego musisz podzielić wynik przez skalę urządzenia (można ją pobrać z funkcjiMobileAds.Utils.GetDeviceScale()
). - Użyj flagi
AdSize.FullWidth
w przypadku banerów o pełnej szerokości. - Użyj odpowiednich metod statycznych klasy rozmiaru reklamy, takich jak
AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(width)
, aby uzyskać obiektAdSize
dostosowujący się do bieżącej orientacji.
- Uzyskaj szerokość używanego urządzenia w pikselach niezależnych od gęstości lub ustaw własną szerokość, jeśli nie chcesz używać pełnej szerokości ekranu.
Interfejsy API Unity, takie jak
- Utwórz obiekt
BannerView
z identyfikatorem jednostki reklamowej, rozmiarem adaptacyjnym i odpowiednim miejscem na reklamę. - Utwórz obiekt żądania reklamy i załaduj baner za pomocą metody
LoadAd()
w przygotowanym widoku reklamy, tak jak w przypadku zwykłego żądania banera.
Przykładowy kod
Oto przykładowy skrypt, który wczytuje i ponownie wczytuje baner dostosowując go do szerokości ekranu, biorąc pod uwagę bezpieczny obszar:
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
}
W tym przypadku funkcja
AdSize.GetCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth
służy do uzyskania rozmiaru banera w zakotwiczonej pozycji dla bieżącej orientacji interfejsu. Aby wstępnie załadować baner kotwiczony w danej orientacji, użyj odpowiedniej funkcji z AdSize.GetPortraitAnchoredAdaptiveBannerAdSizeWithWidth
i AdSize.GetLandscapeAnchoredAdaptiveBannerAdSizeWithWidth
.