Reklamy 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 usługi Ad Manager z aplikacją we Flutterze.

Zawsze testuj za pomocą reklam testowych

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

Najłatwiejszym sposobem wczytywania reklam testowych jest użycie specjalnego identyfikatora testowej jednostki reklamowej w przypadku reklam z nagrodą:

  • /21775744923/example/rewarded

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ę, zastąp je identyfikatorami swoich jednostek reklamowych.

Wczytywanie reklamy

Poniższy przykład wczytuje reklamę z nagrodą:

RewardedAd.load(
  adUnitId: "_adUnitId",
  request: const AdManagerAdRequest(),
  rewardedAdLoadCallback: RewardedAdLoadCallback(
    onAdLoaded: (RewardedAd ad) {
      // Called when an ad is successfully received.
      debugPrint('Ad was loaded.');
      // Keep a reference to the ad so you can show it later.
      _rewardedAd = ad;
    },
    onAdFailedToLoad: (LoadAdError error) {
      // Called when an ad request failed.
      debugPrint('Ad failed to load with error: $error');
    },
  ),
);

Zastąp _adUnitId identyfikatorem swojej jednostki reklamowej.

Zdarzenia związane z reklamami z nagrodą

Za pomocą FullScreenContentCallback możesz nasłuchiwać zdarzeń związanych z cyklem życia, np. gdy reklama jest wyświetlana lub zamykana. Ustaw RewardedAd.fullScreenContentCallback przed wyświetleniem reklamy, aby otrzymywać powiadomienia o tych zdarzeniach. W tym przykładzie zaimplementowano każdą metodę i zarejestrowano 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.');
  },
);

Reklama displayowa

RewardedAd jest wyświetlany jako nakładka na wszystkich treściach aplikacji i jest umieszczony statycznie, więc nie można go dodać do drzewa widżetów Fluttera. Możesz wybrać, kiedy chcesz wyświetlać reklamę, wywołując funkcję show(). RewardedAd.show() przyjmuje OnUserEarnedRewardCallback, który jest wywoływany, gdy użytkownik zdobędzie nagrodę. Pamiętaj, aby wdrożyć tę funkcję i nagradzać użytkowników za oglądanie reklam.

_rewardedAd?.show(
  onUserEarnedReward: (AdWithoutView ad, RewardItem rewardItem) {
    debugPrint('Reward amount: ${rewardItem.amount}');
  },
);

Gdy wywoływana jest funkcja show(), wyświetlony w ten sposób element Ad nie może zostać usunięty programowo i wymaga danych wejściowych użytkownika. RewardedAd może być wyświetlany tylko raz. Kolejne wywołania funkcji show będą wywoływać funkcję onAdFailedToShowFullScreenContent.

Reklamę należy usunąć, gdy nie jest już potrzebna. Sprawdzona metoda określania, kiedy wywołać funkcję dispose(), polega na użyciu wywołań zwrotnych FullScreenContentCallback.onAdDismissedFullScreenContent i FullScreenContentCallback.onAdFailedToShowFullScreenContent.

[Opcjonalnie] Weryfikowanie wywołań zwrotnych weryfikacji po stronie serwera

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 ustawisz wartości danych niestandardowych, w wywołaniu zwrotnym SSV nie będzie obecna wartość parametru zapytania custom_data.

Poniższy przykładowy kod pokazuje, jak ustawić opcje SSV po wczytaniu reklamy z nagrodą:

RewardedAd.load(
  adUnitId: "_adUnitId",
  request: AdManagerAdRequest(),
  rewardedAdLoadCallback: RewardedAdLoadCallback(
    onAdLoaded: (ad) {
      ServerSideVerificationOptions _options =
          ServerSideVerificationOptions(
            customData: 'SAMPLE_CUSTOM_DATA_STRING',
          );
      ad.setServerSideOptions(_options);
      _rewardedAd = ad;
    },
    onAdFailedToLoad: (error) {},
  ),
);

Zastąp SAMPLE_CUSTOM_DATA_STRING swoimi danymi niestandardowymi.