Flutter广告集成插件adsense_mobile的使用

好的,以下是根据您的要求整理后的关于“Flutter广告集成插件adsense_mobile的使用”的内容。内容中包含了完整的示例代码,并且去掉了索引链接及网址。


Flutter广告集成插件adsense_mobile的使用

在Flutter应用中集成广告通常涉及到使用AdMob插件。adsense_mobile 是一个封装了 google_mobile_ads 插件的库,用于在移动应用中展示AdMob广告。

安装插件

首先,在项目的 pubspec.yaml 文件中添加 adsense_mobile 依赖:

dependencies:
  flutter:
    sdk: flutter
  adsense_mobile: ^版本号

然后运行 flutter pub get 来安装依赖。

配置AdMob

在Google AdMob控制台中创建一个新的应用,并获取您的AdMob应用ID。在Android和iOS平台中分别配置AdMob应用ID。

Android配置

android/app/src/main/AndroidManifest.xml 中添加以下权限和meta-data:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">
    <!-- 添加网络访问权限 -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <application>
        <!-- 在此处添加您的AdMob应用ID -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>

iOS配置

ios/Runner/Info.plist 中添加以下键值对:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxx~yyyyyyyyyy</string>

使用adsense_mobile插件

接下来,我们通过一个简单的示例来展示如何使用 adsense_mobile 插件来加载和展示广告。

初始化广告

首先,在应用启动时初始化广告管理器:

import 'package:flutter/material.dart';
import 'package:adsense_mobile/adsense_mobile.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  AdsenseMobile.init(
    androidId: "ca-app-pub-xxxxxxxxxxxxxx~yyyyyyyyyy",
    iosId: "ca-app-pub-xxxxxxxxxxxxxx~yyyyyyyyyy",
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomeScreen(),
    );
  }
}

展示横幅广告

在应用的主界面中添加一个横幅广告:

import 'package:flutter/material.dart';
import 'package:adsense_mobile/adsense_mobile.dart';

class HomeScreen extends StatefulWidget {
  [@override](/user/override)
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  late BannerAd _bannerAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化Banner广告
    _bannerAd = BannerAd(
      adUnitId: Platform.isAndroid ? "ca-app-pub-xxxxxxxxxxxxxx/zzzzzzzzzz" : "ca-app-pub-xxxxxxxxxxxxxx/zzzzzzzzzz",
      size: AdSize.banner,
      request: AdRequest(),
      listener: BannerAdListener(
        onAdLoaded: (ad) {
          setState(() {});
        },
        onAdFailedToLoad: (ad, error) {
          ad.dispose();
        },
      ),
    );

    // 加载广告
    _bannerAd.load();
  }

  [@override](/user/override)
  void dispose() {
    _bannerAd.dispose();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter AdMob Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('欢迎来到Flutter AdMob Demo!'),
            SizedBox(height: 20),
            // 展示横幅广告
            Container(
              width: _bannerAd.size.width.toDouble(),
              height: _bannerAd.size.height.toDouble(),
              child: AdWidget(ad: _bannerAd),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter广告集成插件adsense_mobile的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告集成插件adsense_mobile的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


要在Flutter应用中集成AdMob广告,可以使用google_mobile_ads插件。google_mobile_ads是Flutter官方支持的插件,用于在Flutter应用中显示AdMob广告。虽然你提到了adsense_mobile插件,但目前Flutter社区更推荐使用google_mobile_ads插件。下面是如何使用google_mobile_ads插件的步骤:

1. 添加依赖

在你的pubspec.yaml文件中添加google_mobile_ads插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  google_mobile_ads: ^3.0.0

然后运行flutter pub get来安装插件。

2. 配置AdMob应用

在AdMob控制台中创建应用和广告单元,并获取广告单元ID。

3. 初始化插件

在你的main.dart文件中初始化google_mobile_ads插件:

import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize().then((InitializationStatus status) {
    print('Initialization done: ${status.adapterStatuses}');
    runApp(MyApp());
  });
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AdExample(),
    );
  }
}

4. 显示横幅广告

在你的应用页面中显示横幅广告:

class AdExample extends StatefulWidget {
  [@override](/user/override)
  _AdExampleState createState() => _AdExampleState();
}

class _AdExampleState extends State<AdExample> {
  BannerAd? _bannerAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _loadBannerAd();
  }

  void _loadBannerAd() {
    _bannerAd = BannerAd(
      adUnitId: 'ca-app-pub-3940256099942544/6300978111', // 替换为你的广告单元ID
      size: AdSize.banner,
      request: AdRequest(),
      listener: BannerAdListener(
        onAdLoaded: (Ad ad) {
          print('BannerAd loaded.');
        },
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          print('BannerAd failed to load: $error');
          ad.dispose();
        },
        onAdOpened: (Ad ad) => print('BannerAd opened.'),
        onAdClosed: (Ad ad) => print('BannerAd closed.'),
      ),
    )..load();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AdMob Example'),
      ),
      body: Column(
        children: [
          Expanded(
            child: Center(
              child: Text('Hello, world!'),
            ),
          ),
          if (_bannerAd != null)
            Container(
              alignment: Alignment.center,
              width: _bannerAd!.size.width.toDouble(),
              height: _bannerAd!.size.height.toDouble(),
              child: AdWidget(ad: _bannerAd!),
            ),
        ],
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _bannerAd?.dispose();
    super.dispose();
  }
}

5. 显示插页式广告

你还可以显示插页式广告:

class AdExample extends StatefulWidget {
  [@override](/user/override)
  _AdExampleState createState() => _AdExampleState();
}

class _AdExampleState extends State<AdExample> {
  InterstitialAd? _interstitialAd;

  [@override](/user/override)
  void initState() {
    super.initState();
    _loadInterstitialAd();
  }

  void _loadInterstitialAd() {
    InterstitialAd.load(
      adUnitId: 'ca-app-pub-3940256099942544/1033173712', // 替换为你的广告单元ID
      request: AdRequest(),
      adLoadCallback: InterstitialAdLoadCallback(
        onAdLoaded: (InterstitialAd ad) {
          print('InterstitialAd loaded.');
          _interstitialAd = ad;
        },
        onAdFailedToLoad: (LoadAdError error) {
          print('InterstitialAd failed to load: $error');
        },
      ),
    );
  }

  void _showInterstitialAd() {
    if (_interstitialAd != null) {
      _interstitialAd!.show();
    } else {
      print('InterstitialAd is not ready yet.');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('AdMob Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showInterstitialAd,
          child: Text('Show Interstitial Ad'),
        ),
      ),
    );
  }

  [@override](/user/override)
  void dispose() {
    _interstitialAd?.dispose();
    super.dispose();
  }
}
回到顶部