Flutter广告加速插件ad_turbo的使用
Flutter广告加速插件ad_turbo的使用
ad_turbo
实现了Google Ads,简单且快速的方式支持所有类型的Google Ads(包括Android上的原生广告),包括横幅广告、开屏广告、插屏广告、应用内视频广告等。
展示一些爱心吧,点赞包并星标仓库以支持该项目
要轻松地将广告集成到您的Flutter应用程序中。
特性
Google Mobile Ads
- 横幅广告
- 插屏广告
- 奖励广告
- 奖励插屏广告
- 开屏广告
- 小型原生广告、原生广告、原生视频广告(仅限Android)
入门指南
在您的 pubspec.yaml
文件中添加以下依赖项:
dependencies:
ad_turbo: "<LATEST_VERSION>"
平台特定设置
Android
设置 minSdkVersion
为 19
编辑 \android\app\build.gradle
文件,设置 minSdkVersion
为 19:
android {
defaultConfig {
minSdkVersion 19
}
}
需要启用多DEX支持
编辑 \android\app\build.gradle
文件,启用多DEX支持:
android {
defaultConfig {
multiDexEnabled true
}
}
更新 AndroidManifest.xml
在您的应用的 /android/app/src/main/AndroidManifest.xml
文件中添加以下内容:
<manifest>
<application>
<!-- 测试ID -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
</application>
</manifest>
请注意,这是一个测试ID。您需要添加自己的AdMob ID以投放实际广告。
iOS
更新 Info.plist
在您的应用的 ios/Runner/Info.plist
文件中添加以下内容:
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~3347511713</string>
同样,这是一个测试ID。您需要添加自己的AdMob ID以投放实际广告。
文档
初始化插件
您需要在 main
函数中初始化插件:
import 'package:ad_turbo/ad_turbo.dart';
void main() {
adTurbo();
runApp(const MyApp());
}
adTurbo() async{
await AdTurbo.init();
await AdTurbo.adTurboTestDevice(testDeviceIds: "BC754A812958EE7FF20599662417762B");
}
AdHelper
您可以创建一个平台特定的Google Mob ID:
import 'dart:io' show Platform;
class AdTurboAdHelper {
static String get bannerAdUnitId {
if (Platform.isAndroid) {
return "ca-app-pub-3940256099942544/6300978111";
} else if (Platform.isIOS) {
return "ca-app-pub-3940256099942544/2934735716";
} else {
throw new UnsupportedError("Unsupported platform");
}
}
static String get appOpenAdUnitId {
if (Platform.isAndroid) {
return "ca-app-pub-3940256099942544/3419835294";
} else if (Platform.isIOS) {
return "ca-app-pub-3940256099942544/5662855259";
} else {
throw new UnsupportedError("Unsupported platform");
}
}
}
横幅广告
要实现横幅广告,您需要初始化 BannerAdTurbo
:
final _bannerAdTurbo = BannerAdTurbo();
void loadAd() async{
await _bannerAdTurbo.loadBannerAdTurbo(
adUnitId: AdTurboAdHelper.bannerAdUnitId,
onAdLoaded: (ad) {
print("ad_turbo_plugin : TurboBannerAd loaded");
isBannerAdReady = true;
setState(() {});
},
onAdFailedToLoad: (ad, error) {
isBannerAdReady = false;
ad.dispose();
print('TurboBannerAd failed to load: $error');
loadAd();
},
onAdOpened: (ad) => print('TurboBannerAd opened.'),
onAdClosed: (ad) => print('TurboBannerAd closed.'),
onAdImpression: (ad) => print('TurboBannerAd impression.'),
adSize: BannerAdTurbo.banner
);
}
// 获取横幅广告
_bannerAdTurbo.getBannerAdTurbo();
插屏广告
要实现插屏广告,您需要初始化 InterstitialAdTurbo
:
final _interstitialAdTurbo = InterstitialAdTurbo();
void loadAd() async{
await _interstitialAdTurbo.loadInterstitialAdTurbo(
adUnitId: AdTurboAdHelper.interstitialAdUnitId,
onAdLoaded: (ad) {
print('$ad loaded.');
_interstitialAdTurbo.interstitialAd = ad;
isInterstitialAdReady = true;
},
onAdFailedToLoad: (error) {
isInterstitialAdReady = false;
print('Failed to load an interstitial ad: ${error.message}');
loadAd();
}
);
}
// 显示插屏广告
ElevatedButton(
onPressed: ()async{
await _interstitialAdTurbo.interstitialAd?.show();
await _interstitialAdTurbo.interstitialCallback();
},
child: const Text("InterstitialAd")
);
奖励广告
要实现奖励广告,您需要初始化 RewardedAdTurbo
:
final _rewardedAdTurbo = RewardedAdTurbo();
void loadAd() async{
await _rewardedAdTurbo.loadRewardedAdTurbo(
adUnitId: AdTurboAdHelper.rewardedAdUnitId,
onAdLoaded: (ad) {
print('$ad loaded.');
_rewardedAdTurbo.rewardedAd = ad;
isRewardedAdReady = true;
},
onAdFailedToLoad: (error) {
isRewardedAdReady = false;
print('RewardedAd failed to load: $error');
loadAd();
}
);
}
// 显示奖励广告
ElevatedButton(
onPressed: ()async{
await _rewardedAdTurbo.rewardedAd.show();
await _rewardedAdTurbo.rewardedCallback();
},
child: const Text("RewardedAd")
);
奖励插屏广告
要实现奖励插屏广告,您需要初始化 RewardedInterstitialAdTurbo
:
final _rewardedInterstitialAdTurbo = RewardedInterstitialAdTurbo();
void loadAd() async{
await _rewardedInterstitialAdTurbo.loadRewardedInterstitialAdTurbo(
adUnitId: AdTurboAdHelper.rewardedInterstitial,
onAdLoaded: (ad) {
print('$ad loaded.');
_rewardedInterstitialAdTurbo.rewardedInterstitial = ad;
isRewardedInterstitialAdReady = true;
},
onAdFailedToLoad: (error) {
isRewardedInterstitialAdReady = false;
print('RewardedInterstitialAd failed to load: $error');
loadAd();
}
);
}
// 显示奖励插屏广告
ElevatedButton(
onPressed: ()async{
_rewardedInterstitialAdTurbo.rewardedInterstitial?.show();
await _rewardedInterstitialAdTurbo.rewardedInterstitialCallback();
},
child: const Text("RewardedInterstitialAd")
);
开屏广告
要实现开屏广告,您需要初始化 AppOpenAdTurbo
:
final _appOpenAdTurbo = AppOpenAdTurbo();
void loadAd() async{
await _appOpenAdTurbo.loadAppOpenAdTurbo(
adUnitId: AdTurboAdHelper.appOpenAdUnitId,
orientation: AppOpenAdTurbo.orientationPortrait,
onAdLoaded: (ad) {
print('$ad loaded');
_appOpenAdTurbo.appOpenAd = ad;
isAppOpenAdAdReady = true;
},
onAdFailedToLoad: (error) {
isAppOpenAdAdReady = false;
print('AppOpenAd failed to load: $error');
loadAd();
},
);
}
// 显示开屏广告
ElevatedButton(
onPressed: ()async{
await _appOpenAdTurbo.appOpenAd?.show();
await _appOpenAdTurbo.appOpenCallback();
},
child: const Text("AppOpenAd")
);
原生广告
要实现原生广告,您需要初始化 NativeAdTurbo
:
原生小广告
final _nativeAdTurbo = NativeAdTurbo();
void loadAd() async{
await _nativeAdTurbo.loadNativeSmallAdTurbo(
adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId,
onAdLoaded: (ad) {
print('Ad loaded.');
isNativeSmallAdReady = true;
setState(() => "");
},
onAdFailedToLoad: (ad, error) {
isNativeSmallAdReady = false;
ad.dispose();
print('Ad load failed (code=${error.code} message=${error.message})');
loadAd();
},
onAdOpened: (ad) => print('Ad opened.'),
onAdClosed: (ad) => print('Ad closed.'),
onAdImpression: (ad) => print('Ad impression.'),
onNativeAdClicked: (ad) => print('Ad clicked.')
);
}
// 获取原生小广告
Container(height: 102, child: _nativeAdTurbo.getNativeSmallAdTurbo())
原生中广告
final _nativeAdTurbo = NativeAdTurbo();
void loadAd() async{
await _nativeAdTurbo.loadNativeMediumAdTurbo(
adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId,
onAdLoaded: (ad) {
print('Ad loaded.');
isNativeMediumAdReady = true;
setState(() => "");
},
onAdFailedToLoad: (ad, error) {
isNativeMediumAdReady = false;
ad.dispose();
print('Ad load failed (code=${error.code} message=${error.message})');
loadAd();
},
onAdOpened: (ad) => print('Ad opened.'),
onAdClosed: (ad) => print('Ad closed.'),
onAdImpression: (ad) => print('Ad impression.'),
onNativeAdClicked: (ad) => print('Ad clicked.')
);
}
// 获取原生中广告
Container(height: 255, child: _nativeAdTurbo.getNativeMediumAdTurbo())
原生视频广告
final _nativeAdTurbo = NativeAdTurbo();
void loadAd() async{
await _nativeAdTurbo.loadNativeVideoAdTurbo(
nativeVideoID: AdTurboAdHelper.nativeAdvancedVideoAdUnitId
);
}
// 获取原生视频广告
Container(height: 310, child: _nativeAdTurbo.getNativeVideoAdTurbo(context: context))
更多关于Flutter广告加速插件ad_turbo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter广告加速插件ad_turbo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用ad_turbo
插件来加速广告加载的一个示例代码案例。请注意,这只是一个基本的示例,具体实现可能会根据实际需求有所不同。
首先,确保你已经在pubspec.yaml
文件中添加了ad_turbo
依赖:
dependencies:
flutter:
sdk: flutter
ad_turbo: ^最新版本号 # 替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,你可以按照以下步骤在你的Flutter应用中使用ad_turbo
插件:
- 初始化AdTurbo:
在你的应用的主入口文件(通常是main.dart
)中,初始化AdTurbo
。
import 'package:flutter/material.dart';
import 'package:ad_turbo/ad_turbo.dart';
void main() {
// 初始化AdTurbo
AdTurbo.instance.init(
apiKey: '你的API_KEY', // 替换为你的AdTurbo API密钥
appId: '你的APP_ID', // 替换为你的应用ID
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Ad Turbo Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
- 加载并显示广告:
在你的主页面或其他需要显示广告的页面,使用AdTurbo
加载并显示广告。
import 'package:flutter/material.dart';
import 'package:ad_turbo/ad_turbo.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
AdWidget? _adWidget;
@override
void initState() {
super.initState();
// 加载广告
_loadAd();
}
void _loadAd() async {
// 创建广告配置
final AdConfiguration adConfig = AdConfiguration(
adUnitId: '你的AD_UNIT_ID', // 替换为你的广告单元ID
placementId: '你的PLACEMENT_ID', // 替换为你的广告位ID(如果有的话)
// 其他配置参数,如广告尺寸、格式等,可以根据需要设置
);
// 创建AdWidget
_adWidget = await AdWidget.load(
context: context,
configuration: adConfig,
);
// 如果广告加载成功,可以将其添加到widget树中
if (_adWidget != null) {
setState(() {});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Ad Turbo Demo'),
),
body: Center(
child: _adWidget ?? CircularProgressIndicator(), // 显示加载指示器直到广告加载完成
),
);
}
}
在上面的代码中,我们首先初始化了AdTurbo
实例,并设置了API密钥和应用ID。然后,在MyHomePage
页面中,我们通过AdConfiguration
配置广告参数,并使用AdWidget.load
方法加载广告。加载完成后,我们将广告widget添加到widget树中显示。
请注意,以上代码仅作为示例,实际使用时可能需要根据具体的广告网络和需求进行调整。同时,确保你已经正确配置了AdTurbo的相关参数,并且已经获得了必要的API密钥和广告单元ID。
另外,由于广告网络可能会更新其SDK和API,因此建议查阅最新的ad_turbo
插件文档以获取最新的使用方法和最佳实践。