facebook twitter hatena line email

Flutter/admob/admob flutter

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

インストール

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ライブラリにそんなメソッドがない?