Reklama pełnoekranowa z nagrodą (beta)

Reklama pełnoekranowa z nagrodą to rodzaj formatu reklamy zachęcającej do działania, który pozwala oferować nagrody za reklamy, które wyświetlają się automatycznie w naturalnych momentach przejściowych w aplikacji. W przeciwieństwie do reklam z nagrodą użytkownicy nie muszą wyrazić zgody na wyświetlenie reklamy pełnoekranowej z nagrodą. Z tego przewodnika dowiesz się, jak zintegrować reklamy pełnoekranowe z nagrodą z AdMob w aplikacji Flutter.

Wymagania wstępne

  • Wtyczka Flutter w wersji 1.1.0 lub nowszej.
  • Wykonaj czynności opisane w sekcji Pierwsze kroki. Do aplikacji Flutter powinna być już zaimportowana wtyczka Google Mobile Ads Flutter.

Zawsze korzystaj z reklam testowych

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

Najłatwiejszym sposobem wczytania reklam testowych jest użycie dedykowanego testowego identyfikatora jednostki reklamowej przeznaczonej do reklam pełnoekranowych z nagrodą:

Android

ca-app-pub-3940256099942544/5354046379

iOS

ca-app-pub-3940256099942544/6978759866

Testowe jednostki reklamowe są skonfigurowane tak, aby zwracać reklamy testowe w przypadku każdego żądania. Możesz ich używać we własnych aplikacjach podczas kodowania, testowania i debugowania. Pamiętaj tylko, 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ą

FullScreenContentCallback pozwala rejestrować zdarzenia cyklu życia, np. wyświetlenie lub odrzucenie reklamy. Przed wyświetleniem reklamy ustaw RewardedInterstitialAd.fullScreenContentCallback, aby otrzymywać powiadomienia o tych zdarzeniach. Ten przykład implementuje każdą metodę i 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 wyświetla się jako nakładka na całej zawartości aplikacji i jest statycznie rozmieszczona, więc nie można jej dodać do drzewa widżetów Flutter. Możesz wybrać, kiedy wyświetlić reklamę, dzwoniąc pod numer show(). RewardedInterstitialAd.show() przyjmuje wartość OnUserEarnedRewardCallback, która jest wywoływana, gdy użytkownik zdobędzie nagrodę. Pamiętaj, by zaimplementować tę funkcję i nagrodzić użytkownika za obejrzenie reklamy.

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

Po wywołaniu funkcji show() obiekt Ad wyświetlany w ten sposób nie może zostać usunięty automatycznie i wymaga danych wejściowych użytkownika. Element RewardedInterstitialAd może się wyświetlić tylko raz. Kolejne wywołania aktywują onAdFailedToShowFullScreenContent.

Reklamę należy wyrzucić, gdy dostęp do niej nie jest już potrzebny. Sprawdzoną metodą określającą, kiedy należy wywoływać funkcję dispose(), jest wywoływanie wywołań zwrotnych 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ą