Flutter广告展示插件basic_ads的使用
Flutter广告展示插件basic_ads的使用
本文将详细介绍如何在Flutter项目中使用basic_ads
插件来展示广告。
基本介绍
basic_ads
是一个简单的广告包,基于Google移动广告。它易于使用且可定制。
开始使用
1. 添加依赖
在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
basic_ads: ^1.0.0
2. 平台特定设置
Android
确保你的Android SDK版本不低于20,并在android/app/build.gradle
文件中设置compileSdkVersion
或compileSdk
为28或更高版本。
在AndroidManifest.xml
文件中添加以下代码:
<application>
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-################~##########"/>
</application>
注意: 将ca-app-pub-################~##########
替换为你的AdMob应用ID。
iOS
在Info.plist
文件中添加以下代码:
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-################~##########</string>
注意: 将ca-app-pub-################~##########
替换为你的AdMob应用ID。
3. 初始化
在主函数中添加以下代码以初始化广告:
import 'package:basic_ads/basic_ads.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await BasicAds.instance.initialize(
config: const BasicAdsConfig(),
);
}
注意: 你可以通过传递BasicAdsConfig
对象来自定义广告。如果不传递BasicAdsConfig
对象,则会使用默认配置(使用测试广告单元ID)。
4. 展示横幅广告
在你的widget中添加以下代码以展示横幅广告:
Scaffold(
body: Center(),
bottomNavigationBar: BasicAdsBanner(),
);
5. 展示插屏广告
在你的widget中添加以下代码以展示插屏广告:
ElevatedButton(
onPressed: () async {
try {
await BasicAds.instance.interstitialAd.show();
} catch (error, stackTrace) {
log('Error: $error\n$stackTrace');
}
},
child: const Text('Show Interstitial Ad'),
);
6. 展示激励视频广告
在你的widget中添加以下代码以展示激励视频广告:
FilledButton.tonal(
onPressed: () async {
try {
await BasicAds.instance.rewardedAd.show(
(value) => log('Rewarded Ad Reward: $value'),
);
} catch (error, stackTrace) {
log('Error: $error\n$stackTrace');
}
},
child: const Text('Rewarded Ad'),
);
7. 展示开屏广告
将BasicAppOpenAdWidget
包裹到你的widget树的顶部。你也可以将其包裹到runApp
方法或MaterialApp
widget中。
runApp(
const BasicAppOpenAdWidget(
displayMode: AppOpenAdDisplayMode.onlyAppStateChangedToForeground,
replayInterval: Duration(days: 1),
child: MainApp(),
),
);
显示模式枚举
关于何时展示广告,可以选择以下选项之一:
-
AppOpenAdDisplayMode.onlyFirstOpen
- 只在首次打开应用程序时展示广告。如果应用程序切换到后台再回到前台,则不会展示广告。
-
AppOpenAdDisplayMode.firstOpenAndAppStateChangedToForeground
- 在首次打开应用程序或应用程序切换到后台再回到前台时展示广告。
-
AppOpenAdDisplayMode.onlyAppStateChangedToForeground
- 只在应用程序切换到后台再回到前台时展示广告。
重新播放间隔
关于广告展示频率,可以设置值为每天一次。默认值为一天。
replayInterval: Duration(days: 1)
完整示例
以下是一个完整的示例代码,展示了如何在Flutter项目中使用basic_ads
插件:
import 'dart:developer';
import 'package:basic_ads/basic_ads.dart';
import 'package:flutter/material.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await BasicAds.instance.initialize(
config: const BasicAdsConfig(),
);
runApp(
const BasicAppOpenAdWidget(
displayMode: AppOpenAdDisplayMode.onlyAppStateChangedToForeground,
replayInterval: Duration(days: 1),
child: MainApp(),
),
);
}
class MainApp extends StatelessWidget {
const MainApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return const BasicAppOpenAdWidget(
child: MaterialApp(
home: HomeView(),
),
);
}
}
class HomeView extends StatelessWidget {
const HomeView({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async {
try {
await BasicAds.instance.interstitialAd.show();
} catch (error, stackTrace) {
log('Interstitial Ad Error: ', error: error, stackTrace: stackTrace);
}
},
child: const Text('Interstitial Ad'),
),
FilledButton.tonal(
onPressed: () async {
try {
await BasicAds.instance.rewardedAd.show(
(value) => log('Rewarded Ad Reward: $value'),
);
} catch (error, stackTrace) {
log('Rewarded Ad Error: ', error: error, stackTrace: stackTrace);
}
},
child: const Text('Rewarded Ad'),
),
],
),
),
bottomNavigationBar: const BasicAdsBanner(),
);
}
}
更多关于Flutter广告展示插件basic_ads的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html