Otrzymano

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ą AdMob z aplikacją Flutter.

Zawsze testuj za pomocą reklam testowych

Podczas tworzenia i testowania aplikacji używaj reklam testowych, a nie aktywnych wersji produkcyjnej. Jeśli tego nie zrobisz, Twoje konto może zostać zawieszone.

Najprostszym sposobem wczytywania reklam testowych jest użycie dedykowanego identyfikatora testowej jednostki reklamowej na potrzeby reklam z nagrodą:

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Testowe jednostki reklamowe są tak skonfigurowane, aby zwracać reklamy testowe w odpowiedzi na każde żądanie. Możesz ich swobodnie używać w swoich aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj, aby przed opublikowaniem aplikacji zastąpić je własnymi identyfikatorami jednostek reklamowych.

Wczytywanie reklamy

Ten przykład wczytuje reklamę z nagrodą:

class RewardedExampleState extends State<RewardedExample> {
  RewardedAd? _rewardedAd;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/5224354917'
    : 'ca-app-pub-3940256099942544/1712485313';

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedAd.load(
        adUnitId: adUnitId,
        request: const AdRequest(),
        adLoadCallback: RewardedAdLoadCallback(
          // Called when an ad is successfully received.
          onAdLoaded: (ad) {
            debugPrint('$ad loaded.');
            // Keep a reference to the ad so you can show it later.
            _rewardedAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugPrint('RewardedAd failed to load: $error');
          },
        ));
  }
}

Zdarzenia związane z reklamami z nagrodą

Za pomocą interfejsu FullScreenContentCallback możesz nasłuchiwać zdarzeń cyklu życia, np. dotyczących wyświetlenia lub zamknięcia reklamy. Przed wyświetleniem reklamy ustaw parametr RewardedAd.fullScreenContentCallback, aby otrzymywać powiadomienia o tych zdarzeniach. Ten przykład implementuje każdą metodę i rejestruje wiadomość w konsoli:

class RewardedExampleState extends State<RewardedExample> {
  RewardedAd? _rewardedAd;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = Platform.isAndroid
    ? 'ca-app-pub-3940256099942544/5224354917'
    : 'ca-app-pub-3940256099942544/1712485313';

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedAd.load(
        adUnitId: adUnitId,
        request: const AdRequest(),
        adLoadCallback: RewardedAdLoadCallback(
          // Called when an ad is successfully received.
          onAdLoaded: (ad) {
            ad.fullScreenContentCallback = FullScreenContentCallback(
              // Called when the ad showed the full screen content.
              onAdShowedFullScreenContent: (ad) {},
              // Called when an impression occurs on the ad.
              onAdImpression: (ad) {},
              // Called when the ad failed to show full screen content.
              onAdFailedToShowFullScreenContent: (ad, err) {
                // Dispose the ad here to free resources.
                ad.dispose();
              },
              // Called when the ad dismissed full screen content.
              onAdDismissedFullScreenContent: (ad) {
                // Dispose the ad here to free resources.
                ad.dispose();
              },
              // Called when a click is recorded for an ad.
              onAdClicked: (ad) {});

            debugPrint('$ad loaded.');
            // Keep a reference to the ad so you can show it later.
            _rewardedAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugPrint('RewardedAd failed to load: $error');
          },
        ));
  }
}

Reklama displayowa

Element RewardedAd jest wyświetlany jako nakładka na całej zawartości aplikacji i jest umieszczony statycznie. Nie można go więc dodać do drzewa widżetów Flutter. Możesz wybrać, kiedy reklama ma się wyświetlać, dzwoniąc pod numer show(). RewardedAd.show() pobiera instrukcję OnUserEarnedRewardCallback, która jest wywoływana, gdy użytkownik zdobywaje nagrodę. Pamiętaj, by go wdrożyć i nagrodzić użytkownika za obejrzenie reklamy.

_rewardedAd.show(onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
  // Reward the user for watching an ad.
});

Po wywołaniu show() Ad wyświetlonego w ten sposób nie można automatycznie usunąć. Wymaga to danych wejściowych użytkownika. Element RewardedAd można wyświetlić tylko raz. Kolejne wywołania będą aktywować kod onAdFailedToShowFullScreenContent.

Reklamę należy zutylizować, gdy dostęp do niej nie jest już potrzebny. Sprawdzoną metodą wywołania dispose() jest użycie wywołań zwrotnych FullScreenContentCallback.onAdDismissedFullScreenContent i FullScreenContentCallback.onAdFailedToShowFullScreenContent.

Znakomicie. W Twojej aplikacji są już gotowe do wyświetlania reklam z nagrodą.

Uzupełnij przykład na GitHubie

Reklama z nagrodą