ad_turbo
ad_turbo 以简单快捷的方式实现 Google Ads,支持所有类型的 Google Ads、原生广告(Android)、横幅广告、应用打开广告、插页式广告、应用打开广告、激励广告、激励插页式广告和原生视频广告(Android)到 Flutter 应用中。
给包打上 ? ? 并为仓库点赞 ? 以支持该项目
轻松将广告集成到您的 Flutter 应用中。
功能
Google 移动广告
- 横幅广告
- 插页式广告
- 激励广告
- 激励插页式广告
- 应用打开广告
- 原生小广告、原生广告、原生视频(仅限 Android)
入门
- 将此依赖项添加到您的 pubspec.yaml 文件中
dependencies:
ad_turbo: "<LATEST_VERSION>"
平台特定设置
Android
在 \android\app\build.gradle 文件中将 minSdkVersion 设置为 19
android {
defaultConfig {
MinSdkVersion 19
}
}
应用需要 Multidex 支持
在 \android\app\build.gradle 文件中将 multiDexEnabled 设置为 true
android {
defaultConfig {
multiDexEnabled true
}
}
更新 AndroidManifest.xml
在应用的 /android/app/src/main/AndroidManifest.xml 文件中,添加此项。
<manifest>
<application>
<!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
</application>
</manifest>
这是一个测试 ID,您需要添加您的 admob ID 以获得真实广告:android:value=”ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy”
AdMob 应用 ID 必须包含在 AndroidManifest.xml 中。否则,应用启动时将崩溃。
iOS
更新您的 Info.plist
在应用的 ios/Runner/Info.plist 文件中,添加一个 GADApplicationIdentifier 键,其字符串值为您的 AdMob 应用 ID。
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~3347511713</string>
这是一个测试 ID,您需要添加您的 admob ID 以获得真实广告:ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy
有关将 Google 移动广告 SDK 集成到 Flutter 应用中的更多信息,请参阅 此指南。
文档
ad_turbo 实现
初始化插件
您需要在您的 main 函数中添加此项,以便将插件广告集成到您的应用的主 dart 文件中。
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 创建 adhelper “
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");
}
}
}
有关如何指定 AdHelper 的更多详细信息,请在此处查看 ad_turbo AdTurboAdHelper 的示例:此处。
横幅广告
####- 要实现横幅广告,您需要初始化 BannerAdTurbo。
final _bannerAdTurbo = BannerAdTurbo();
####- 加载横幅广告有一个函数 loadBannerAdTurbo。
loadAd() async{
await _bannerAdTurbo.loadBannerAdTurbo(
adUnitId: AdTurboAdHelper.bannerAdUnitId);
}
####- 加载后,您可以通过此获取 bannerAd。
- banner Ad 将作为小部件获取
_bannerAdTurbo.getBannerAdTurbo();
有关如何实现 BannerAd 的更多详细信息,请在此处查看 ad_turbo bannerAd 的示例:此处。
插页式广告
####- 要实现插页式广告,您需要初始化 InterstitialAdTurbo。
final _interstitialAdTurbo = InterstitialAdTurbo();
####- 加载插页式广告有一个函数 loadInterstitialAdTurbo。
loadAd() async{
await _interstitialAdTurbo.loadInterstitialAdTurbo(
adUnitId: AdTurboAdHelper.interstitialAdUnitId);
}
####- 加载插页式广告后,您可以通过此函数获取插页式广告。
- 插页式广告可以点击打开
- 您还可以获取插页式广告的回调函数
ElevatedButton(onPressed: ()async{
await _interstitialAdTurbo.interstitialAd?.show();
await _interstitialAdTurbo.interstitialCallback();
},
child: const Text("InterstitialAd")),
有关如何实现插页式广告的更多详细信息,请在此处查看 ad_turbo interstitialAd 的示例:此处。
激励广告
####- 要实现激励广告,您需要初始化 RewardedAdTurbo。
final _rewardedAdTurbo = RewardedAdTurbo();
####- 加载激励广告有一个函数 loadRewardedAdTurbo。
loadAd() async{
await _rewardedAdTurbo.loadRewardedAdTurbo(
adUnitId: AdTurboAdHelper.rewardedAdUnitId);
}
####- 加载激励广告后,您可以通过此函数获取激励广告。
- 激励广告可以点击打开
- 您还可以获取激励广告的回调函数
ElevatedButton(onPressed: ()async{
await _rewardedAdTurbo.rewardedAd.show();
await _rewardedAdTurbo.rewardedCallback();
},
child: const Text("RewardedAd")),
有关如何实现激励广告的更多详细信息,请在此处查看 ad_turbo RewardedAd 的示例:[此处]
(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/rewarded_ad_turbo.dart)。
激励插页式广告
####- 要实现激励插页式广告,您需要初始化 RewardedInterstitialAdTurbo。
final _rewardedInterstitialAdTurbo = RewardedInterstitialAdTurbo();
####- 加载激励插页式广告有一个函数 loadRewardedInterstitialAdTurbo。
loadAd() async{
await _rewardedInterstitialAdTurbo.loadRewardedInterstitialAdTurbo
(adUnitId: AdTurboAdHelper.rewardedInterstitial);
}
####- 加载激励插页式广告后,您可以通过此函数获取激励插页式广告。
- 激励插页式广告可以点击打开
- 您还可以获取激励插页式广告的回调函数
ElevatedButton(onPressed: ()async{
_rewardedInterstitialAdTurbo.rewardedInterstitial?.show();
await _rewardedInterstitialAdTurbo.rewardedInterstitialCallback();
},
child: const Text("RewardedInterstitialAd")),
有关如何实现激励插页式广告的更多详细信息,请在此处查看 ad_turbo RewardedInterstitial 的示例:[此处]
应用打开广告
####- 要实现应用打开广告,您需要初始化 AppOpenAdTurbo。
final _appOpenAdTurbo = AppOpenAdTurbo();
####- 加载应用打开广告有一个函数 loadAppOpenAdTurbo。
loadAd() async{
await _appOpenAdTurbo.loadAppOpenAdTurbo(
(AdTurboAdHelper.appOpenAdUnitId);
}
####- 加载应用打开广告后,您可以通过此函数获取应用打开广告。
- 应用打开广告可以点击打开
- 您还可以获取应用打开广告的回调函数
ElevatedButton(onPressed: ()async{
await _appOpenAdTurbo.appOpenAd?.show();
await _appOpenAdTurbo.appOpenCallback();
},
child: const Text("AppOpenAd")),
有关如何实现应用打开广告的更多详细信息,请在此处查看 ad_turbo AppOpen 的示例:[此处]
(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/appOpen_ad_turbo.dart)。
原生广告
####- 要实现原生广告,您需要初始化 NativeAdTurbo。
final _nativeAdTurbo = NativeAdTurbo();
原生小广告
####- 加载原生小广告有一个函数 loadNativeSmallAdTurbo。
loadAd() async{
await _nativeAdTurbo.loadNativeSmallAdTurbo(
adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId);
}
####- 加载原生小广告后,您可以像这样获取原生小广告小部件。
Container(height: 102,child: _nativeAdTurbo.getNativeSmallAdTurbo())
有关如何实现原生小广告的更多详细信息,请在此处查看 ad_turbo NativeSmall 的示例:[此处]
(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/native_small_ad_turbo.dart)。
原生中广告
####- 加载原生中广告有一个函数 loadNativeMediumAdTurbo。
loadAd() async{
await _nativeAdTurbo.loadNativeMediumAdTurbo(
adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId);
}
####- 加载原生中广告后,您可以像这样获取原生中广告小部件。
Container(height: 255,child: _nativeAdTurbo.getNativeMediumAdTurbo())
有关如何实现原生中广告的更多详细信息,请在此处查看 ad_turbo NativeMedium 的示例:[此处]
(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/native_medium_ad_turbo.dart)。
原生视频广告
####- 加载原生视频广告有一个函数 loadNativeVideoAdTurbo。
loadAd() async{
await loadNativeVideoAdTurbo(
nativeVideoID: AdTurboAdHelper.nativeAdvancedVideoAdUnitId);
}
####- 加载原生视频广告后,您可以像这样获取原生视频广告小部件。
Container(height: 310,child: _nativeAdTurbo.getNativeVideoAdTurbo(context: context))
有关如何实现原生视频广告的更多详细信息,请在此处查看 ad_turbo NativeVideo 的示例:[此处]
(https://github.com/hardikkhunt905/ad_turbo/blob/main/example/lib/Screen/native_video_ad_turbo.dart)。
详细的加载函数
###- 这些函数必须在 init 方法中调用。
loadBannerAdTurbo
loadAd() async{
await _bannerAdTurbo.loadBannerAdTurbo(
adUnitId: AdTurboAdHelper.bannerAdUnitId,
// Called when an TurboBannerAd is successfully received.
onAdLoaded: (ad) {
log("ad_turbo_plugin : TurboBannerAd loaded");
isBannerAdReady = true;
setState((){});
},
// Called when an TurboBannerAd request failed.
onAdFailedToLoad: (ad, error) {
// Dispose the TurboBannerAd here to free resources.
isBannerAdReady = false;
ad.dispose();
print('TurboBannerAd failed to load: $error');
loadAd();
},
// Called when an TurboBannerAd opens an overlay that covers the screen.
onAdOpened: (ad) => print('TurboBannerAd opened.'),
// Called when an TurboBannerAd removes an overlay that covers the screen.
onAdClosed: (ad) => print('TurboBannerAd closed.'),
// Called when an impression occurs on the TurboBannerAd.
onAdImpression: (ad) => print('TurboBannerAd impression.'),
adSize: BannerAdTurbo.banner);
}
loadInterstitialAdTurbo
loadAd() async{
await _interstitialAdTurbo.loadInterstitialAdTurbo(adUnitId: AdTurboAdHelper.interstitialAdUnitId,
onAdLoaded: (ad) {
print('$ad loaded.');
// Keep a reference to the ad so you can show it later.
_interstitialAdTurbo.interstitialAd = ad;
isInterstitialAdReady = true;
},
onAdFailedToLoad: (error) {
isInterstitialAdReady = false;
print('Failed to load an interstitial ad: ${error.message}');
loadAd();
});
}
loadRewardedAdTurbo
loadAd() async{
await _rewardedAdTurbo.loadRewardedAdTurbo(adUnitId: AdTurboAdHelper.rewardedAdUnitId,
onAdLoaded: (ad) {
print('$ad loaded.');
// Keep a reference to the ad so you can show it later.
_rewardedAdTurbo.rewardedAd = ad;
isRewardedAdReady = true;
},
onAdFailedToLoad: (error) {
isRewardedAdReady = false;
print('RewardedAd failed to load: $error');
loadAd();
});
}
loadRewardedInterstitialAdTurbo
loadAd() async{
await _rewardedInterstitialAdTurbo.loadRewardedInterstitialAdTurbo(adUnitId: AdTurboAdHelper.rewardedInterstitial,
onAdLoaded: (ad) {
print('$ad loaded.');
// Keep a reference to the ad so you can show it later.
_rewardedInterstitialAdTurbo.rewardedInterstitial = ad;
isRewardedInterstitialAdReady = true;
},
onAdFailedToLoad: (error) {
isRewardedInterstitialAdReady = false;
print('RewardedInterstitialAd failed to load: $error');
loadAd();
});
}
loadAppOpenAdTurbo
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();
},
);
}
loadNativeSmallAdTurbo
loadAd() async{
await _nativeAdTurbo.loadNativeSmallAdTurbo(
adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId,
// Called when an ad is successfully received.
onAdLoaded: (ad) {
print('Ad loaded.');
isNativeSmallAdReady = true;
setState(()=>"");
},
// Called when an ad request failed.
onAdFailedToLoad:(ad, error) {
isNativeSmallAdReady = false;
// Dispose the ad here to free resources.
ad.dispose();
print('Ad load failed (code=${error.code} message=${error.message})');
loadAd();
},
// Called when an ad opens an overlay that covers the screen.
onAdOpened: (ad) => print('Ad opened.'),
// Called when an ad removes an overlay that covers the screen.
onAdClosed: (ad) => print('Ad closed.'),
// Called when an impression occurs on the ad.
onAdImpression: (ad) => print('Ad impression.'),
// Called when a click is recorded for a NativeAd.
onNativeAdClicked: (ad) => print('Ad clicked.'));
}
loadNativeMediumAdTurbo
loadAd() async{
await _nativeAdTurbo.loadNativeMediumAdTurbo(
adUnitId: AdTurboAdHelper.nativeAdvancedAdUnitId,
// Called when an ad is successfully received.
onAdLoaded: (ad) {
print('Ad loaded.');
isNativeMediumAdReady = true;
setState(()=>"");
},
// Called when an ad request failed.
onAdFailedToLoad:(ad, error) {
isNativeMediumAdReady = false;
// Dispose the ad here to free resources.
ad.dispose();
print('Ad load failed (code=${error.code} message=${error.message})');
loadAd();
},
// Called when an ad opens an overlay that covers the screen.
onAdOpened: (ad) => print('Ad opened.'),
// Called when an ad removes an overlay that covers the screen.
onAdClosed: (ad) => print('Ad closed.'),
// Called when an impression occurs on the ad.
onAdImpression: (ad) => print('Ad impression.'),
// Called when a click is recorded for a NativeAd.
onNativeAdClicked: (ad) => print('Ad clicked.'));
}
loadNativeVideoAdTurbo
loadAd() async{
await _nativeAdTurbo.loadNativeVideoAdTurbo(nativeVideoID: AdTurboAdHelper.nativeAdvancedVideoAdUnitId);
}