Reklamy z nagrodą to reklamy, z którymi użytkownicy mogą wchodzić w interakcje w zamian za nagrody w aplikacji. Z tego przewodnika dowiesz się, jak zintegrować reklamy z nagrodą z AdMob w aplikacji Flutter.
Zawsze testuj za pomocą reklam testowych
Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie reklam aktywnych. Jeśli tego nie zrobisz, możemy zawiesić Twoje konto.
Najłatwiejszym sposobem na wczytanie reklam testowych jest użycie naszego specjalnego identyfikatora jednostki reklamowej do testowania reklam z nagrodą:
Android
ca-app-pub-3940256099942544/5224354917
iOS
ca-app-pub-3940256099942544/1712485313
Jednostki reklamowe do testowania są 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ć je własnymi identyfikatorami jednostek reklamowych.
Wczytywanie reklamy
Poniższy przykład wczytuje reklamę z nagrodą:
Zastąp _adUnitId własnym identyfikatorem jednostki reklamowej.
Zdarzenia związane z reklamami z nagrodą
Za pomocą FullScreenContentCallback możesz nasłuchiwać zdarzeń cyklu życia, np. gdy reklama jest wyświetlana lub odrzucana. Aby otrzymywać powiadomienia o tych zdarzeniach, przed wyświetleniem reklamy ustaw RewardedAd.fullScreenContentCallback. Ten przykład implementuje każdą metodę i rejestruje komunikat w konsoli:
ad.fullScreenContentCallback = FullScreenContentCallback(
onAdShowedFullScreenContent: (ad) {
// Called when the ad showed the full screen content.
debugPrint('Ad showed full screen content.');
},
onAdFailedToShowFullScreenContent: (ad, err) {
// Called when the ad failed to show full screen content.
debugPrint('Ad failed to show full screen content with error: $err');
// Dispose the ad here to free resources.
ad.dispose();
},
onAdDismissedFullScreenContent: (ad) {
// Called when the ad dismissed full screen content.
debugPrint('Ad was dismissed.');
// Dispose the ad here to free resources.
ad.dispose();
},
onAdImpression: (ad) {
// Called when an impression occurs on the ad.
debugPrint('Ad recorded an impression.');
},
onAdClicked: (ad) {
// Called when a click is recorded for an ad.
debugPrint('Ad was clicked.');
},
);
Wyświetlanie reklamy
Element RewardedAd jest wyświetlany jako nakładka na całą zawartość aplikacji i jest umieszczony statycznie. Nie można go więc dodać do drzewa widżetów Flutter. Możesz wybrać, kiedy wyświetlić reklamę, wywołując metodę show().
Metoda RewardedAd.show() przyjmuje argument OnUserEarnedRewardCallback, który jest wywoływany, gdy użytkownik otrzyma nagrodę. Pamiętaj, aby zaimplementować tę metodę i nagradzać użytkowników za oglądanie reklam.
_rewardedAd?.show(
onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
debugPrint('Reward amount: ${rewardItem.amount}');
},
);
Po wywołaniu metody show() reklamy Ad wyświetlanej w ten sposób nie można usunąć programowo. Wymaga ona danych wejściowych użytkownika. Element RewardedAd można wyświetlić tylko raz. Kolejne wywołania metody show spowodują wywołanie metody onAdFailedToShowFullScreenContent.
Gdy dostęp do reklamy nie jest już potrzebny, należy ją usunąć. Najlepszym rozwiązaniem jest wywołanie metody dispose() w wywołaniach zwrotnych FullScreenContentCallback.onAdDismissedFullScreenContent i FullScreenContentCallback.onAdFailedToShowFullScreenContent.
[Opcjonalnie] Weryfikowanie wywołań zwrotnych weryfikacji po stronie serwera (SSV)
Aplikacje, które wymagają dodatkowych danych w wywołaniach zwrotnych weryfikacji po stronie serwera
, powinny korzystać z funkcji danych niestandardowych w reklamach z nagrodą. Każda wartość ciągu znaków ustawiona w obiekcie reklamy z nagrodą jest przekazywana do parametru zapytania custom_data wywołania zwrotnego SSV. Jeśli nie ustawiono wartości danych niestandardowych, wartość parametru zapytania custom_data nie będzie obecna w wywołaniu zwrotnym SSV.
Poniższy przykład kodu pokazuje, jak ustawić opcje SSV po wczytaniu reklamy z nagrodą:
Zastąp SAMPLE_CUSTOM_DATA_STRING swoimi danymi niestandardowymi.
Pełny przykład na GitHubie
Aby zobaczyć pełny przykład, zapoznaj się z prezentacją interfejsu API.