Z nagrodą

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 reklamy za pomocą reklam testowych

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

Najłatwiej wczytać reklamy testowe, używając dedykowanego identyfikatora testowej jednostki reklamowej w przypadku reklam z nagrodą:

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Testowe jednostki reklamowe 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. Zanim opublikujesz aplikację, pamiętaj, aby zastąpić je własnymi identyfikatorami jednostek reklamowych.

Wczytywanie reklamy

W tym przykładzie wczytuje się reklama 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 reklam 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 wartość parametru RewardedAd.fullScreenContentCallback. W tym przykładzie implementujemy każdą metodę i zapisujemy wiadomość do 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

RewardedAd jest wyświetlany jako nakładka na całą zawartość aplikacji i jest umieszczany statycznie, dlatego nie można go dodawać do drzewa widżetów Fluttera. Możesz wybrać, kiedy ma się wyświetlać reklama, wywołując funkcję show(). RewardedAd.show() przyjmuje wartość OnUserEarnedRewardCallback, która jest wywoływana, gdy użytkownik otrzyma nagrodę. Pamiętaj, aby wdrożyć tę funkcję i nagradzać użytkownika za obejrzenie reklamy.

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

Po wywołaniu funkcji show() wyświetlany w ten sposób element Ad nie może być usunięty programowo i wymaga podania danych przez użytkownika. Element RewardedAd może być wyświetlany tylko raz. Kolejne wywołania do wyświetlania będą wywoływać onAdFailedToShowFullScreenContent.

Reklamę należy usunąć, gdy nie jest już potrzebna. Sprawdzona metoda dotycząca czasu wywołania funkcji dispose() to wywołania zwrotne FullScreenContentCallback.onAdDismissedFullScreenContent i FullScreenContentCallback.onAdFailedToShowFullScreenContent.

Znakomicie. Twoja aplikacja jest teraz gotowa do wyświetlania reklam z nagrodą.

Pełny przykład w GitHub

Reklamy z nagrodą