Wyświetlenia banerów to prostokątne reklamy graficzne lub tekstowe, które zajmują miejsce na ekranie. Pozostają na ekranie, gdy użytkownicy wchodzą w interakcję z aplikacją, i mogą być automatycznie odświeżane po upływie określonego czasu. Jeśli dopiero zaczynasz przygodę z reklamami mobilnymi, warto zacząć od nich.
Z tego przewodnika dowiesz się, jak zintegrować wyświetlenia banerów w aplikacji Unity. Oprócz fragmentów kodu i instrukcji zawiera on też informacje o prawidłowym dobieraniu rozmiarów banerów oraz linki do dodatkowych materiałów.
Wymagania wstępne
- Zapoznaj się z przewodnikiem dla początkujących.
Zawsze testuj reklamy za pomocą reklam testowych
Podany niżej przykładowy kod zawiera identyfikator jednostki reklamowej, którego możesz użyć do żądania reklam testowych. Jest on specjalnie skonfigurowany tak, aby zwracać reklamy testowe, a nie reklamy produkcyjne w przypadku każdego żądania, co czyni go bezpiecznym w użyciu.
Po zarejestrowaniu aplikacji w interfejsie internetowym Ad Managera i utworzeniu własnych identyfikatorów jednostek reklamowych na potrzeby aplikacji musisz jednak podczas jej tworzenia wyraźnie skonfigurować urządzenie jako urządzenie testowe.
/21775744923/example/adaptive-banner
Inicjowanie pakietu SDK do reklam mobilnych
Przed wczytaniem reklam zainicjuj pakiet SDK do reklam mobilnych w aplikacji, wywołując funkcję MobileAds.Initialize()
. Wystarczy to zrobić tylko raz, najlepiej podczas uruchamiania aplikacji.
using GoogleMobileAds;
using GoogleMobileAds.Api;
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
public void Start()
{
// Initialize the Google Mobile Ads SDK.
MobileAds.Initialize((InitializationStatus initStatus) =>
{
// This callback is called once the MobileAds SDK is initialized.
});
}
}
Jeśli korzystasz z zapośredniczenia, przed wczytaniem reklam zaczekaj na wywołanie zwrotne, aby mieć pewność, że wszystkie adaptery zapośredniczenia są zainicjowane.
Przykład banera
Przykładowy kod poniżej zawiera szczegółowe informacje o używaniu widoku banera. W tym przykładzie tworzysz instancję widoku banera, używasz funkcji AdManagerAdRequest
, aby wczytać reklamę do widoku banera, a potem rozszerzasz jego możliwości, obsługując zdarzenia cyklu życia.
Tworzenie widoku banera
Pierwszym krokiem w używaniu widoku banera jest utworzenie jego wystąpienia w skrypcie C# dołączonym do GameObject
.
// This ad unit is configured to always serve test ads.
private string _adUnitId = "/21775744923/example/adaptive-banner";
AdManagerBannerView _bannerView;
/// <summary>
/// Creates a 320x50 banner view at top of the screen.
/// </summary>
public void CreateBannerView()
{
Debug.Log("Creating banner view");
// If we already have a banner, destroy the old one.
if (_bannerView != null)
{
DestroyAd();
}
// Create a 320x50 banner at top of the screen
_bannerView = new AdManagerBannerView(_adUnitId, AdSize.Banner, AdPosition.Top);
}
Konstruktor obiektu AdManagerBannerView
ma te parametry:
adUnitId
: identyfikator jednostki reklamowej, z którejAdManagerBannerView
ma wczytywać reklamy.AdSize
: rozmiar reklamy, którego chcesz użyć. Więcej informacji znajdziesz w artykule Rozmiary banerów.AdPosition
: pozycja, na której powinny się wyświetlać wyświetlenia banera. WyliczeniowaAdPosition
zawiera listę prawidłowych wartości pozycji reklamy.
Zwróć uwagę, jak różne jednostki reklamowe są używane w zależności od platformy. Do wysyłania żądań reklam na iOS musisz użyć jednostki reklamowej na iOS, a do wysyłania żądań na Androida – jednostki reklamowej na Androida.
(Opcjonalnie) Tworzenie widoku banera z niestandardową pozycją
Aby uzyskać większą kontrolę nad tym, gdzie AdManagerBannerView
jest umieszczany na ekranie, niż to oferują wartości AdPosition
, użyj konstruktora, który ma współrzędne x i y jako parametry:
// Create a 320x50 banner views at coordinate (0,50) on screen.
_bannerView = new AdManagerBannerView(_adUnitId, AdSize.Banner, 0, 50);
Lewy górny róg elementu AdManagerBannerView
jest umieszczony w punktach x i y przekazanych konstruktorowi, gdzie punkt początkowy znajduje się w lewym górnym rogu ekranu.
(Opcjonalnie) Tworzenie widoku banera o niestandardowym rozmiarze
Oprócz stałej wartości AdSize
możesz też określić niestandardowy rozmiar reklamy:
// Use the AdSize argument to set a custom size for the ad.
AdSize adSize = new AdSize(250, 250);
_bannerView = new AdManagerBannerView(_adUnitId, adSize, AdPosition.Bottom);
(Opcjonalnie) Wiele rozmiarów reklam
Ad Manager umożliwia określenie kilku rozmiarów reklam, które mogą być wyświetlane w elementach AdManagerBannerView
. Zanim wdrożysz tę funkcję w SDK, utwórz element zamówienia kierowany na te same jednostki reklamowe powiązane z kreacjami o różnych rozmiarach.
W aplikacji prześlij wiele parametrów AdSize
do funkcji ValidAdSizes
:
var adView = new AdManagerBannerView(_adUnitId, AdSize.Banner, AdPosition.Top);
adView.ValidAdSizes = new List<AdSize>
{
AdSize.Banner, new AdSize(120, 20), new AdSize(250, 250),
};
Jeśli AdManagerAdView
zmieni rozmiar w momencie odświeżania, układ powinien automatycznie dostosować się do nowego rozmiaru. Domyślnie AdManagerAdView
ma rozmiar podany w pierwszym parametrze, dopóki nie zostanie zwrócona kolejna reklama.
Ładowanie banera reklamowego
Gdy AdManagerBannerView
będzie już gotowy, załaduj reklamę za pomocą metody LoadAd()
w klasie AdManagerBannerView
. Używa ona parametru , który zawiera informacje o czasie wykonywania, takie jak informacje o kierowaniu, etykiety wykluczeń i identyfikator wydawcy.
/// <summary>
/// Creates the banner view and loads a banner ad.
/// </summary>
public void LoadAd()
{
// create an instance of a banner view first.
if(_bannerView == null)
{
CreateAdManagerBannerView();
}
// create our request used to load the ad.
var adRequest = new AdManagerAdRequest();
// send the request to load the ad.
Debug.Log("Loading banner ad.");
_bannerView.LoadAd(adRequest);
}
Nasłuchiwanie zdarzeń wyświetlenia banera
Aby dostosować działanie reklamy, możesz podłączyć ją do wielu zdarzeń w cyklu życia reklamy, np. wczytywania, otwierania lub zamykania. Aby odbierać te zdarzenia, zarejestruj delegata:
/// <summary>
/// listen to events the banner view may raise.
/// </summary>
private void ListenToAdEvents()
{
// Raised when an ad is loaded into the banner view.
_bannerView.OnBannerAdLoaded += () =>
{
Debug.Log("Banner view loaded an ad with response : "
+ _bannerView.GetResponseInfo());
};
// Raised when an ad fails to load into the banner view.
_bannerView.OnBannerAdLoadFailed += (LoadAdError error) =>
{
Debug.LogError("Banner view failed to load an ad with error : "
+ error);
};
// Raised when the ad is estimated to have earned money.
_bannerView.OnAdPaid += (AdValue adValue) =>
{
Debug.Log(String.Format("Banner view paid {0} {1}.",
adValue.Value,
adValue.CurrencyCode));
};
// Raised when an impression is recorded for an ad.
_bannerView.OnAdImpressionRecorded += () =>
{
Debug.Log("Banner view recorded an impression.");
};
// Raised when a click is recorded for an ad.
_bannerView.OnAdClicked += () =>
{
Debug.Log("Banner view was clicked.");
};
// Raised when an ad opened full screen content.
_bannerView.OnAdFullScreenContentOpened += () =>
{
Debug.Log("Banner view full screen content opened.");
};
// Raised when the ad closed full screen content.
_bannerView.OnAdFullScreenContentClosed += () =>
{
Debug.Log("Banner view full screen content closed.");
};
}
Zniszcz widok banera
Po zakończeniu korzystania z widoku banera zadzwoń pod numer Destroy()
, aby zwolnić zasoby.
/// <summary>
/// Destroys the banner view.
/// </summary>
public void DestroyAd()
{
if (_bannerView != null)
{
Debug.Log("Destroying banner view.");
_bannerView.Destroy();
_bannerView = null;
}
}
Znakomicie. Twoja aplikacja jest teraz gotowa do wyświetlania reklam typu baner.
Odświeżanie reklamy
Jeśli jednostka reklamowa jest skonfigurowana tak, aby się odświeżać, nie musisz prosić o wyświetlenie kolejnej reklamy, gdy nie uda się jej załadować. Pakiet SDK do reklam mobilnych Google uwzględnia częstotliwość odświeżania określoną w interfejsie Ad Managera. Jeśli nie masz włączonego odświeżania, prześlij nowe żądanie. Więcej informacji o odświeżaniu jednostek reklamowych, np. o ustalaniu częstotliwości odświeżania, znajdziesz w artykule Częstotliwość odświeżania reklam w aplikacjach mobilnych.
Rozmiary banerów
Tabela poniżej zawiera standardowe rozmiary banerów.
Rozmiar w dp (szer. x wys.) | Opis | Dostępność | stała AdSize |
---|---|---|---|
320 x 50 | Standardowy baner | Telefony i tablety | BANNER |
320 x 100 | Duży baner | Telefony i tablety | LARGE_BANNER |
300 x 250 | Średni prostokąt IAB | Telefony i tablety | MEDIUM_RECTANGLE |
468 x 60 | Baner pełnowymiarowy IAB | Tablety | FULL_BANNER |
728 x 90 | Tabela wyników IAB | Tablety | LEADERBOARD |
Podana szerokość x wysokość dostosowująca się do treści | Baner adaptacyjny | Telefony i tablety | Nie dotyczy |
Szerokość ekranu x 32|50|90 | Inteligentny baner | Telefony i tablety | SMART_BANNER |
Dowiedz się więcej o banerach adaptacyjnych, które mają zastąpić inteligentne banery. |
Zdarzenia w aplikacjach
Zdarzenia w aplikacjach umożliwiają tworzenie reklam, które mogą wysyłać komunikaty do kodu aplikacji. Aplikacja może następnie podejmować działania na podstawie tych wiadomości.
Zdarzenia aplikacji związane z Ad Managerem możesz nasłuchiwać za pomocą funkcji AppEvent
. Zdarzenia te mogą wystąpić w dowolnym momencie cyklu życia reklamy, nawet przed wywołaniem metody load.
namespace GoogleMobileAds.Api.AdManager;
/// The App event message sent from the ad.
public class AppEvent
{
// Name of the app event.
string Name;
// Argument passed from the app event.
string Value;
}
OnAppEventReceived
jest wywoływane, gdy w reklamie wystąpi zdarzenie aplikacji. Oto przykład sposobu obsługi tego zdarzenia w kodzie:
_bannerview.OnAppEventReceived += (AppEvent args) =>
{
Debug.Log($"Received app event from the ad: {args.Name}, {args.Value}.");
};
Oto przykładowy sposób zmiany koloru tła aplikacji w zależności od zdarzenia aplikacji o nazwie koloru:
_bannerview.OnAppEventReceived += (AppEvent args) =>
{
if (args.Name == "color")
{
Color color;
if (ColorUtility.TryParseColor(arg.Value, out color))
{
gameObject.GetComponent<Renderer>().material.color = color;
}
}
};
A tutaj jest odpowiednia kreacja, która wysyła zdarzenie aplikacji do kolorowania:
<html>
<head>
<script src="//www.gstatic.com/afma/api/v1/google_mobile_app_ads.js"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
// Send a color=green event when ad loads.
admob.events.dispatchAppEvent("color", "green");
document.getElementById("ad").addEventListener("click", function() {
// Send a color=blue event when ad is clicked.
admob.events.dispatchAppEvent("color", "blue");
});
});
</script>
<style>
#ad {
width: 320px;
height: 50px;
top: 0px;
left: 0px;
font-size: 24pt;
font-weight: bold;
position: absolute;
background: black;
color: white;
text-align: center;
}
</style>
</head>
<body>
<div id="ad">Carpe diem!</div>
</body>
</html>
Dodatkowe materiały
- Przykład HelloWorld: minimalna implementacja wszystkich formatów reklam.