Flutter广告中介管理插件flutter_ads_mediation的使用
Flutter广告中介管理插件flutter_ads_mediation的使用
执行所有广告中介设置并提供集成广告所需的所有代码。
它做了什么?
- ✅ 更新AndroidManifest.xml文件(用于发布、调试和配置)
- ✅ 更新build.gradle文件
- ✅ 更新Info.plist文件
- ✅ 更新Podfile文件
- ✅ 更新main.dart文件
- ✅ 创建lib/ad_unit_ids/ad_unit_id.dart文件
如何使用
只需在你的Flutter项目中运行以下命令:
flutter pub run flutter_ads_mediation:main <path/to/setup.json>
前提条件
最小Kotlin版本要求为 1.4.32(如果应用使用了Kotlin)
转到android/build.gradle文件,在buildscript块中将ext.kotlin_version替换为1.4.32。
buildscript {
ext.kotlin_version = '1.4.32'
}
multiDexEnabled为true且minSdkVersion为19
转到android/app/build.gradle文件,在defaultConfig块中添加/替换这两行。
android {
defaultConfig {
minSdkVersion 19
multiDexEnabled true
}
}
完整示例代码
以下是使用flutter_ads_mediation
插件的一个完整示例代码。
main.dart
import 'package:example/ad_unit_ids/ad_unit_id.dart';
import 'package:flutter_ads_mediation/ads_providers/banner_ads_provider.dart';
import 'package:flutter_ads_mediation/ads_providers/interstitial_ads_provider.dart';
import 'package:flutter_ads_mediation/ads_providers/rewarded_ads_provider.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:flutter/material.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化SDK,这一步是在请求广告之前必须做的。
// 你可以通过回调检查每个适配器的初始化状态。
MobileAds.instance.initialize().then((initializationStatus) {
initializationStatus.adapterStatuses.forEach((key, value) {
debugPrint('Adapter status for $key: ${value.description}');
});
});
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// 这个小部件是你的应用程序的根。它是有状态的,意味着它有一个状态对象(定义在下面),包含影响其外观的字段。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter 广告中介示例应用',
theme: ThemeData(
// 这是你的应用的主题。
//
// 尝试用"flutter run"运行你的应用。你会看到应用有一个蓝色工具栏。然后,不退出应用,尝试将primarySwatch改为Colors.green并调用"热重载"(在你运行"flutter run"的控制台中按"r",或者简单地保存更改以在Flutter IDE中进行"热重载")。注意计数器并没有重置回零;应用并没有重启。
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter 广告中介示例'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
// 这个小部件是你的应用的主页。它是有状态的,意味着它有一个状态对象(定义在下面),包含影响其外观的字段。
// 这个类是状态的配置。它保存了由父组件(在这个例子中是App小部件)提供的值(在这个例子中是标题),并在构建方法中使用。在Widget子类中声明的字段总是标记为"final"。
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
// 定义插屏广告
late InterstitialAdsProvider interstitial;
// 定义激励视频广告
late RewardedAdsProvider rewarded;
// 定义横幅广告
late BannerAdsProvider banner;
[@override](/user/override)
void initState() {
super.initState();
// 创建并加载插屏广告
interstitial = InterstitialAdsProvider(interstitialAdId: AdUnitId.interstitial);
// 创建并加载激励视频广告
rewarded = RewardedAdsProvider(rewardedAdId: AdUnitId.rewarded);
// 创建并加载横幅广告
banner = BannerAdsProvider(bannerAdId: AdUnitId.banner);
}
// 显示插屏广告的方法
void showInterstitialAd() {
if (interstitial.available) {
interstitial.show();
}
}
// 显示激励视频广告的方法
void showRewardedAd() {
if (rewarded.available) {
rewarded.show();
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: ListView.builder(
itemCount: 12,
itemBuilder: (context, index) {
String item = (index++).toString();
if (index == 6) {
return SizedBox(
height: banner.ad?.size.height.toDouble(),
width: banner.ad?.size.width.toDouble(),
child: AdWidget(
ad: banner.ad!,
),
);
}
return ListTile(
leading: CircleAvatar(child: Text(item)),
title: Text('列表项 $item'),
);
},
),
floatingActionButton: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
showInterstitialAd();
},
child: const Text('显示插屏广告'),
),
const SizedBox(width: 10),
ElevatedButton(
onPressed: () {
showRewardedAd();
},
child: const Text('显示激励视频广告'),
),
],
),
);
}
}
更多关于Flutter广告中介管理插件flutter_ads_mediation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告中介管理插件flutter_ads_mediation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter项目中集成广告中介管理插件flutter_ads_mediation
可以帮助你更有效地管理多个广告网络,从而提高广告填充率和收益。以下是一个基本的代码案例,展示如何在Flutter项目中使用flutter_ads_mediation
插件。
步骤 1: 添加依赖
首先,你需要在pubspec.yaml
文件中添加flutter_ads_mediation
依赖。确保你使用的是最新版本的插件。
dependencies:
flutter:
sdk: flutter
flutter_ads_mediation: ^x.y.z # 替换为最新版本号
然后运行flutter pub get
来安装依赖。
步骤 2: 配置Android项目
在android/app/src/main/AndroidManifest.xml
中,添加必要的广告网络权限和配置。不同的广告网络有不同的配置要求,请参考各个广告网络的官方文档。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<!-- 添加广告网络所需的权限和配置 -->
<!-- 例如,对于AdMob,你可能需要以下配置 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx"/>
<!-- 其他广告网络的配置 -->
</manifest>
步骤 3: 初始化广告中介
在你的Flutter应用的入口文件(通常是main.dart
)中,初始化广告中介插件。
import 'package:flutter/material.dart';
import 'package:flutter_ads_mediation/flutter_ads_mediation.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
// 初始化广告中介
AdsMediation.initialize(
adNetworks: [
AdNetworkConfig(
networkId: 'network1_id', // 替换为实际的网络ID
adapterClass: 'com.example.adapter.Network1Adapter', // 替换为实际的适配器类名
// 其他配置参数
),
AdNetworkConfig(
networkId: 'network2_id', // 替换为实际的网络ID
adapterClass: 'com.example.adapter.Network2Adapter', // 替换为实际的适配器类名
// 其他配置参数
),
// 添加更多广告网络配置
],
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Ads Mediation Demo'),
),
body: Center(
child: Text('Hello, Flutter Ads Mediation!'),
),
);
}
}
步骤 4: 显示广告
在你的应用中显示广告。例如,显示一个横幅广告:
import 'package:flutter/material.dart';
import 'package:flutter_ads_mediation/flutter_ads_mediation.dart';
class AdBanner extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
height: 50, // 根据广告网络的要求调整高度
width: double.infinity,
child: AdsMediationBanner(
adUnitId: 'your_ad_unit_id', // 替换为你的广告单元ID
listener: (AdEvent event, Map<String, dynamic> data) {
if (event == AdEvent.loaded) {
print('Ad loaded successfully.');
} else if (event == AdEvent.failedToLoad) {
print('Failed to load ad: ${data['error']}');
}
// 处理其他事件
},
),
);
}
}
在你的MyHomePage
中使用AdBanner
组件:
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Ads Mediation Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
AdBanner(), // 添加横幅广告
Text('Hello, Flutter Ads Mediation!'),
],
),
),
);
}
}
注意
flutter_ads_mediation
插件的具体API和使用方式可能会随着版本更新而变化,请参考插件的官方文档和示例代码。- 不同的广告网络可能有不同的初始化参数和配置要求,请确保按照各个广告网络的官方文档进行配置。
- 广告中介管理涉及多个广告网络的集成,调试和测试可能会比较复杂,建议使用真机进行测试,并关注各个广告网络的控制台和日志输出。
这个代码案例提供了一个基本的框架,你可以根据实际需求进行扩展和修改。