Admob上でアプリ登録
アプリの追加およびバナー広告ユニットの追加を行う(ポチポチするだけ)
Admobプラグインのインストール
flutter pub add google_mobile_ads
Info.plistの編集
ios/Runner/Info.plist
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string><key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string><key>LSRequiresIPhoneOS</key>
<true/>
※AppIDはテスト用IDを設定
dartファイル作成
lib/components/admob/admob_banner_unit_id.dart
import ‘dart:io’;
class AdmobBannerUnitId {
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’);
}
}
}
lib/components/admob/admob.dart
import ‘package:xxxxxx/components/admob/admob_banner_unit_id.dart’;
import ‘package:flutter/material.dart’;
import ‘package:google_mobile_ads/google_mobile_ads.dart’;
class AdMob {
BannerAd? _bannerAd;
AdMob() {
_bannerAd = BannerAd(
size: AdSize.banner,
adUnitId: AdmobBannerUnitId.bannerAdUnitId,
listener: BannerAdListener(
onAdFailedToLoad: (Ad ad, LoadAdError error) {
ad.dispose();
},
),
request: const AdRequest());
}
void load() {
_bannerAd!.load();
}
void dispose() {
_bannerAd!.dispose();
}
Widget getAdBanner() {
return Container(
alignment: Alignment.center,
width: _bannerAd!.size.width.toDouble(),
height: _bannerAd!.size.height.toDouble(),
child: AdWidget(ad: _bannerAd!),
);
}
double getAdBannerHeight() {
return _bannerAd!.size.height.toDouble();
}
}
lib/widgets/admob/admob_banner.dart
import ‘package:flutter/material.dart’;
import ‘package:google_mobile_ads/google_mobile_ads.dart’;
import ‘package:xxxxxx/components/admob/admob.dart’;
class AdMobBanner extends StatefulWidget {
AdMobBanner({Key? key}) : super(key: key);
@override
_AdMobBannerState createState() => _AdMobBannerState();
}
class _AdMobBannerState extends State<AdMobBanner> {
final AdMob _adMob = AdMob();
@override
void initState() {
super.initState();
_adMob.load();
}
@override
void dispose() {
super.dispose();
_adMob.dispose();
}
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: AdSize.getAnchoredAdaptiveBannerAdSize(
Orientation.portrait, MediaQuery.of(context).size.width.truncate()),
builder: (BuildContext context,
AsyncSnapshot<AnchoredAdaptiveBannerAdSize?> snapshot) {
if (snapshot.hasData) {
return SizedBox(
width: double.infinity,
child: _adMob.getAdBanner(),
);
} else {
return Container(
height: _adMob.getAdBannerHeight(),
color: Colors.white,
);
}
},
);
}
}
任意の場所(今回は、main.dart)
import ‘package:xxxxxx/components/admob/ad_mob.dart’;
import ‘package:xxxxxx/widgets/admob/admob_banner.dart’;
任意の箇所で
AdMobBanner(),