Flutter广告中介插件gma_mediation_inmobi的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter广告中介插件gma_mediation_inmobi的使用

简介

gma_mediation_inmobi 是一个用于Flutter应用的插件,它允许通过Google Mobile Ads SDK来中介InMobi广告网络。此插件依赖于 Pigeon 插件生成Dart层与平台代码之间的桥梁类。

安装和配置

  1. 添加依赖 在您的pubspec.yaml文件中添加以下内容:

    dependencies:
      gma_mediation_inmobi: ^最新版本号 # 请根据实际情况填写版本号
    
  2. 初始化插件 根据官方文档,完成必要的设置,包括但不限于:

    • 注册并获取AdMob账号。
    • 配置InMobi广告网络。
    • 在项目中配置必要的权限。
  3. 导入库 在需要使用的Dart文件顶部引入必要的库:

    import 'package:google_mobile_ads/google_mobile_ads.dart';
    import 'package:gma_mediation_inmobi/gma_mediation_inmobi.dart';
    
  4. 加载广告

    下面是一个简单的示例,演示了如何在Flutter应用程序中加载和显示横幅广告(Banner Ad)。

示例代码

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize(); // 初始化移动广告SDK
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  BannerAd? _bannerAd;

  @override
  void initState() {
    super.initState();
    _loadBannerAd();
  }

  void _loadBannerAd() {
    _bannerAd = BannerAd(
      adUnitId: 'ca-app-pub-3940256099942544/6300978111', // 测试用Ad Unit ID
      size: AdSize.banner,
      request: AdRequest(),
      listener: BannerAdListener(
        onAdLoaded: (_) {
          print('Banner Ad loaded');
          setState(() {}); // 更新UI以显示广告
        },
        onAdFailedToLoad: (ad, error) {
          print('Banner Ad failed to load: $error');
          ad.dispose();
        },
      ),
    )..load();
  }

  @override
  void dispose() {
    _bannerAd?.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Column(
          children: [
            Expanded(
              child: Center(
                child: Text('Test App'),
              ),
            ),
            if (_bannerAd != null)
              Align(
                alignment: Alignment.bottomCenter,
                child: Container(
                  width: _bannerAd!.size.width.toDouble(),
                  height: _bannerAd!.size.height.toDouble(),
                  child: AdWidget(ad: _bannerAd!),
                ),
              ),
          ],
        ),
      ),
    );
  }
}

注意事项

  • 使用真实设备进行测试时,请确保使用自己的AdMob Ad Unit ID替换示例中的ID。
  • 开发期间建议使用测试广告单元ID,避免违反AdMob政策。
  • 检查并遵守相关法律法规及各平台(如iOS、Android)的广告展示规范。

其他资源

如果您有任何疑问或遇到问题,可以通过Github Issues反馈。


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

1 回复

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


当然,以下是一个关于如何在Flutter项目中集成和使用gma_mediation_inmobi广告中介插件的示例代码。这个插件允许你在Flutter应用中通过Google Mobile Ads中介服务展示InMobi广告。

步骤 1: 添加依赖

首先,在你的pubspec.yaml文件中添加google_mobile_adsgma_mediation_inmobi依赖:

dependencies:
  flutter:
    sdk: flutter
  google_mobile_ads: ^x.y.z  # 替换为最新版本号
  gma_mediation_inmobi: ^a.b.c  # 替换为最新版本号

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

步骤 2: 配置Android项目

android/app/build.gradle文件中,确保你的minSdkVersion至少为16,并添加必要的配置:

android {
    ...
    defaultConfig {
        ...
        minSdkVersion 16
        ...
    }
    ...
}

dependencies {
    implementation 'com.google.android.gms:play-services-ads:21.1.0'  // 确保使用兼容版本
    // 其他依赖...
}

android/app/src/main/AndroidManifest.xml中添加必要的权限:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">
    ...
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    ...
</manifest>

步骤 3: 配置iOS项目

在iOS项目中,你需要确保Info.plist包含必要的广告标识符配置。打开ios/Runner/Info.plist并添加以下键:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx</string>  // 替换为你的AdMob应用ID
<key>SKAdNetworkItems</key>
<array>
    <!-- 添加InMobi的SKAdNetwork配置 -->
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>VNGUS2L2UL.skadnetwork</string>
    </dict>
    <!-- 其他SKAdNetwork配置... -->
</array>

步骤 4: 初始化并展示广告

在你的Flutter代码中,初始化Google Mobile Ads并展示InMobi中介广告。以下是一个简单的示例:

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Ad Mediation Example'),
        ),
        body: Center(
          child: MyAdWidget(),
        ),
      ),
    );
  }
}

class MyAdWidget extends StatefulWidget {
  @override
  _MyAdWidgetState createState() => _MyAdWidgetState();
}

class _MyAdWidgetState extends State<MyAdWidget> {
  BannerAd? _bannerAd;

  @override
  void initState() {
    super.initState();
    _createBannerAd();
    _bannerAd?.load();
  }

  @override
  void dispose() {
    _bannerAd?.dispose();
    super.dispose();
  }

  void _createBannerAd() {
    _bannerAd = BannerAd(
      adUnitId: 'ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx',  // 替换为你的Banner广告单元ID
      size: AdSize.banner,
      request: AdRequest(
        targetingInfo: MobileAdTargetingInfo(
          keywords: <String>['flutter', 'mobile', 'ads'],
          contentUrl: 'https://www.example.com',
          // 其他定向信息...
        ),
        testDevices: <String>[],  // 添加测试设备ID以便在测试时接收测试广告
      ),
      listener: BannerAdListener(
        onAdLoaded: (Ad ad) {
          print('Banner ad loaded.');
          _bannerAd?.show(
            anchorType: AnchorType.bottom,
          );
        },
        onAdFailedToLoad: (Ad ad, LoadAdError error) {
          print('Banner ad failed to load: $error');
        },
        // 其他监听器回调...
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Container();  // 在实际使用中,这里可以是任何布局容器
  }
}

注意

  1. 替换所有ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx为实际的广告单元ID。
  2. 确保在AdRequest中添加正确的测试设备ID以接收测试广告,避免在实际设备或用户中展示测试广告。
  3. 根据需要调整广告大小和定位。

通过上述步骤,你应该能够在Flutter应用中成功集成并通过Google Mobile Ads中介服务展示InMobi广告。

回到顶部