Reklama pełnoekranowa z nagrodą (beta)

Reklama pełnoekranowa z nagrodą to rodzaj zachęcającego formatu reklamy, który umożliwia oferowanie nagród za reklamy wyświetlające się automatycznie w naturalnych momentach przejściowych w aplikacji. W przeciwieństwie do reklam z nagrodą użytkownicy wymagane do wyświetlenia reklamy pełnoekranowej z nagrodą. Z tego przewodnika dowiesz się, jak wdrożyć reklamy pełnoekranowe z nagrodą z AdMob w aplikacji Flutter.

Wymagania wstępne

  • Wtyczka Flutter w wersji 1.1.0 lub nowszej.
  • Wykonaj instrukcje w sekcji Pierwsze kroki. Twoje Aplikacja Flutter powinna już mieć wtyczkę Google Mobile Ads 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.

Najprostszym sposobem wczytania reklam testowych jest użycie dedykowanego identyfikatora testowej jednostki reklamowej na potrzeby reklam pełnoekranowych z nagrodą:

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

testowe jednostki reklamowe są tak skonfigurowane, aby zwracać reklamy testowe w przypadku każdego żądania; możesz używać ich we własnych 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ę pełnoekranową z nagrodą:

class RewardedInterstitialExampleState extends State<RewardedInterstitialExample> {
  RewardedInterstitialAd? _rewardeInterstitialdAd;

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

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

Zdarzenia reklam pełnoekranowych z nagrodą

Za pomocą FullScreenContentCallback możesz nasłuchiwać zdarzeń cyklu życia, np. gdy reklama jest wyświetlana lub odrzucana. Ustaw RewardedInterstitialAd.fullScreenContentCallback przed wyświetleniem reklamy użytkownikowi otrzymywać powiadomienia o tych wydarzeniach. Ten przykład implementuje każdą metodę, rejestruje komunikat w konsoli:

class RewardedInterstitialExampleState extends State<RewardedInterstitialExample> {
  RewardedInterstitialAd? _rewardedInterstitialAd;

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

  /// Loads a rewarded ad.
  void loadAd() {
    RewardedInterstitialAd.load(
        adUnitId: adUnitId,
        adRequest: const AdRequest(),
        adLoadCallback: RewardedInterstitialAdLoadCallback(
          // 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.
            _rewardedInterstitialAd = ad;
          },
          // Called when an ad request failed.
          onAdFailedToLoad: (LoadAdError error) {
            debugprint('RewardedInterstitialAd failed to load: $error');
          },
        ));
  }
}

Reklama displayowa

RewardedInterstitialAd 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 wyświetlać reklamę, wywołując funkcję show(). RewardedInterstitialAd.show() przyjmuje wartość OnUserEarnedRewardCallback, która jest wywoływana, gdy użytkownik otrzyma nagrodę. Wprowadź tę funkcję i nagradzaj użytkownika za obejrzenie reklamy.

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

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

Reklamę należy wyrzucić, gdy dostęp do niej nie jest już potrzebny. Sprawdzony sposób wywołania funkcji dispose() to wywołanie funkcji FullScreenContentCallback.onAdDismissedFullScreenContent i FullScreenContentCallback.onAdFailedToShowFullScreenContent.

Znakomicie. Twoja aplikacja jest już gotowa do wyświetlania reklam pełnoekranowych z nagrodą.

Kompletny przykład w GitHubie

Reklama pełnoekranowa z nagrodą