Flutter广告中介插件gma_mediation_inmobi的使用
Flutter广告中介插件gma_mediation_inmobi的使用
简介
gma_mediation_inmobi
是一个用于Flutter应用的插件,它允许通过Google Mobile Ads SDK来中介InMobi广告网络。此插件依赖于 Pigeon 插件生成Dart层与平台代码之间的桥梁类。
安装和配置
-
添加依赖 在您的
pubspec.yaml
文件中添加以下内容:dependencies: gma_mediation_inmobi: ^最新版本号 # 请根据实际情况填写版本号
-
初始化插件 根据官方文档,完成必要的设置,包括但不限于:
- 注册并获取AdMob账号。
- 配置InMobi广告网络。
- 在项目中配置必要的权限。
-
导入库 在需要使用的Dart文件顶部引入必要的库:
import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:gma_mediation_inmobi/gma_mediation_inmobi.dart';
-
加载广告
下面是一个简单的示例,演示了如何在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
更多关于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_ads
和gma_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(); // 在实际使用中,这里可以是任何布局容器
}
}
注意:
- 替换所有
ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx
为实际的广告单元ID。 - 确保在
AdRequest
中添加正确的测试设备ID以接收测试广告,避免在实际设备或用户中展示测试广告。 - 根据需要调整广告大小和定位。
通过上述步骤,你应该能够在Flutter应用中成功集成并通过Google Mobile Ads中介服务展示InMobi广告。