「Flutter/admob/admob flutter」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→準備) |
|||
| (同じ利用者による、間の12版が非表示) | |||
| 行5: | 行5: | ||
admob_flutter: ^0.3.4 | admob_flutter: ^0.3.4 | ||
</pre> | </pre> | ||
| + | |||
| + | ==準備== | ||
| + | android/app/AndroidManifest.xml | ||
| + | <pre> | ||
| + | <meta-data | ||
| + | android:name="com.google.android.gms.ads.APPLICATION_ID" | ||
| + | android:value="ca-app-pub-xxxxxxx-appid"/> | ||
| + | </pre> | ||
| + | |||
| + | ios/Runner/Info.Plist | ||
| + | <pre> | ||
| + | <key>GADApplicationIdentifier</key> | ||
| + | <string>ca-app-pub-xxxxxxx-appid</string> | ||
| + | <key>io.flutter.embedded_views_preview</key> | ||
| + | <true/> | ||
| + | </pre> | ||
| + | appIdを入れる。 | ||
| + | |||
| + | ==サンプル== | ||
| + | 初回起動時に設定 | ||
| + | <pre> | ||
| + | import 'package:flutter/material.dart'; | ||
| + | import 'package:admob_flutter/admob_flutter.dart'; | ||
| + | import 'dart:io'; | ||
| + | Admob.initialize(getAppId()); | ||
| + | String getAppId() { | ||
| + | if (Platform.isIOS) { | ||
| + | return 'ca-app-pub-xxxxxxx-appid'; | ||
| + | } else if (Platform.isAndroid) { | ||
| + | return 'ca-app-pub-xxxxxxx-appid'; | ||
| + | } | ||
| + | return null; | ||
| + | } | ||
| + | </pre> | ||
| + | 広告挿入箇所 | ||
| + | <pre> | ||
| + | @override | ||
| + | Widget build(BuildContext context) { | ||
| + | return Scaffold( | ||
| + | appBar: AppBar( | ||
| + | title: Text(widget.title), | ||
| + | ), | ||
| + | body: _buildListView(), | ||
| + | ); | ||
| + | } | ||
| + | Widget _buildListView() { | ||
| + | AdmobBanner admobBanner = AdmobBanner( | ||
| + | adUnitId: getBannerAdUnitId(), | ||
| + | adSize: AdmobBannerSize.LEADERBOARD, | ||
| + | ); | ||
| + | final int size = 10; | ||
| + | List<Widget> _children = List<Widget>.generate( | ||
| + | size, | ||
| + | (int index) => _buildListItem(text: "iTem: $index"), | ||
| + | ); | ||
| + | _children.insert( | ||
| + | 2, | ||
| + | Padding( | ||
| + | padding: const EdgeInsets.all(8.0), | ||
| + | child: admobBanner, | ||
| + | ), | ||
| + | ); | ||
| + | return ListView( | ||
| + | children: _children, | ||
| + | ); | ||
| + | } | ||
| + | Widget _buildListItem({String text}) { | ||
| + | return Container( | ||
| + | height: 150, | ||
| + | child: Card( | ||
| + | color: Colors.grey, | ||
| + | child: Padding( | ||
| + | padding: const EdgeInsets.all(8.0), | ||
| + | child: Center(child: Text(text)), | ||
| + | ), | ||
| + | ), | ||
| + | ); | ||
| + | } | ||
| + | String getBannerAdUnitId() { | ||
| + | if (Platform.isIOS) { | ||
| + | return 'ca-app-pub-xxxxxx-unitid'; | ||
| + | } else if (Platform.isAndroid) { | ||
| + | return 'ca-app-pub-xxxxxx-unitid'; | ||
| + | } | ||
| + | return null; | ||
| + | } | ||
| + | </pre> | ||
| + | |||
| + | 参考:https://qiita.com/gkn/items/f5fde5be608384f1a272 | ||
| + | |||
| + | iosでは広告が表示できたが、androidではTestDevice登録がされてないためか表示できてない。 | ||
| + | |||
| + | ==Missing google_app_id. Firebase Analytics disabled.エラーが出る場合== | ||
| + | firebaseの設定を入れる必要があるかも?(おそらく不要、広告が出ないときに一応出してるだけっぽい) | ||
| + | |||
| + | ==Ad failed to loadなメッセージが出る場合== | ||
| + | <pre> | ||
| + | I/Ads ( 6199): Ad failed to load : 3 | ||
| + | D/DynamitePackage( 6199): Instantiating com.google.android.gms.ads.ChimeraAdManagerCreatorImpl | ||
| + | I/Ads ( 6199): Use AdRequest.Builder.addTestDevice("E36Axxxxxxxxxxxxxxxxxx) to get test ads on this device. | ||
| + | </pre> | ||
| + | addTestDeviceを追加すればいけそうだが、そんなadmob_flutterライブラリにそんなメソッドがない? | ||
2019年12月16日 (月) 11:09時点における最新版
目次
インストール
pubspec.yaml
dependencies: admob_flutter: ^0.3.4
準備
android/app/AndroidManifest.xml
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxx-appid"/>
ios/Runner/Info.Plist
<key>GADApplicationIdentifier</key> <string>ca-app-pub-xxxxxxx-appid</string> <key>io.flutter.embedded_views_preview</key> <true/>
appIdを入れる。
サンプル
初回起動時に設定
import 'package:flutter/material.dart';
import 'package:admob_flutter/admob_flutter.dart';
import 'dart:io';
Admob.initialize(getAppId());
String getAppId() {
if (Platform.isIOS) {
return 'ca-app-pub-xxxxxxx-appid';
} else if (Platform.isAndroid) {
return 'ca-app-pub-xxxxxxx-appid';
}
return null;
}
広告挿入箇所
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: _buildListView(),
);
}
Widget _buildListView() {
AdmobBanner admobBanner = AdmobBanner(
adUnitId: getBannerAdUnitId(),
adSize: AdmobBannerSize.LEADERBOARD,
);
final int size = 10;
List<Widget> _children = List<Widget>.generate(
size,
(int index) => _buildListItem(text: "iTem: $index"),
);
_children.insert(
2,
Padding(
padding: const EdgeInsets.all(8.0),
child: admobBanner,
),
);
return ListView(
children: _children,
);
}
Widget _buildListItem({String text}) {
return Container(
height: 150,
child: Card(
color: Colors.grey,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Center(child: Text(text)),
),
),
);
}
String getBannerAdUnitId() {
if (Platform.isIOS) {
return 'ca-app-pub-xxxxxx-unitid';
} else if (Platform.isAndroid) {
return 'ca-app-pub-xxxxxx-unitid';
}
return null;
}
参考:https://qiita.com/gkn/items/f5fde5be608384f1a272
iosでは広告が表示できたが、androidではTestDevice登録がされてないためか表示できてない。
Missing google_app_id. Firebase Analytics disabled.エラーが出る場合
firebaseの設定を入れる必要があるかも?(おそらく不要、広告が出ないときに一応出してるだけっぽい)
Ad failed to loadなメッセージが出る場合
I/Ads ( 6199): Ad failed to load : 3
D/DynamitePackage( 6199): Instantiating com.google.android.gms.ads.ChimeraAdManagerCreatorImpl
I/Ads ( 6199): Use AdRequest.Builder.addTestDevice("E36Axxxxxxxxxxxxxxxxxx) to get test ads on this device.
addTestDeviceを追加すればいけそうだが、そんなadmob_flutterライブラリにそんなメソッドがない?
