Ajouter des annonces AdMob à une application Flutter

1. Introduction

Objectifs de l'atelier

Cet atelier de programmation vous expliquera comment ajouter un bannière, un interstitiel et une annonce avec récompense à une application appelée Awesome Drawing Quiz. Dans ce jeu, les joueurs doivent deviner le nom d'un dessin.

Si vous rencontrez des problèmes (bugs de code, erreurs grammaticales, formulations imprécises) au cours de cet atelier de programmation, veuillez nous en informer en cliquant sur le lien Signaler une erreur en bas à gauche.

Points abordés

  • Comment configurer le plug-in AdMob Google Mobile Ads ?
  • Comment implémenter une bannière, un interstitiel et une annonce avec récompense dans une application Flutter ?

Prérequis

  • Android Studio 4.1 ou version ultérieure
  • Xcode 12 ou version ultérieure (pour le développement sur iOS)

Comment évalueriez-vous votre niveau d'expérience avec AdMob ?

Débutant Intermédiaire Expert

Comment évalueriez-vous votre niveau d'expérience avec Flutter ?

Débutant Intermédiaire Expert

2. Configurer votre environnement de développement Flutter

Pour cet atelier, vous avez besoin de deux logiciels : le SDK Flutter et un éditeur.

Vous pouvez exécuter l'atelier de programmation sur l'un des appareils suivants :

  • Un appareil Android ou iOS physique connecté à votre ordinateur et configuré en mode développeur
  • Le simulateur iOS (installation des outils Xcode requise)
  • Android Emulator (configuration requise dans Android Studio)
  • Un navigateur (Chrome requis pour le débogage)
  • Vous pouvez exécuter l'atelier de programmation en tant qu'application de bureau Windows, Linux ou macOS. Vous devez développer votre application sur la plate-forme où vous comptez la déployer. Par exemple, si vous voulez développer une application de bureau Windows, vous devez le faire sous Windows pour accéder à la chaîne de compilation appropriée. Prenez également connaissance des exigences spécifiques aux systèmes d'exploitation, lesquelles sont détaillées sur docs.flutter.dev/desktop.

Télécharger le code

Une fois le fichier ZIP téléchargé, extrayez son contenu. Vous obtiendrez un dossier nommé admob-ads-in-flutter-master.

Vous pouvez également cloner le dépôt GitHub à partir de la ligne de commande :

$ git clone https://github.com/googlecodelabs/admob-ads-in-flutter

Le dépôt contient deux dossiers :

  • android_studio_folder.png starter : code de démarrage que vous allez compiler dans cet atelier de programmation.
  • android_studio_folder.png complete : code final de cet atelier de programmation.

3. Configurer l'application et les blocs d'annonces AdMob

Flutter étant un SDK multiplate-forme, vous devez ajouter une application et des blocs d'annonces pour Android et iOS dans AdMob.

Configurer pour Android

Afin de configurer pour Android, vous devez ajouter une application Android et créer des blocs d'annonces.

Ajouter une application Android

  1. Dans la console AdMob, cliquez sur AJOUTER UNE APPLICATION dans le menu Applications.
  2. Répondez NON à la question Avez-vous publié votre application sur Google Play ou sur l'App Store ?.
  3. Saisissez Awesome Drawing Quiz dans le champ du nom de l'application, puis sélectionnez Android comme plate-forme.

ddafee37a6f92229.png

  1. Il n'est pas nécessaire d'activer les métriques utilisateur pour suivre cet atelier de programmation. Nous recommandons toutefois de le faire, car cela permet de mieux comprendre le comportement des utilisateurs. Cliquez sur Ajouter pour terminer le processus.

b918bf44362813a9.png

Créer des blocs d'annonces

Pour commencer à ajouter des blocs d'annonces à AdMob :

  1. Sélectionnez Awesome Drawing Quiz dans le menu Applications de la console AdMob.
  2. Cliquez sur le menu Blocs d'annonces.

Bannière

  1. Cliquez sur le bouton AJOUTER UN BLOC D'ANNONCES.
  2. Sélectionnez le format Bannière.
  3. Saisissez android-adq-banner dans le champ Nom du bloc d'annonces.
  4. Cliquez sur CRÉER UN BLOC D'ANNONCES pour terminer le processus.

Interstitiel

  1. Cliquez sur le bouton AJOUTER UN BLOC D'ANNONCES.
  2. Sélectionnez le format Interstitiel.
  3. Saisissez android-adq-interstitial dans le champ Nom du bloc d'annonces.
  4. Cliquez sur CRÉER UN BLOC D'ANNONCES pour terminer le processus.

Annonce avec récompense

  1. Cliquez sur le bouton AJOUTER UN BLOC D'ANNONCES.
  2. Sélectionnez le format Avec récompense.
  3. Saisissez android-adq-rewarded dans le champ Nom du bloc d'annonces.
  4. Dans la section Paramètres relatifs aux récompenses, conservez les valeurs par défaut.
  5. Cliquez sur CRÉER UN BLOC D'ANNONCES pour terminer le processus.

Il faut généralement compter quelques heures pour qu'un nouveau bloc d'annonces puisse diffuser des annonces.

Si vous souhaitez tester le comportement de l'annonce immédiatement, utilisez l'ID de l'application test et les ID des blocs d'annonces tests indiqués dans les tableaux "ID d'application Android/ID de bloc d'annonces" et "ID d'application iOS/ID de bloc d'annonces".

Configurer pour iOS

Afin de configurer pour iOS, vous devez ajouter une application iOS et créer des blocs d'annonces.

Ajouter une application iOS

  1. Dans la console AdMob, cliquez sur AJOUTER UNE APPLICATION dans le menu Applications.
  2. Répondez NON à la question Avez-vous publié votre application sur Google Play ou sur l'App Store ?.
  3. Saisissez Awesome Drawing Quiz dans le champ du nom de l'application, puis sélectionnez iOS comme plate-forme.

93e7f9f114232402.png

  1. Il n'est pas nécessaire d'activer les métriques utilisateur pour suivre cet atelier de programmation. Nous recommandons toutefois de le faire, car cela permet de mieux comprendre le comportement des utilisateurs. Cliquez sur Ajouter pour terminer le processus.

b918bf44362813a9.png

Créer des blocs d'annonces

Pour ajouter des blocs d'annonces :

  1. Sélectionnez l'application Awesome Drawing Quiz dans le menu Applications de la console AdMob.
  2. Cliquez sur le menu Blocs d'annonces.

Bannière

  1. Cliquez sur le bouton AJOUTER UN BLOC D'ANNONCES.
  2. Sélectionnez le format Bannière.
  3. Saisissez ios-adq-banner dans le champ Nom du bloc d'annonces.
  4. Cliquez sur CRÉER UN BLOC D'ANNONCES pour terminer le processus.

Interstitiel

  1. Cliquez sur le bouton AJOUTER UN BLOC D'ANNONCES.
  2. Sélectionnez le format Interstitiel.
  3. Saisissez ios-adq-interstitial dans le champ Nom du bloc d'annonces.
  4. Cliquez sur CRÉER UN BLOC D'ANNONCES pour terminer le processus.

Annonce avec récompense

  1. Cliquez sur le bouton AJOUTER UN BLOC D'ANNONCES.
  2. Sélectionnez le format Avec récompense.
  3. Saisissez ios-adq-rewarded dans le champ Nom du bloc d'annonces.
  4. Dans la section Paramètres relatifs aux récompenses, conservez les valeurs par défaut.
  5. Cliquez sur CRÉER UN BLOC D'ANNONCES pour terminer le processus.

Il faut généralement compter quelques heures pour qu'un nouveau bloc d'annonces puisse diffuser des annonces.

Si vous souhaitez tester le comportement de l'annonce immédiatement, utilisez l'ID de l'application test et les ID des blocs d'annonces tests indiqués dans le tableau suivant.

Facultatif : Utiliser l'application et les blocs d'annonces tests AdMob

Si vous souhaitez suivre l'atelier de programmation au lieu de créer vous-même une application et des blocs d'annonces, vous pouvez utiliser l'ID de l'application AdMob test et les ID des blocs d'annonces tests indiqués dans les tableaux suivants.

ID d'application Android/ID de bloc d'annonces

Élément

ID de l'application/ID du bloc d'annonces

ID d'application AdMob

ca-app-pub-3940256099942544~3347511713

Bannière

ca-app-pub-3940256099942544/6300978111

Interstitiel

ca-app-pub-3940256099942544/1033173712

Avec récompense

ca-app-pub-3940256099942544/5224354917

ID d'application iOS/ID de bloc d'annonces

Élément

ID de l'application/ID du bloc d'annonces

ID d'application AdMob

ca-app-pub-3940256099942544~1458002511

Bannière

ca-app-pub-3940256099942544/2934735716

Interstitiel

ca-app-pub-3940256099942544/4411468910

Avec récompense

ca-app-pub-3940256099942544/1712485313

Pour en savoir plus sur les annonces tests, consultez la documentation destinée aux développeurs sur les annonces tests Android et les annonces tests iOS.

4. Ajouter le plug-in Flutter Google Mobile Ads

Flutter utilise des plug-ins pour offrir un accès à une vaste gamme de services propres aux plates-formes. Ces plug-ins vous permettent d'accéder aux services et API sur chaque plate-forme.

Le plug-in google_mobile_ads permet de charger et d'afficher des bannières, interstitiels, annonces avec récompense et annonces natives à l'aide de l'API AdMob.

Flutter étant un SDK multiplate-forme, le plug-in google_mobile_ads s'applique à la fois à iOS et Android. Par conséquent, si vous ajoutez le plug-in à votre application Flutter, il sera utilisé à la fois par les versions Android et iOS de l'application d'annonces intégrées AdMob.

Ajouter le plug-in Google Mobile Ads en tant que dépendance

Pour accéder aux API AdMob depuis le projet d'annonces intégrées AdMob, ajoutez google_mobile_ads en tant que dépendance au fichier pubspec.yaml situé à la racine du projet.

pubspec.yaml

...
environment:
  # TODO: Update the minimum sdk version to 2.12.0 to support null safety.
  sdk: ">=2.17.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  google_fonts: ^3.0.1

  # TODO: Add google_mobile_ads as a dependency
  google_mobile_ads: ^1.2.0

...

Cliquez sur Pub get pour installer le plug-in dans le projet Awesome Drawing Quiz.

9ce73858eedbd8fc.png

Mettre à jour AndroidManifest.xml (Android)

  1. Ouvrez le fichier android/app/src/main/AndroidManifest.xml dans Android Studio.
  2. Ajoutez votre ID d'application AdMob en incluant une balise <meta-data> dans le nom com.google.android.gms.ads.APPLICATION_ID. Par exemple, si votre ID d'application AdMob est ca-app-pub-3940256099942544~3347511713, vous devez ajouter les lignes suivantes au fichier AndroidManifest.xml.

AndroidManifest.xml

<manifest>
    ...
    <application>
       ...
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-3940256099942544~3347511713"/>
    </application>

</manifest>

Mettre à jour Info.plist (iOS)

  1. Ouvrez le fichier ios/Runner/Info.plist dans Android Studio.
  2. Ajoutez une clé GADApplicationIdentifier avec la valeur de chaîne de votre ID d'application AdMob. Par exemple, si votre ID d'application AdMob est ca-app-pub-3940256099942544~1458002511, vous devez ajouter les lignes suivantes au fichier Info.plist.

ios/Runner/Info.plist

...
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>
...

5. Ajouter une classe d'assistance pour les annonces

Créez un fichier nommé ad_helper.dart dans le répertoire lib. Ensuite, implémentez la classe AdHelper, qui fournit un ID d'application AdMob et des ID de blocs d'annonces pour Android et iOS.

Assurez-vous de remplacer l'ID d'application AdMob (ca-app-pub-xxxxxx~yyyyy) et l'ID de bloc d'annonces (ca-app-pub-xxxxxxx/yyyyyyyy) par les ID créés à l'étape précédente.

lib/ad_helper.dart

import 'dart:io';

class AdHelper {

  static String get bannerAdUnitId {
    if (Platform.isAndroid) {
      return '<YOUR_ANDROID_BANNER_AD_UNIT_ID>';
    } else if (Platform.isIOS) {
      return '<YOUR_IOS_BANNER_AD_UNIT_ID>';
    } else {
      throw UnsupportedError('Unsupported platform');
    }
  }

  static String get interstitialAdUnitId {
    if (Platform.isAndroid) {
      return '<YOUR_ANDROID_INTERSTITIAL_AD_UNIT_ID>';
    } else if (Platform.isIOS) {
      return '<YOUR_IOS_INTERSTITIAL_AD_UNIT_ID>';
    } else {
      throw UnsupportedError('Unsupported platform');
    }
  }

  static String get rewardedAdUnitId {
    if (Platform.isAndroid) {
      return '<YOUR_ANDROID_REWARDED_AD_UNIT_ID>';
    } else if (Platform.isIOS) {
      return '<YOUR_IOS_REWARDED_AD_UNIT_ID>';
    } else {
      throw UnsupportedError('Unsupported platform');
    }
  }
}

Ajoutez l'extrait de code suivant si vous souhaitez utiliser l'ID de l'application AdMob test et les ID des blocs d'annonces tests.

lib/ad_helper.dart

import 'dart:io';

class AdHelper {

  static String get bannerAdUnitId {
    if (Platform.isAndroid) {
      return 'ca-app-pub-3940256099942544/6300978111';
    } else if (Platform.isIOS) {
      return 'ca-app-pub-3940256099942544/2934735716';
    } else {
      throw new UnsupportedError('Unsupported platform');
    }
  }

  static String get interstitialAdUnitId {
    if (Platform.isAndroid) {
      return "ca-app-pub-3940256099942544/1033173712";
    } else if (Platform.isIOS) {
      return "ca-app-pub-3940256099942544/4411468910";
    } else {
      throw new UnsupportedError("Unsupported platform");
    }
  }

  static String get rewardedAdUnitId {
    if (Platform.isAndroid) {
      return "ca-app-pub-3940256099942544/5224354917";
    } else if (Platform.isIOS) {
      return "ca-app-pub-3940256099942544/1712485313";
    } else {
      throw new UnsupportedError("Unsupported platform");
    }
  }
}

6. Initialiser le SDK Google Mobile Ads

Avant de charger les annonces, vous devez initialiser le SDK Google Mobile Ads. Ouvrez le fichier lib/home_route.dart, puis modifiez _initGoogleMobileAds() pour initialiser le SDK avant le chargement de la page d'accueil.

Notez que vous devez modifier le type renvoyé de la méthode _initGoogleMobileAds() en remplaçant Future<dynamic> par Future<InitializationStatus> pour obtenir le résultat de la réinitialisation du SDK une fois l'opération terminée.

home_route.dart

// TODO: Import google_mobile_ads.dart
import 'package:google_mobile_ads/google_mobile_ads.dart';

import 'package:flutter/material.dart';

...

class HomeRoute extends StatelessWidget {

  ...

  Future<InitializationStatus> _initGoogleMobileAds() {
    // TODO: Initialize Google Mobile Ads SDK
    return MobileAds.instance.initialize();
  }
}

7. Ajouter une bannière

Dans cette section, vous allez ajouter une bannière en haut de l'écran du jeu, comme dans la capture d'écran suivante.

276b4cfa283ea6c7.png

  1. Ouvrez le fichier lib/game_route.dart, puis importez ad_manager.dart.
  2. Importez ad_helper.dart et google_mobile_ads.dart en ajoutant les lignes suivantes :

lib/game_route.dart

...

// TODO: Import ad_helper.dart
import 'package:awesome_drawing_quiz/ad_helper.dart';

// TODO: Import google_mobile_ads.dart
import 'package:google_mobile_ads/google_mobile_ads.dart';

class GameRoute extends StatefulWidget {
  ...
}
  1. Dans la classe _GameRouteState, ajoutez les membres suivants pour une bannière.

lib/game_route.dart

class _GameRouteState extends State<GameRoute> implements QuizEventListener {

  ...

  // TODO: Add _bannerAd
  BannerAd? _bannerAd;

  ...
}
  1. Dans la méthode initState(), créez et chargez une BannerAd pour la bannière 320 x 50 (AdSize.banner). Notez qu'un écouteur d'événements d'annonce est configuré pour mettre à jour l'UI (setState()) lors du chargement d'une annonce.

lib/game_route.dart

@override
void initState() {
  ...

  // TODO: Load a banner ad
  BannerAd(
    adUnitId: AdHelper.bannerAdUnitId,
    request: AdRequest(),
    size: AdSize.banner,
    listener: BannerAdListener(
      onAdLoaded: (ad) {
        setState(() {
          _bannerAd = ad as BannerAd;
        });
      },
      onAdFailedToLoad: (ad, err) {
        print('Failed to load a banner ad: ${err.message}');
        ad.dispose();
      },
    ),
  ).load();
}
  1. Modifiez la méthode build() pour afficher la bannière disponible.

lib/game_route.dart

@override
Widget build(BuildContext context) {
  return Scaffold(
    ...
    body: SafeArea(
      child: Stack(
        children: [
          Center(
            ...
          ),
          // TODO: Display a banner when ready
          if (_bannerAd != null)
            Align(
              alignment: Alignment.topCenter,
              child: Container(
                width: _bannerAd!.size.width.toDouble(),
                height: _bannerAd!.size.height.toDouble(),
                child: AdWidget(ad: _bannerAd!),
              ),
            ),
        ],
      ),
    ),
    ...
  );
}
  1. Libérez la ressource associée à l'objet BannerAd en appelant la méthode BannerAd.dispose() dans la méthode de rappel dispose().

lib/game_route.dart

@override
void dispose() {
  // TODO: Dispose a BannerAd object
  _bannerAd?.dispose();

  ...

  super.dispose();
}

Et voilà ! Vous pouvez exécuter le projet et commencer un nouveau jeu. Une fois l'annonce chargée, vous verrez une bannière en haut de l'écran.

276b4cfa283ea6c7.png

8. Ajouter une annonce interstitielle

Dans cette section, vous allez afficher une annonce interstitielle une fois le jeu terminé (cinq niveaux au total).

  1. Ouvrez le fichier lib/game_route.dart.
  2. Dans la classe _GameRouteState, ajoutez les méthodes et membres suivants pour une annonce interstitielle.

Notez qu'un écouteur d'événements d'annonce est configuré pour vérifier si l'annonce est prête (onAdLoaded() et onAdFailedToLoad()) et pour afficher l'écran d'accueil de l'application à la fermeture de l'annonce (onAdDismissedFullScreenContent())

lib/game_route.dart

class _GameRouteState extends State<GameRoute> implements QuizEventListener {

  ...

  // TODO: Add _interstitialAd
 InterstitialAd? _interstitialAd;

  // TODO: Implement _loadInterstitialAd()
  void _loadInterstitialAd() {
    InterstitialAd.load(
      adUnitId: AdHelper.interstitialAdUnitId,
      request: AdRequest(),
      adLoadCallback: InterstitialAdLoadCallback(
        onAdLoaded: (ad) {
          ad.fullScreenContentCallback = FullScreenContentCallback(
            onAdDismissedFullScreenContent: (ad) {
              _moveToHome();
            },
          );

          setState(() {
            _interstitialAd = ad;
          });
        },
        onAdFailedToLoad: (err) {
          print('Failed to load an interstitial ad: ${err.message}');
        },
      ),
    );
  }

  ...
}
  1. Dans cet atelier de programmation, l'annonce interstitielle s'affiche une fois que l'utilisateur a terminé les cinq niveaux. Pour limiter les demandes d'annonces inutiles, demandez une annonce lorsque l'utilisateur atteint le niveau 3.

Dans la méthode onNewLevel(), ajoutez les lignes suivantes.

lib/game_route.dart

@override
void onNewLevel(int level, Drawing drawing, String clue) {
  ...

  // TODO: Load an Interstitial Ad
  if (level >= 3 && _interstitialAd == null) {
    _loadInterstitialAd();
  }
}
  1. Une fois le jeu terminé, la boîte de dialogue du score s'affiche. Lorsque l'utilisateur la ferme, il est redirigé vers l'écran d'accueil d'Awesome Drawing Quiz.

Comme les annonces interstitielles doivent apparaître quand l'utilisateur passe d'un écran à l'autre, nous les affichons lorsqu'il clique sur le bouton FERMER.

Modifiez la méthode onGameOver() comme suit.

lib/game_route.dart

@override
void onGameOver(int correctAnswers) {
  showDialog(
    context: _scaffoldKey.currentContext,
    builder: (context) {
      return AlertDialog(
        title: Text('Game over!'),
        content: Text('Score: $correctAnswers/5'),
        actions: [
          FlatButton(
            child: Text('close'.toUpperCase()),
            onPressed: () {

              // TODO: Display an Interstitial Ad
              if (_interstitialAd != null) {
                _interstitialAd?.show();
              } else {
                _moveToHome();
              }
            },
          ),
        ],
      );
    },
  );
}
  1. Libérez la ressource associée à l'objet InterstitialAd en appelant la méthode InterstitialAd.dispose() dans la méthode de rappel dispose().

lib/game_route.dart

@override
void dispose() {
  ...

  // TODO: Dispose an InterstitialAd object
  _interstitialAd?.dispose();

  ...

  super.dispose();
}

Et voilà ! Vous pouvez exécuter le projet et terminer le jeu. En cas de chargement d'une annonce interstitielle, vous la verrez après avoir cliqué sur le bouton FERMER de la boîte de dialogue du score.

c546e438c405e941.gif

9. Ajouter une annonce avec récompense

Dans cette section, vous allez ajouter une annonce avec récompense, qui permet à l'utilisateur de bénéficier d'une astuce supplémentaire sous la forme d'une récompense.

  1. Ouvrez le fichier lib/game_route.dart.
  2. Dans la classe _GameRouteState, ajoutez les membres pour une annonce avec récompense et implémentez la méthode _loadRewardedAd(). Notez que celle-ci charge une autre annonce avec récompense lorsque l'utilisateur ferme l'annonce (onAdDismissedFullScreenContent) afin de mettre l'annonce en cache le plus tôt possible.

lib/game_route.dart

class _GameRouteState extends State<GameRoute> implements QuizEventListener {

  ...

  // TODO: Add _rewardedAd
  RewardedAd? _rewardedAd;

  // TODO: Implement _loadRewardedAd()
  void _loadRewardedAd() {
    RewardedAd.load(
      adUnitId: AdHelper.rewardedAdUnitId,
      request: AdRequest(),
      rewardedAdLoadCallback: RewardedAdLoadCallback(
        onAdLoaded: (ad) {
          ad.fullScreenContentCallback = FullScreenContentCallback(
            onAdDismissedFullScreenContent: (ad) {
              setState(() {
                ad.dispose();
                _rewardedAd = null;
              });
              _loadRewardedAd();
            },
          );

          setState(() {
            _rewardedAd = ad;
          });
        },
        onAdFailedToLoad: (err) {
          print('Failed to load a rewarded ad: ${err.message}');
        },
      ),
    );
  }

  ...
}
  1. Appelez _loadRewardedAd() à partir de la méthode initState() pour demander une annonce avec récompense lorsque le jeu commence.

lib/game_route.dart

class _GameRouteState extends State<GameRoute> implements QuizEventListener {

  ...

  @override
  void initState() {
    ...

    // COMPLETE: Load a Rewarded Ad
    _loadRewardedAd();
  }

  ...
}
  1. Faites en sorte que les utilisateurs puissent visionner une annonce avec récompense en cliquant sur le bouton d'action flottant. Il ne s'affiche que si le joueur n'a pas utilisé d'astuce au niveau actuel et qu'une annonce avec récompense est chargée.

Modifiez la méthode _buildFloatingActionButton() comme suit pour afficher le bouton d'action flottant. Notez que si null est renvoyé, le bouton ne s'affiche pas à l'écran.

Remarque : onUserEarnedReward est l'événement le plus important d'une annonce avec récompense. Il est déclenché au moment où l'utilisateur peut recevoir une récompense (par exemple, lorsqu'il finit de visionner une vidéo).

Dans cet atelier de programmation, la méthode QuizManager.instance.useHint() est appelée à partir du rappel, qui affiche un caractère supplémentaire dans la chaîne de l'astuce. L'application recharge une annonce avec récompense dans le rappel onAdClosed pour s'assurer que l'annonce est prête le plus tôt possible.

lib/game_route.dart

Widget? _buildFloatingActionButton() {
  // TODO: Return a FloatingActionButton if a rewarded ad is available
  return (!QuizManager.instance.isHintUsed && _rewardedAd != null)
      ? FloatingActionButton.extended(
          onPressed: () {
            showDialog(
              context: context,
              builder: (context) {
                return AlertDialog(
                  title: Text('Need a hint?'),
                  content: Text('Watch an Ad to get a hint!'),
                  actions: [
                    TextButton(
                      child: Text('cancel'.toUpperCase()),
                      onPressed: () {
                        Navigator.pop(context);
                      },
                    ),
                    TextButton(
                      child: Text('ok'.toUpperCase()),
                      onPressed: () {
                        Navigator.pop(context);
                        _rewardedAd?.show(
                          onUserEarnedReward: (_, reward) {
                            QuizManager.instance.useHint();
                          },
                        );
                      },
                    ),
                  ],
                );
              },
            );
          },
          label: Text('Hint'),
          icon: Icon(Icons.card_giftcard),
        )
      : null;
}
  1. Libérez la ressource associée à l'objet RewardedAd en appelant la méthode RewardedAd.dispose() dans la méthode de rappel dispose().

lib/game_route.dart

@override
void dispose() {
  ...

  // TODO: Dispose a RewardedAd object
  _rewardedAd?.dispose();

  ...

  super.dispose();
}

Et voilà ! Vous pouvez exécuter le projet et lancer le jeu. Une fois que l'annonce avec récompense sera chargée, vous verrez un bouton d'astuce au bas de l'écran. Cliquez sur le bouton Astuce pour obtenir une astuce supplémentaire.

4a114d243ae3e71d.gif

10. C'est terminé !

Vous avez terminé l'atelier de programmation. Vous trouverez le code final de cet atelier de programmation dans le dossier android_studio_folder.pngcomplete.

Pour savoir comment implémenter une bannière et une annonce intégrée native, accédez à l'atelier de programmation Ajouter une bannière et une annonce intégrée native AdMob à une application Flutter.

Pour aller plus loin, suivez les autres ateliers de programmation Flutter.