Reklamy z nagrodą umożliwiają użytkownikom wchodzenie z nimi w zamianę za nagrody w aplikacji. Z tego przewodnika dowiesz się, jak zintegrować reklamy z nagrodą Aplikacje na Androida i iOS korzystające z pakietu SDK do reklam mobilnych Google w języku C++.
Zapoznaj się z historiami sukcesu klientów: studium przypadku 1. studium przypadku 2.
Wymagania wstępne
- Wykonaj czynności opisane w sekcji Rozpocznij.
- (Tylko Android) Znajomość obsługi plików referencyjnych JNI
jobject
(patrz Wskazówki dotyczące JNI dla Androida).
Zawsze korzystaj z reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie reklam, aktywne reklamy. Jeśli tego nie zrobisz, możemy zawiesić Twoje konto.
Najłatwiejszym sposobem wczytywania reklam testowych jest użycie dedykowanego identyfikatora jednostki reklamowej na potrzeby reklam z nagrodą, który różni się w zależności od platformy:
- System Android:
ca-app-pub-3940256099942544/5224354917
- System iOS:
ca-app-pub-3940256099942544/1712485313
Zostały specjalnie skonfigurowane tak, aby zwracać reklamy testowe w przypadku każdego żądania. możesz używać go we własnych aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, aby zastąpić go własnym identyfikatorem jednostki reklamowej przed opublikowaniem .
Więcej informacji o działaniu reklam testowych w pakiecie SDK do reklam mobilnych znajdziesz na stronie Reklamy testowe.
Implementacja
Oto główne etapy integracji z reklamami z nagrodą:
- Wczytaj reklamę.
- Zarejestruj się na wywołania zwrotne.
- Wyświetl reklamę i obsługuje zdarzenie nagrody.
Skonfiguruj: RewardedAd
Reklamy z nagrodą są wyświetlane w RewardedAd
obiektach, więc pierwszy krok to
integracja reklam z nagrodą z aplikacją polega na utworzeniu i zainicjowaniu instancji.
z RewardedAd
.
Dodaj ten nagłówek do kodu C++ aplikacji:
#include "firebase/gma/rewarded_ad.h"
Zadeklaruj i utwórz instancję obiektu
RewardedAd
:firebase::gma::RewardedAd* rewarded_ad; rewarded_ad = new firebase::gma::RewardedAd();
Zainicjuj instancję
RewardedAd
za pomocą rzutowania widoku nadrzędnego na Typ:AdParent
. Widok nadrzędny to odniesieniejobject
JNI do AndroidaActivity
lub wskaźnik do 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 = rewarded_ad->Initialize(ad_parent);
Zamiast zachowania przyszłości jako zmiennej możesz okresowo sprawdzić stan operacji inicjowania przez wywołanie
InitializeLastResult()
na obiekcieRewardedAd
. To może Ci się przydać do śledzenia procesu inicjowania w globalnej pętli gry.// Monitor the status of the future in your game loop: firebase::Future<void> result = rewarded_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 używaniu funkcji firebase::Future
znajdziesz w artykule Używanie funkcji Futures do monitorowania stanu wykonania wywołań metod.
Wczytywanie reklamy
Reklamę można wczytać za pomocą metody LoadAd()
w RewardedAd
obiektu. Metoda wczytywania wymaga zainicjowania interfejsu RewardedAd
oraz identyfikator jednostki reklamowej i obiekt AdRequest
. O
Zwrócono wartość firebase::Future
, której możesz używać do monitorowania stanu i wyników
podczas operacji wczytywania.
Ten kod pokazuje, jak wczytać reklamę, gdy RewardedAd
pomyślnie zainicjowano:
firebase::gma::AdRequest ad_request;
firebase::Future<firebase::gma::AdResult> load_ad_result;
load_ad_result = rewarded_ad->LoadAd(rewarded_ad_unit_id, ad_request);
Rejestrowanie wywołań zwrotnych
Musisz przedłużyć zajęcia FullScreenContentListener
, aby otrzymać
powiadomienia o prezentacji reklamy z nagrodą i zdarzeniach cyklu życia. Twój niestandardowy
Podklasę FullScreenContentListener
można zarejestrować w
RewardedAd::SetFullScreenContentListener()
, a otrzyma ona
wywołania zwrotne, gdy reklama wyświetla się prawidłowo lub nieskutecznie, a także gdy
odrzucana.
Ten kod pokazuje, jak rozszerzyć zajęcia i przypisać je 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* example_full_screen_content_listener = new ExampleFullScreenContentListener(); rewarded_ad->SetFullScreenContentListener(example_full_screen_content_listener);
RewardedAd
to obiekt jednorazowy. Oznacza to, że gdy reklama z nagrodą zostanie
nie można pokazać ponownie. Sprawdzoną metodą jest wczytanie kolejnej reklamy z nagrodą
w metodzie OnAdDismissedFullScreenContent()
na Twoim koncie
FullScreenContentListener
, by następna reklama z nagrodą zaczęła się ładować jak najszybciej
gdy poprzednia zostanie odrzucona.
Wyświetl reklamę i obsługuj zdarzenie nagrody.
Przed wyświetleniem użytkownikom reklam z nagrodą musisz przedstawić im wyraźną decyzję o wyświetleniu treści reklamy z nagrodą w zamian za nagrodę. Reklama z nagrodą reklamy muszą być zawsze opcjonalne.
Podczas wyświetlania reklamy musisz podać obiekt UserEarnedReward
do obsłużenia
jaka jest nagroda dla użytkownika.
Ten kod pokazuje, jak wyświetlić RewardedAd
:
// A simple listener track UserEarnedReward events.
class ExampleUserEarnedRewardListener :
public firebase::gma::UserEarnedRewardListener {
public:
ExampleUserEarnedRewardListener() { }
void OnUserEarnedReward(const firebase::gma::AdReward& reward) override {
// Reward the user!
}
};
ExampleUserEarnedRewardListener* user_earned_reward_listener =
new ExampleUserEarnedRewardListener();
firebase::Future<void> result = rewarded_ad->Show(user_earned_reward_listener);
Najczęstsze pytania
- Czy istnieje limit czasu oczekiwania na wywołanie inicjujące?
- Po 10 sekundach pakiet SDK do reklam mobilnych Google w języku C++ wykona zadanie
firebase::Future
zwracany przez użytkownikaInitialize()
, nawet jeśli sieć zapośredniczenia nadal działa nie zakończył się inicjalizacji. - Co zrobić, jeśli niektóre sieci zapośredniczenia nie są gotowe, gdy otrzymam wywołanie zwrotne inicjujące?
Sprawdzoną metodą jest wczytywanie reklam po zainicjowaniu pakietu SDK. Nawet jeśli sieć zapośredniczeń nie jest gotowa, pakiet SDK do reklam mobilnych Google w C++ nadal wysyła do tej sieci żądanie reklamy. Jeśli więc sieć zapośredniczeń zostanie zainicjowana po upłynięciu czasu oczekiwania, może nadal obsługiwać przyszłe żądania reklamy w .
Możesz nadal przeprowadzać sondowanie stanu inicjowania wszystkich adapterów przez cały czas w sesji aplikacji po wywołaniu usługi
GetInitializationStatus()
.- Jak sprawdzić, dlaczego dana sieć zapośredniczenia nie jest gotowa?
Artykuł
AdapterStatus.description()
wyjaśnia, dlaczego przejściówka nie jest gotowa do naprawy żądania reklamy. Zobacz kod źródłowy przykładowa aplikacja z krótkim wprowadzeniem znajdziesz na GitHubie przykład logowania stanu adaptera zapośredniczenia.
Dodatkowe materiały
Przykład w GitHubie
- Wyświetl kod źródłowy naszego przykładu aplikacja Szybki start w GitHubie.