1. Einführung
Inhalt
In diesem Codelab erfahren Sie, wie Sie einer App namens Awesome Drawing Quiz ein Banner, eine Interstitial-Anzeige und eine Anzeige mit Prämie hinzufügen. In diesem Spiel können Spieler den Namen der Zeichnung erraten.
Wenn beim Durcharbeiten dieses Codelab Probleme wie Code- oder Grammatikfehler oder unklare Formulierungen auftreten, melden Sie sie bitte. Klicken Sie dazu links unten im Codelab auf den Link Fehler melden.
Aufgaben in diesem Lab
- So konfigurieren Sie das AdMob-Plug-in für Google Mobile Anzeigen
- Banner, Interstitial-Anzeigen und Anzeigen mit Prämie in einer Flutter-App implementieren
Voraussetzungen
- Android Studio 4.1 oder höher
- Xcode 12 oder höher (für iOS-Entwicklung)
Wie würden Sie Ihre Erfahrung mit AdMob bewerten?
<ph type="x-smartling-placeholder">Wie würden Sie Ihre Erfahrung mit Flutter bewerten?
<ph type="x-smartling-placeholder">2. Flutter-Entwicklungsumgebung einrichten
Für dieses Lab benötigen Sie zwei Softwareprogramme: das Flutter SDK und einen Editor.
Sie können das Codelab auf jedem dieser Geräte ausführen:
- Ein physisches Android- oder iOS, das mit Ihrem Computer verbunden ist und sich im Entwicklermodus befindet.
- Den iOS-Simulator (erfordert die Installation von Xcode-Tools).
- Android-Emulator (Einrichtung in Android Studio erforderlich)
- Ein Browser (zur Fehlerbehebung wird Chrome benötigt)
- Als Windows-, Linux- oder macOS-Desktopanwendung Die Entwicklung muss auf der Plattform erfolgen, auf der Sie die Bereitstellung planen. Wenn Sie also eine Windows-Desktop-App entwickeln möchten, müssen Sie die Entwicklung unter Windows ausführen, damit Sie auf die entsprechende Build-Kette zugreifen können. Es gibt betriebssystemspezifische Anforderungen, die unter docs.flutter.dev/desktop ausführlich beschrieben werden.
Code herunterladen
Extrahieren Sie nach dem Herunterladen der ZIP-Datei den Inhalt. Sie haben einen Ordner mit dem Namen „admob-ads-in-flutter-master
“.
Alternativ können Sie das GitHub-Repository über die Befehlszeile klonen:
$ git clone https://github.com/googlecodelabs/admob-ads-in-flutter
Das Repository enthält zwei Ordner:
- starter – Startet Code, den Sie in diesem Codelab erstellen.
- complete – Vollständiger Code für dieses Codelab.
3. AdMob-App und Anzeigenblöcke einrichten
Da Flutter ein plattformübergreifendes SDK ist, müssen Sie in AdMob eine App und Anzeigenblöcke für Android und iOS hinzufügen.
Einrichtung für Android
Zur Einrichtung für Android müssen Sie eine Android-App hinzufügen und Anzeigenblöcke erstellen.
Android-App hinzufügen
- Klicken Sie in der AdMob-Konsole im Menü Apps auf APP HINZUFÜGEN.
- Wenn die Frage Haben Sie Ihre App bei Google Play oder im App Store veröffentlicht? angezeigt wird, klicken Sie auf Nein.
- Geben Sie in das Feld für den App-Namen
Awesome Drawing Quiz
ein und wählen Sie Android als Plattform aus.
- Das Aktivieren von Nutzermesswerten ist für dieses Codelab nicht erforderlich. Wir empfehlen dies jedoch, da Sie so das Nutzerverhalten besser nachvollziehen können. Klicken Sie auf HINZUFÜGEN, um den Vorgang abzuschließen.
Anzeigenblöcke erstellen
So fügen Sie in AdMob Anzeigenblöcke hinzu:
- Wählen Sie in der AdMob-Konsole im Menü Apps die Option Awesome Drawing Quiz aus.
- Klicken Sie auf das Menü Anzeigenblöcke.
Banner
|
Interstitial
|
Mit Prämie
|
In der Regel dauert es einige Stunden, bis in einem neuen Anzeigenblock Anzeigen ausgeliefert werden können.
Wenn Sie die Funktionsweise der Anzeige sofort testen möchten, verwenden Sie die Test-App-ID und die Anzeigenblock-IDs, die in den Tabellen „Android-App-ID/Anzeigenblock-ID“ bzw. „iOS-App-ID/Anzeigenblock-ID“ aufgeführt sind.
Einrichtung für iOS
Für die Einrichtung für iOS müssen Sie eine iOS-App hinzufügen und Anzeigenblöcke erstellen.
iOS-Apps hinzufügen
- Klicken Sie in der AdMob-Konsole im Menü Apps auf APP HINZUFÜGEN.
- Wenn die Frage Haben Sie Ihre App bei Google Play oder im App Store veröffentlicht? angezeigt wird, klicken Sie auf Nein.
- Geben Sie in das Feld für den App-Namen
Awesome Drawing Quiz
ein und wählen Sie iOS als Plattform aus.
- Das Aktivieren von Nutzermesswerten ist für dieses Codelab nicht erforderlich. Wir empfehlen dies jedoch, da Sie so das Nutzerverhalten besser nachvollziehen können. Klicken Sie auf HINZUFÜGEN, um den Vorgang abzuschließen.
Anzeigenblöcke erstellen
So fügen Sie Anzeigenblöcke hinzu:
- Wählen Sie in der AdMob-Konsole im Menü Apps die App Awesome Drawing Quiz aus.
- Klicken Sie auf das Menü Anzeigenblöcke.
Banner
|
Interstitial
|
Mit Prämie
|
In der Regel dauert es einige Stunden, bis in einem neuen Anzeigenblock Anzeigen ausgeliefert werden können.
Wenn Sie die Funktionsweise der Anzeige sofort testen möchten, verwenden Sie die Test-App-ID und die Anzeigenblock-IDs, die in der folgenden Tabelle aufgeführt sind.
Optional: Test-App und -Anzeigenblöcke von AdMob verwenden
Wenn Sie das Codelab verwenden möchten, anstatt selbst eine neue Anwendung und Anzeigenblöcke zu erstellen, können Sie die in den folgenden Tabellen aufgeführten Test-IDs für AdMob-Apps und Anzeigenblöcke verwenden.
Android-App-ID/Anzeigenblock-ID
Posten | App-ID/Anzeigenblock-ID |
AdMob-App-ID |
|
Banner |
|
Interstitial |
|
Verfügbar |
|
iOS-App-ID/Anzeigenblock-ID
Posten | App-ID/Anzeigenblock-ID |
AdMob-App-ID |
|
Banner |
|
Interstitial |
|
Verfügbar |
|
Weitere Informationen zu Testanzeigen finden Sie in der Entwicklerdokumentation zu Android-Testanzeigen und iOS-Testanzeigen.
4. Google Mobile Ads Flutter-Plug-in hinzufügen
Flutter verwendet Plug-ins, um Zugriff auf eine Vielzahl plattformspezifischer Dienste zu bieten. Plug-ins ermöglichen Ihnen den Zugriff auf Dienste und APIs auf jeder Plattform.
Das Plug-in google_mobile_ads unterstützt das Laden und Anzeigen von Banner-, Interstitial- und nativen Anzeigen sowie Anzeigen mit Prämie über die AdMob API.
Da Flutter ein plattformübergreifendes SDK ist, ist das Plug-in „google_mobile_ads“ sowohl für iOS als auch für Android anwendbar. Wenn Sie also das Plug-in zu Ihrer Flutter-App hinzufügen, wird es sowohl von der Android- als auch der iOS-Version der AdMob-App für Inline-Anzeigen verwendet.
Google Mobile Ads-Plug-in als Abhängigkeit hinzufügen
Wenn Sie über das Projekt für AdMob-Inline-Anzeigen auf die AdMob APIs zugreifen möchten, fügen Sie der Datei pubspec.yaml
im Stammverzeichnis des Projekts google_mobile_ads
als Abhängigkeit hinzu.
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
...
Klicken Sie auf Pub get, um das Plug-in im Projekt Awesome Drawing Quiz zu installieren.
AndroidManifest.xml (Android) aktualisieren
- Öffnen Sie die Datei
android/app/src/main/AndroidManifest.xml
in Android Studio. - Fügen Sie Ihre AdMob-App-ID hinzu, indem Sie ein
<meta-data>
-Tag mit dem Namencom.google.android.gms.ads.APPLICATION_ID
einfügen. Wenn Ihre AdMob-App-ID beispielsweiseca-app-pub-3940256099942544~3347511713
lautet, müssen Sie der DateiAndroidManifest.xml
die folgenden Zeilen hinzufügen.
AndroidManifest.xml
<manifest>
...
<application>
...
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
</application>
</manifest>
Info.plist-Datei aktualisieren (iOS)
- Öffnen Sie die Datei
ios/Runner/Info.plist
in Android Studio. - Fügen Sie einen
GADApplicationIdentifier
-Schlüssel mit dem Stringwert Ihrer AdMob-App-ID hinzu. Wenn Ihre AdMob-App-ID beispielsweiseca-app-pub-3940256099942544~1458002511
lautet, müssen Sie der DateiInfo.plist
die folgenden Zeilen hinzufügen.
ios/Runner/Info.plist
...
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>
...
5. Hilfsklasse für Anzeigen hinzufügen
Erstellen Sie eine neue Datei mit dem Namen ad_helper.dart
im Verzeichnis lib
. Implementieren Sie dann die AdHelper
-Klasse, die eine AdMob-App-ID und Anzeigenblock-IDs für Android und iOS bereitstellt.
Ersetzen Sie die AdMob-App-ID (ca-app-pub-xxxxxx~yyyyy
) und die Anzeigenblock-ID (ca-app-pub-xxxxxxx/yyyyyyyy
) durch die IDs, die Sie im vorherigen Schritt erstellt haben.
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');
}
}
}
Verwenden Sie das folgende Code-Snippet, wenn Sie die AdMob-Test-App-ID und die Test-Anzeigenblock-IDs nutzen möchten.
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. Google Mobile Ads SDK initialisieren
Bevor Sie Anzeigen laden, müssen Sie das Google Mobile Ads SDK initialisieren. Öffnen Sie die Datei lib/home_route.dart
und ändern Sie _initGoogleMobileAds()
, um das SDK zu initialisieren, bevor die Startseite geladen wird.
Sie müssen den Rückgabetyp der Methode _initGoogleMobileAds()
von Future<dynamic>
in Future<InitializationStatus>
ändern, um das Ergebnis der SDK-Initialisierung nach Abschluss zu erhalten.
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. Banneranzeige hinzufügen
In diesem Bereich platzieren Sie eine Banneranzeige oben auf dem Spielbildschirm, wie im folgenden Screenshot zu sehen ist.
- Öffnen Sie die Datei
lib/game_route.dart
und importieren Siead_manager.dart
- Importieren Sie
ad_helper.dart
undgoogle_mobile_ads.dart
, indem Sie die folgenden Zeilen hinzufügen:
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 {
...
}
- Fügen Sie dem Kurs „
_GameRouteState
“ die folgenden Mitglieder für eine Banneranzeige hinzu.
lib/game_route.dart
class _GameRouteState extends State<GameRoute> implements QuizEventListener {
...
// TODO: Add _bannerAd
BannerAd? _bannerAd;
...
}
- Erstellen und laden Sie in der Methode
initState()
einBannerAd
für das 320 x 50-Banner (AdSize.banner
). Beachten Sie, dass ein Anzeigenereignis-Listener so konfiguriert ist, dass die Benutzeroberfläche (setState()
) beim Laden einer Anzeige aktualisiert wird .
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();
}
- Passen Sie die Methode
build()
so an, dass eine Banneranzeige eingeblendet wird, sofern verfügbar.
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!),
),
),
],
),
),
...
);
}
- Geben Sie die mit dem
BannerAd
-Objekt verknüpfte Ressource frei, indem Sie die MethodeBannerAd.dispose()
in der Callback-Methodedispose()
aufrufen.
lib/game_route.dart
@override
void dispose() {
// TODO: Dispose a BannerAd object
_bannerAd?.dispose();
...
super.dispose();
}
Fertig! Führen Sie das Projekt aus und starten Sie ein neues Spiel. Nachdem eine Anzeige geladen wurde, sehen Sie oben auf dem Bildschirm eine Banneranzeige.
8. Interstitial-Anzeige hinzufügen
In diesem Bereich schalten Sie nach Ende des Spiels (insgesamt 5 Level) eine Interstitial-Anzeige.
- Öffnen Sie die Datei
lib/game_route.dart
. - Fügen Sie in der Klasse
_GameRouteState
die folgenden Mitglieder und Methoden für eine Interstitial-Anzeige hinzu.
Ein Anzeigenereignis-Listener ist so konfiguriert, dass er prüft, ob die Anzeige bereit ist (onAdLoaded()
und onAdFailedToLoad()
) und dass der Startbildschirm der App angezeigt wird, wenn die Anzeige geschlossen wird (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}');
},
),
);
}
...
}
- In diesem Codelab wird eine Interstitial-Anzeige eingeblendet, nachdem ein Nutzer fünf Level abgeschlossen hat. Um unnötige Anzeigenanfragen zu minimieren, fordern Sie eine Anzeige an, wenn ein Nutzer Level 3 erreicht.
Fügen Sie in der Methode onNewLevel()
die folgenden Zeilen hinzu.
lib/game_route.dart
@override
void onNewLevel(int level, Drawing drawing, String clue) {
...
// TODO: Load an Interstitial Ad
if (level >= 3 && _interstitialAd == null) {
_loadInterstitialAd();
}
}
- Wenn ein Spiel beendet ist, wird das Dialogfeld für den Spielstand angezeigt. Wenn ein Nutzer das Dialogfeld schließt, wird er zum Startbildschirm des Quiz zum Zeichnen weitergeleitet.
Da Interstitial-Anzeigen zwischen Bildschirmübergängen eingeblendet werden sollen, wird sie eingeblendet, wenn ein Nutzer auf die Schaltfläche SCHLIEẞEN klickt.
Ändern Sie die Methode onGameOver()
wie folgt.
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();
}
},
),
],
);
},
);
}
- Geben Sie die mit dem
InterstitialAd
-Objekt verknüpfte Ressource frei, indem Sie die MethodeInterstitialAd.dispose()
in der Callback-Methodedispose()
aufrufen.
lib/game_route.dart
@override
void dispose() {
...
// TODO: Dispose an InterstitialAd object
_interstitialAd?.dispose();
...
super.dispose();
}
Fertig! Führen Sie das Projekt aus und schließen Sie das Spiel ab. Wenn eine Interstitial-Anzeige geladen wird, sehen Sie eine Interstitial-Anzeige, sobald Sie im Bewertungsdialogfeld auf SCHLIEẞEN klicken.
9. Anzeige mit Prämie hinzufügen
In diesem Abschnitt fügen Sie eine Anzeige mit Prämie hinzu, über die der Nutzer einen zusätzlichen Hinweis als Prämie erhält.
- Öffnen Sie die Datei
lib/game_route.dart
. - Fügen Sie in der Klasse
_GameRouteState
Mitglieder für eine Anzeige mit Prämie hinzu und implementieren Sie die Methode_loadRewardedAd()
. Beim Schließen der Anzeige (onAdDismissedFullScreenContent
) wird eine weitere Anzeige mit Prämie geladen, um sie so früh wie möglich im Cache zu speichern.
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}');
},
),
);
}
...
}
- Rufen Sie
_loadRewardedAd()
über die MethodeinitState()
auf, um zu Beginn des Spiels eine Anzeige mit Prämie anzufordern.
lib/game_route.dart
class _GameRouteState extends State<GameRoute> implements QuizEventListener {
...
@override
void initState() {
...
// COMPLETE: Load a Rewarded Ad
_loadRewardedAd();
}
...
}
- Nutzern erlauben, sich eine Anzeige mit Prämie anzusehen, indem sie auf die schwebende Aktionsschaltfläche klicken. Die Schaltfläche wird nur angezeigt, wenn ein Nutzer im aktuellen Level keinen Hinweis verwendet hat und eine Anzeige mit Prämie geladen wurde.
Ändern Sie die Methode _buildFloatingActionButton()
so, dass die unverankerte Aktionsschaltfläche angezeigt wird. Beachte, dass durch Rückgabe von null
die Schaltfläche auf dem Bildschirm ausgeblendet wird.
onUserEarnedReward
ist das wichtigste Anzeigenereignis in einer Anzeige mit Prämie. Sie wird ausgelöst, wenn ein Nutzer berechtigt ist, eine Prämie zu erhalten, z. B. wenn er sich ein Video angesehen hat.
In diesem Codelab wird die Methode QuizManager.instance.useHint()
über den Callback aufgerufen. Dabei wird ein weiteres Zeichen im Hinweisstring angezeigt. Die Anzeige mit Prämie wird im onAdClosed
-Callback neu geladen, damit sie so früh wie möglich verfügbar ist.
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;
}
- Geben Sie die mit dem
RewardedAd
-Objekt verknüpfte Ressource frei, indem Sie die MethodeRewardedAd.dispose()
in der Callback-Methodedispose()
aufrufen.
lib/game_route.dart
@override
void dispose() {
...
// TODO: Dispose a RewardedAd object
_rewardedAd?.dispose();
...
super.dispose();
}
Fertig! Führen Sie das Projekt aus und spielen Sie das Spiel. Sobald eine Anzeige mit Prämie geladen wurde, wird unten auf dem Bildschirm eine Hinweisschaltfläche angezeigt. Klicken Sie auf die Schaltfläche Hinweis, um einen weiteren Hinweis zu erhalten.
10. Fertig
Du hast das Codelab abgeschlossen. Du findest den fertigen Code für dieses Codelab im Ordner complete.
Informationen zum Implementieren von Bannern und nativen Inline-Anzeigen finden Sie im Codelab AdMob-Banner und native Inline-Anzeigen zu einer Flutter-App hinzufügen.
Weitere Informationen finden Sie in den anderen Flutter-Codelabs.