Reklamy pełnoekranowe zakrywają interfejs aplikacji, w której się wyświetlają, dopóki użytkownik ich nie zamknie. Takie reklamy wyświetlają się zwykle w naturalnych momentach przejściowych w aplikacji, np. między działaniami lub podczas przerwy między poziomami gry. Gdy aplikacja wyświetla reklamę pełnoekranową, użytkownik może kliknąć reklamę i przejść do miejsca docelowego lub zamknąć ją i wrócić do aplikacji. Studium przypadku
Z tego przewodnika dowiesz się, jak zintegrować reklamy pełnoekranowe z aplikacjami na Androida i iOS przy użyciu pakietu SDK do reklam mobilnych Google w C++.
Wymagania wstępne
- Kliknij Rozpocznij.
- (tylko Android) Znajomość odwołań JNI
jobject
(patrz wskazówki dotyczące JNI na Androidzie).
Zawsze testuj za pomocą reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych zamiast reklam produkcyjnych. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.
Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora jednostki reklamowej testowej w przypadku reklam pełnoekranowych, który różni się w zależności od platformy urządzenia:
- System Android:
ca-app-pub-3940256099942544/1033173712
- System iOS:
ca-app-pub-3940256099942544/4411468910
Zostały one specjalnie skonfigurowane tak, aby zwracać reklamy testowe w przypadku każdego żądania. Możesz ich używać w swoich aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, aby przed opublikowaniem aplikacji zastąpić go własnym identyfikatorem jednostki reklamowej.
Więcej informacji o działaniu reklam testowych w pakiecie SDK do reklam mobilnych znajdziesz w artykule Reklamy testowe.
Implementacja
Główne etapy integracji reklam pełnoekranowych to:
- Wczytaj reklamę.
- Zarejestruj wywołania zwrotne.
- Wyświetl reklamę i obsłuż zdarzenia związane z jej cyklem życia.
Konfigurowanie InterstitialAd
Reklamy pełnoekranowe są wyświetlane w obiektach InterstitialAd
, więc pierwszym krokiem w integracji reklam pełnoekranowych z aplikacją jest utworzenie i zainicjowanie obiektu InterstitialAd
.
Dodaj do kodu C++ aplikacji ten nagłówek:
#include "firebase/gma/interstial_ad.h"
Zadeklaruj i utwórz instancję obiektu
InterstitialAd
:firebase::gma::InterstitialAd* interstitial_ad; interstitial_ad = new firebase::gma::InterstitialAd();
Zainicjuj instancję
InterstitialAd
za pomocą widoku nadrzędnego przekształconego w typAdParent
. Widok nadrzędny to odwołanie JNIjobject
do elementu AndroidActivity
lub wskaźnik do elementu iOSUIView
.// my_ad_parent is a jobject reference to an Android Activity or // a pointer to an iOS UIView. firebase::gma::AdParent ad_parent = static_cast<firebase::gma::AdParent>(my_ad_parent); firebase::Future<void> result = interstitial_ad->Initialize(ad_parent);
Zamiast przechowywać przyszłość jako zmienną, możesz okresowo sprawdzać stan operacji inicjowania, wywołując
InitializeLastResult()
na obiekcieInterstitialAd
. Może to być przydatne do śledzenia procesu inicjowania w globalnej pętli gry.// Monitor the status of the future in your game loop: firebase::Future<void> result = interstitial_ad->InitializeLastResult(); if (result.status() == firebase::kFutureStatusComplete) { // Initialization completed. if(future.error() == firebase::gma::kAdErrorCodeNone) { // Initialization successful. } else { // An error has occurred. } } else { // Initialization on-going. }
Więcej informacji o pracy z firebase::Future
znajdziesz w artykule Monitorowanie stanu zakończenia wywołań metod za pomocą obiektów Futures.
Wczytywanie reklamy
Wczytywanie reklamy odbywa się za pomocą metody LoadAd()
w obiekcie InterstitialAd
. Metoda load wymaga zainicjowania obiektu InterstitialAd
oraz podania identyfikatora jednostki reklamowej i obiektu AdRequest
. Zwracany jest firebase::Future
, którego możesz użyć do monitorowania stanu i wyniku operacji wczytywania.
Poniższy kod pokazuje, jak wczytać reklamę po prawidłowym zainicjowaniu InterstitialAd
:
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = interstitial_ad->LoadAd(interstitial_ad_unit_id, ad_request);
Rejestrowanie wywołań zwrotnych
Aby otrzymywać powiadomienia o wyświetlaniu reklam pełnoekranowych i zdarzeniach cyklu życia, musisz rozszerzyć klasę FullScreenContentListener
. Niestandardową podklasę FullScreenContentListener
można zarejestrować za pomocą metody InterstitialAd::SetFullScreenContentListener()
. Będzie ona otrzymywać wywołania zwrotne, gdy reklama zostanie wyświetlona (z powodzeniem lub bez powodzenia) oraz gdy zostanie zamknięta.
Poniższy kod pokazuje, jak rozszerzyć klasę i przypisać ją do reklamy:
class ExampleFullScreenContentListener : public firebase::gma::FullScreenContentListener { public: ExampleFullScreenContentListener() {} void OnAdClicked() override { // This method is invoked when the user clicks the ad. } void OnAdDismissedFullScreenContent() override { // This method is invoked when the ad dismisses full screen content. } void OnAdFailedToShowFullScreenContent(const AdError& error) override { // This method is invoked when the ad failed to show full screen content. // Details about the error are contained within the AdError parameter. } void OnAdImpression() override { // This method is invoked when an impression is recorded for an ad. } void OnAdShowedFullScreenContent() override { // This method is invoked when the ad showed its full screen content. } }; ExampleFullScreenContentListener* full_screen_content_listener = new ExampleFullScreenContentListener(); interstitial_ad->SetFullScreenContentListener(full_screen_content_listener);
InterstitialAd
jest obiektem jednorazowego użytku. Oznacza to, że po wyświetleniu reklamy pełnoekranowej nie można jej ponownie wyświetlić. Sprawdzona metoda to wczytywanie kolejnej reklamy pełnoekranowej w metodzie OnAdDismissedFullScreenContent()
FullScreenContentListener
, aby następna reklama pełnoekranowa zaczęła się wczytywać od razu po zamknięciu poprzedniej.
Wyświetlanie reklamy
Reklamy pełnoekranowe powinny się wyświetlać podczas naturalnych przerw w działaniu aplikacji. Dobrym przykładem jest przerwa między poziomami gry lub po wykonaniu zadania przez użytkownika.
Funkcja FullScreenContentListener
może służyć do określania, kiedy reklama wyświetliła treść na pełnym ekranie, ale przyszła wartość zwracana przez funkcję Show()
będzie też sygnalizować, kiedy reklama została wyświetlona.
firebase::Future<void> result = interstitial_ad->Show();
Sprawdzone metody
- Zastanów się, czy reklamy pełnoekranowe są odpowiednim typem reklam dla Twojej aplikacji.
- Reklamy pełnoekranowe sprawdzają się najlepiej w aplikacjach z naturalnymi punktami przejścia. Takim punktem może być zakończenie zadania w aplikacji, np. 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 wrażeń. Zastanów się, w których miejscach w aplikacji będziesz wyświetlać reklamy pełnoekranowe i jak użytkownik może na nie reagować.
- 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. Ważne jest, aby w momencie wyświetlania reklamy pełnoekranowej aplikacja zawieszała korzystanie z niektórych zasobów, aby umożliwić reklamie ich wykorzystanie. Na przykład, gdy wywołujesz funkcję wyświetlania reklamy pełnoekranowej, pamiętaj, aby wstrzymać odtwarzanie dźwięku przez aplikację. Możesz wznowić odtwarzanie dźwięków w metodzie
OnAdDismissedFullScreenContent
zainstalowanegoFullScreenContentListener
, która zostanie wywołana, gdy użytkownik zakończy interakcję z reklamą. Podczas wyświetlania reklamy warto też tymczasowo wstrzymać intensywne zadania obliczeniowe (np. pętlę gry). Dzięki temu użytkownik nie będzie miał problemów z powolnym działaniem lub brakiem reakcji grafiki ani z zacinaniem się filmu. - Zapewnij odpowiedni czas ładowania.
- Podobnie jak ważne jest wyświetlanie reklam pełnoekranowych w odpowiednim momencie, ważne jest też, aby użytkownik nie musiał czekać na ich załadowanie. Wcześniejsze wczytanie reklamy przed jej wyświetleniem może zapewnić, że aplikacja będzie miała w pogotowiu w pełni załadowaną reklamę pełnoekranową, gdy nadejdzie czas na jej wyświetlenie.
- Nie zasypuj użytkownika reklamami.
- Zwiększenie częstotliwości wyświetlania reklam pełnoekranowych w aplikacji może się wydawać świetnym sposobem na zwiększenie przychodów, ale może też pogorszyć wrażenia użytkowników i obniżyć współczynniki klikalności. Zadbaj o to, aby użytkownicy nie byli tak często przerywani, że nie będą mogli korzystać z Twojej aplikacji.
- Nie używaj obiektu Future zakończenia wczytywania do wyświetlania reklamy pełnoekranowej.
- Może to negatywnie wpłynąć na wygodę użytkowników. Zamiast tego wczytaj reklamę z wyprzedzeniem, zanim będziesz musiał ją wyświetlić.
Dodatkowe materiały
Przykład w GitHubie
- Wyświetl kod źródłowy naszej przykładowej aplikacji do szybkiego rozpoczęcia w GitHubie.
Samouczki wideo w Mobile Ads Garage
Historie sukcesu
Dalsze kroki
- Jeśli nie masz jeszcze własnej pełnoekranowej jednostki reklamowej, utwórz ją w interfejsie AdMob.
- Dowiedz się więcej o kierowaniu reklam i wytycznych dotyczących reklam pełnoekranowych.