Accordé

Les utilisateurs ont la possibilité d'interagir avec ce type d'annonces en échange d'une récompense dans une application. Ce guide explique comment intégrer des annonces avec récompense AdMob dans une application Flutter.

Effectuez toujours des tests avec des annonces tests

Lorsque vous créez et testez vos applications, veillez à utiliser des annonces tests plutôt que des annonces de production. À défaut, votre compte risque d'être suspendu.

Le moyen le plus simple de charger des annonces tests consiste à utiliser notre ID de bloc d'annonces tests dédié pour les annonces avec récompense :

Android

ca-app-pub-3940256099942544/5224354917

iOS

ca-app-pub-3940256099942544/1712485313

Les blocs d'annonces tests sont configurés pour renvoyer des annonces tests pour chaque demande. vous êtes libre de les utiliser dans vos propres applications lors du codage, des tests et du débogage. Veillez simplement à les remplacer par vos propres ID de bloc d'annonces avant de publier votre application.

Charger une annonce

L'exemple suivant charge une annonce avec récompense :

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');
          },
        ));
  }
}

Événements d'annonces avec récompense

Grâce à FullScreenContentCallback, vous pouvez écouter le cycle de vie des événements, tels que l'affichage ou la fermeture de l'annonce. Définissez RewardedAd.fullScreenContentCallback avant de diffuser l'annonce pour recevoir des notifications pour ces événements. Cet exemple met en œuvre chaque méthode et enregistre à la console:

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');
          },
        ));
  }
}

Annonce display

Un RewardedAd s'affiche en superposition sur tout le contenu de l'application et est à l'emplacement statique ; Il ne peut donc pas être ajouté à l'arborescence des widgets Flutter. Vous pouvez choisissez quand diffuser l'annonce en appelant show(). RewardedAd.show() prend un OnUserEarnedRewardCallback, qui est appelé lorsque l'utilisateur gagne une récompense. Veillez à implémenter cette fonctionnalité et à récompenser l'utilisateur pour avoir regardé une annonce.

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

Une fois show() appelé, un Ad affiché de cette manière ne peut pas être supprimé. de façon programmatique et nécessite une entrée utilisateur. Un RewardedAd ne peut être affiché qu'une seule fois. Les appels suivants à l'affichage déclencheront onAdFailedToShowFullScreenContent.

Une annonce doit être supprimée lorsqu'il n'est plus nécessaire d'y accéder. Il est recommandé d'appeler dispose() dans les rappels FullScreenContentCallback.onAdDismissedFullScreenContent et FullScreenContentCallback.onAdFailedToShowFullScreenContent.

Et voilà ! Votre application est désormais prête à diffuser des annonces avec récompense.

Exemple complet sur GitHub

Avec récompense