Reklamy pełnoekranowe zakrywają interfejs aplikacji, 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 w nią kliknąć i przejść do miejsca docelowego lub zamknąć reklamę i wrócić do aplikacji. Studium przypadku
Z tego przewodnika dowiesz się, jak zintegrować reklamy pełnoekranowe z aplikacjami na Androida i iOS za pomocą pakietu SDK do reklam mobilnych Google w C++.
Wymagania wstępne
- Wykonaj czynności opisane w sekcji Pierwsze kroki.
- (Tylko Android) Znajomość referencji JNI
jobject(zobacz wskazówki dotyczące JNI na Androidzie).
Zawsze przeprowadzaj testy z użyciem reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie aktywnych reklam produkcyjnych. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.
Najłatwiejszym sposobem wczytywania reklam testowych jest użycie naszego specjalnego identyfikatora testowej jednostki reklamowej na potrzeby 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ć we własnych aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj, aby przed opublikowaniem aplikacji zastąpić go własnym identyfikatorem jednostki reklamowej.
Więcej informacji o tym, jak działają reklamy testowe w pakiecie SDK do wyświetlania reklam mobilnych, znajdziesz w artykule na ten temat.
Implementacja
Główne kroki integracji reklam pełnoekranowych:
- Wczytaj reklamę.
- Zarejestruj się, aby otrzymywać połączenia zwrotne.
- Wyświetlanie reklamy i obsługa zdarzeń cyklu życia.
Konfigurowanie InterstitialAd
Reklamy pełnoekranowe są wyświetlane w obiektach InterstitialAd, więc pierwszym krokiem do zintegrowania 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, używając widoku nadrzędnego rzutowanego na typAdParent. Widok nadrzędny to odwołanie JNIjobjectdo obiektuActivityna Androidzie lub wskaźnik do obiektuUIViewna iOS.// 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 zachowywać obiekt Future jako zmienną, możesz okresowo sprawdzać stan operacji inicjowania, wywołując metodę
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 korzystaniu z firebase::Future znajdziesz w artykule Używanie obiektów Futures do monitorowania stanu ukończenia wywołań metod.
Wczytywanie reklamy
Reklamę wczytuje się za pomocą metody LoadAd() w obiekcie InterstitialAd. Metoda wczytywania wymaga zainicjowania obiektu InterstitialAd oraz posiadania identyfikatora jednostki reklamowej i obiektu AdRequest. Zwracany jest obiekt firebase::Future, którego możesz użyć do monitorowania stanu i wyniku operacji wczytywania.
Poniższy kod pokazuje, jak wczytać reklamę po 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 (lub nie) 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 wyświetlić ponownie. Sprawdzoną metodą jest wczytanie kolejnej reklamy pełnoekranowej w metodzie OnAdDismissedFullScreenContent() obiektu FullScreenContentListener, aby następna reklama pełnoekranowa zaczęła się wczytywać, gdy tylko poprzednia zostanie zamknięta.
Wyświetl reklamę
Reklamy pełnoekranowe powinny wyświetlać się w naturalnych przerwach w aplikacji, np. między poziomami gry lub po wykonaniu zadania przez użytkownika.
FullScreenContentListener może służyć do określania, kiedy reklama wyświetliła zawartość na pełnym ekranie, ale obiekt Future zwracany przez Show() również będzie sygnalizować, kiedy reklama została wyświetlona.
firebase::Future<void> result = interstitial_ad->Show();
Sprawdzone metody
- Zastanów się, czy reklamy pełnoekranowe to odpowiedni typ reklamy dla Twojej aplikacji.
- Reklamy pełnoekranowe najlepiej sprawdzają się w aplikacjach z naturalnymi punktami przejścia. Może to być np. zakończenie 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 wrażeń. Zastanów się, w których momentach w aplikacji będziesz wyświetlać reklamy pełnoekranowe i jak użytkownik może na nie zareagować.
- Pamiętaj, aby podczas wyświetlania reklamy pełnoekranowej wstrzymać działania.
- Istnieje wiele różnych typów reklam pełnoekranowych: tekstowe, graficzne, wideo i inne. Ważne jest, aby podczas wyświetlania reklamy pełnoekranowej aplikacja zawieszała korzystanie z niektórych zasobów, aby reklama mogła z nich korzystać. Na przykład gdy wywołujesz wyświetlenie reklamy pełnoekranowej, pamiętaj, aby wstrzymać odtwarzanie dźwięku przez aplikację. Możesz wznowić odtwarzanie dźwięków w metodzie
OnAdDismissedFullScreenContentzainstalowanego obiektuFullScreenContentListener, która zostanie wywołana, gdy użytkownik zakończy interakcję z reklamą. Dodatkowo rozważ tymczasowe wstrzymanie wszelkich intensywnych zadań obliczeniowych (takich jak pętla gry) podczas wyświetlania reklamy. Dzięki temu użytkownik nie będzie miał problemów z powolnym działaniem grafiki lub jej brakiem reakcji ani z zacinaniem się filmu. - Zapewnij odpowiedni czas na wczytanie.
- Ważne jest nie tylko wyświetlanie reklam pełnoekranowych w odpowiednim momencie, ale też to, aby użytkownik nie musiał czekać na ich wczytanie. Wczytanie reklamy z wyprzedzeniem, zanim chcesz ją wyświetlić, może zapewnić, że aplikacja będzie miała w pełni wczytaną 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żytkownika i obniżyć współczynniki klikalności. Zadbaj o to, aby nie przerywać użytkownikom zbyt często, tak by mogli swobodnie 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 wrażenia użytkowników. Zamiast tego wczytaj reklamę z wyprzedzeniem, zanim będzie trzeba ją wyświetlić.
Dodatkowe materiały
Przykład na GitHubie
- Wyświetl kod źródłowy naszej przykładowej aplikacji z krótkiego wprowadzenia na GitHubie.
Samouczki wideo 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.