Reklamy pełnoekranowe zakrywają interfejs aplikacji, w której się wyświetlają. Wyświetlają się zwykle w naturalnych momentach przejściowych w aplikacji, np. podczas przerwy między poziomami gry. Gdy aplikacja wyświetla reklamę pełnoekranową, użytkownik może ją kliknąć i przejść do miejsca docelowego lub zamknąć i wrócić do aplikacji. Przykład.
Z tego przewodnika dowiesz się, jak zintegrować reklamy przejściowe z aplikacją Unity.
Wymagania wstępne
- Zapoznaj się z przewodnikiem dla początkujących.
Tworzenie reklamy pełnoekranowej
Pierwszym krokiem do wyświetlenia reklamy pośredniej jest utworzenie obiektu InterstitialAd
w skrypcie dołączonym do elementu GameObject
.
using GoogleMobileAds.Api;
...
private InterstitialAd interstitial;
private void RequestInterstitial()
{
#if UNITY_ANDROID
string adUnitId = "ca-app-pub-3940256099942544/1033173712";
#elif UNITY_IPHONE
string adUnitId = "ca-app-pub-3940256099942544/4411468910";
#else
string adUnitId = "unexpected_platform";
#endif
// Initialize an InterstitialAd.
this.interstitial = new InterstitialAd(adUnitId);
}
Konstruktor klasy InterstitialAd
ma ten parametr:
adUnitId
– identyfikator jednostki reklamowej AdMob, z którejInterstitialAd
ma wczytywać reklamy.
Pamiętaj, że w zależności od platformy różnie jednostki reklamowe są używane w różny sposób. Aby wysyłać żądania reklam na iOS, musisz użyć jednostki reklamowej na iOS, a aby wysyłać żądania na Androida – jednostki reklamowej na Androida.
Zawsze testuj reklamy za pomocą reklam testowych
Przykładowy kod powyżej zawiera identyfikator jednostki reklamowej, dzięki któremu możesz żądać reklam. Jest on specjalnie skonfigurowany tak, aby zwracać reklamy testowe, a nie produkcyjne, w przypadku każdego żądania, co czyni go bezpiecznym.
Gdy jednak zarejestrujesz aplikację w interfejsie AdMob i utworzysz własne identyfikatory jednostek reklamowych na potrzeby aplikacji, podczas jej tworzenia musisz wyraźnie skonfigurować urządzenie jako urządzenie testowe. To bardzo ważne. Testowanie z użyciem prawdziwych reklam (nawet jeśli nigdy ich nie klikasz) jest niezgodne z zasadami AdMob i może spowodować zawieszenie konta. Więcej informacji o tym, jak zawsze mieć dostęp do reklam testowych podczas tworzenia aplikacji, znajdziesz w artykule Reklamy testowe.
Wczytywanie reklamy
Po utworzeniu instancji InterstitialAd
kolejnym krokiem jest wczytanie reklamy.
To wszystko w przypadku metody loadAd()
w klasie InterstitialAd
. Przyjmuje ono argument AdRequest
, który zawiera informacje o czasie wykonywania (np. informacje o kierowaniu) dotyczące pojedynczego żądania reklamy.
Oto przykładowy sposób wczytywania reklamy:
using GoogleMobileAds.Api; ... private InterstitialAd interstitial; private void RequestInterstitial() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/1033173712"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/4411468910"; #else string adUnitId = "unexpected_platform"; #endif // Initialize an InterstitialAd. this.interstitial = new InterstitialAd(adUnitId); // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the interstitial with the request. this.interstitial.LoadAd(request); }
Wyświetlanie reklamy
Reklamy pełnoekranowe powinny wyświetlać się w naturalnych przerwach w aplikacji. Dobrym przykładem jest przerwa między poziomami w grze lub po wykonaniu zadania przez użytkownika.
Aby wyświetlić stronę pośrednią, użyj metody isLoaded()
, aby sprawdzić, czy zakończyła wczytywanie, a następnie wywołaj metodę show()
.
Reklama pełnoekranowa z poprzedniego przykładu kodu może być wyświetlana na końcu gry, jak pokazano poniżej.
private void GameOver()
{
if (this.interstitial.IsLoaded()) {
this.interstitial.Show();
}
}
Zdarzenia reklamowe
Aby jeszcze bardziej dostosować działanie reklamy, możesz podłączyć ją do wielu zdarzeń w cyklu życia reklamy, np. wczytywania, otwierania, zamykania itp. Aby nasłuchiwać tych zdarzeń, zarejestruj delegata dla odpowiedniego EventHandler
, jak pokazano poniżej.
using GoogleMobileAds.Api; ... private InterstitialAd interstitial; private void RequestInterstitial() { #if UNITY_ANDROID string adUnitId = "ca-app-pub-3940256099942544/1033173712"; #elif UNITY_IPHONE string adUnitId = "ca-app-pub-3940256099942544/4411468910"; #else string adUnitId = "unexpected_platform"; #endif // Initialize an InterstitialAd. this.interstitial = new InterstitialAd(adUnitId); // Called when an ad request has successfully loaded. this.interstitial.OnAdLoaded += HandleOnAdLoaded; // Called when an ad request failed to load. this.interstitial.OnAdFailedToLoad += HandleOnAdFailedToLoad; // Called when an ad is shown. this.interstitial.OnAdOpening += HandleOnAdOpening; // Called when the ad is closed. this.interstitial.OnAdClosed += HandleOnAdClosed; // Create an empty ad request. AdRequest request = new AdRequest.Builder().Build(); // Load the interstitial with the request. this.interstitial.LoadAd(request); } public void HandleOnAdLoaded(object sender, EventArgs args) { MonoBehaviour.print("HandleAdLoaded event received"); } public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args) { MonoBehaviour.print("HandleFailedToReceiveAd event received with message: " + args.Message); } public void HandleOnAdOpening(object sender, EventArgs args) { MonoBehaviour.print("HandleAdOpening event received"); } public void HandleOnAdClosed(object sender, EventArgs args) { MonoBehaviour.print("HandleAdClosed event received"); }
Zdarzenie OnAdFailedToLoad
zawiera argumenty specjalnego zdarzenia. Przekazuje instancję klasy HandleAdFailedToLoadEventArgs
z wartością Message
opisującym błąd:
public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
print("Interstitial failed to load: " + args.Message);
// Handle the ad failed to load event.
}
Zdarzenie dotyczące reklamy | Opis |
---|---|
OnAdLoaded |
Zdarzenie OnAdLoaded jest wykonywane po zakończeniu wczytywania reklamy. |
OnAdFailedToLoad |
Zdarzenie OnAdFailedToLoad jest wywoływane, gdy nie udaje się wczytać reklamy. Parametr Message opisuje rodzaj błędu, który wystąpił. |
OnAdOpening |
Ta metoda jest wywoływana, gdy reklama jest wyświetlana, zajmując ekran urządzenia. |
OnAdClosed |
Ta metoda jest wywoływana, gdy reklama pełnoekranowa zostanie zamknięta, ponieważ użytkownik kliknął ikonę zamknięcia lub użył przycisku Wstecz. Jeśli aplikacja wstrzymała wyjście dźwięku lub pętlę gry, możesz je wznowić. |
Usuwanie reklam pełnoekranowych
Po zakończeniu korzystania z elementu InterstitialAd
wywołaj metodę Destroy()
, zanim odniesiesz się do niej:
interstitial.Destroy();
To powiadamia wtyczkę, że obiekt nie jest już używany i że można odzyskać zajmowaną przez niego pamięć. Niewywołanie tej metody powoduje wycieki pamięci.
Sprawdzone metody
- Zastanów się, czy reklamy pełnoekranowe są odpowiednim typem reklamy dla Twojej aplikacji.
- Reklamy pełnoekranowe najlepiej sprawdzają się w aplikacjach z naturalnymi punktami przejścia. Taki punkt może powstać na przykład po zakończeniu zadania w aplikacji, takiego jak udostępnienie zdjęcia lub ukończenie poziomu gry. Użytkownik spodziewa się przerwy w działaniu, więc łatwo jest wyświetlić reklamę pełnoekranową bez zakłócania jego doświadczeń. Zastanów się, w jakich momentach w przebiegu działania aplikacji będą wyświetlane reklamy pełnoekranowe i jak użytkownik prawdopodobnie na nie zareaguje.
- Pamiętaj, aby wstrzymać działanie podczas wyświetlania reklamy pełnoekranowej.
- Dostępne są różne typy reklam pełnoekranowych: tekstowe, graficzne, wideo i inne. Pamiętaj, aby podczas wyświetlania przez aplikację reklamy interaktywnej wstrzymać korzystanie z niektórych zasobów, aby reklama mogła z nich korzystać. Na przykład, gdy wywołujesz wyświetlenie reklamy interwstylistycznej, zatrzymaj wszelkie dźwięki generowane przez aplikację. Możesz wznowić odtwarzanie dźwięków w obiekcie
onAdClosed()
, który zostanie wywołany, gdy użytkownik zakończy interakcję z reklamą. Dodatkowo rozważ tymczasowe wstrzymanie intensywnych zadań obliczeniowych (np. pętli gry) podczas wyświetlania reklamy. Dzięki temu użytkownik nie będzie mieć problemów z wolno działającą grafiką lub niereagującymi elementami graficznymi ani z zacinającymi się filmami. - Zaplanuj odpowiedni czas wczytywania.
- Podobnie jak w przypadku reklam pełnoekranowych ważne jest, aby wyświetlać je w odpowiednim momencie, ale też trzeba pamiętać, aby użytkownik nie musiał czekać na ich załadowanie. Wczytanie reklamy z wyprzedzeniem przez wywołanie
loadAd()
przed wywołaniemshow()
może zapewnić, że gdy nadejdzie czas wyświetlenia reklamy pełnoekranowej, będzie ona w aplikacji w pełni wczytana. - Nie zalewaj użytkownika reklamami.
- Chociaż zwiększenie częstotliwości wyświetlania reklam przejściowych w aplikacji może wydawać się świetnym sposobem na zwiększenie przychodów, może też pogorszyć wrażenia użytkownika i obniżyć współczynnik klikalności. Zadbaj o to, aby użytkownicy nie byli zbyt często przerywane, ponieważ uniemożliwia im to korzystanie z aplikacji.
Dodatkowe materiały
Przykłady
- Przykład HelloWorld – minimalna implementacja wszystkich formatów reklam