Nye*_*han 5 interstitial admob dart flutter
以下代码在应用程序底部显示横幅广告,并在点击时显示插页式广告。按下按钮时会显示插页式广告。问题是,当应用程序第一次启动并单击按钮时,会显示插页式广告,但从第二次开始不显示插页式广告。没有错误,所有日志消息都显示成功。是我的代码错误吗?我正在Android设备上进行测试。
import 'package:firebase_admob/firebase_admob.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final admobAppId = 'ca-app-pub-3940256099942544~3347511713';
final bannerId = 'ca-app-pub-3940256099942544/6300978111';
final interstitialId = 'ca-app-pub-3940256099942544/1033173712';
BannerAd bannerAd;
InterstitialAd interstitialAd;
MyApp() {
FirebaseAdMob.instance.initialize(appId: admobAppId);
makeBannerAd();
initInterstitialAd();
}
makeBannerAd() {
bannerAd = BannerAd(
adUnitId: bannerId,
size: AdSize.smartBanner,
listener: (MobileAdEvent me) {
print('MobileAdEvent $me');
});
bannerAd
..load()
..show();
}
initInterstitialAd() {
interstitialAd = InterstitialAd(
adUnitId: interstitialId,
listener: (MobileAdEvent me) {
print(
'========== Interstitial ad mobile ad event =========== \n $me');
if (me == MobileAdEvent.closed) {
print('Interstitial closed');
loadInterstitialAd();
}
});
loadInterstitialAd();
}
loadInterstitialAd() {
interstitialAd.load().then((val) {
if (val) {
print('Interstitial ad loaded callback success');
} else {
print('Interstitial ad loaded callback failed');
}
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('AdMob plugin test'),
),
body: Center(
child: RaisedButton(
child: Text('Show Interstitial!'),
onPressed: () {
interstitialAd.show().then((val) {
if (val) {
print('Interstitial ad show callback success');
} else {
print('Interstitial ad show callback fail');
}
});
},
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
更新
以下是带有 dispose() 的代码。它最多显示 2 次。
class MyApp extends StatelessWidget {
final admobAppId = 'ca-app-pub-3940256099942544~3347511713';
final bannerId = 'ca-app-pub-3940256099942544/6300978111';
final interstitialId = 'ca-app-pub-3940256099942544/1033173712';
BannerAd bannerAd;
InterstitialAd interstitialAd;
MobileAdTargetingInfo mobileAdTargetingInfo;
MyApp() {
FirebaseAdMob.instance.initialize(appId: admobAppId);
makeBannerAd();
initInterstitialAd();
}
makeBannerAd() {
bannerAd = BannerAd(
adUnitId: bannerId,
size: AdSize.smartBanner,
listener: (MobileAdEvent me) {
print('Banner => MobileAdEvent $me');
});
bannerAd
..load()
..show();
}
initInterstitialAd() {
interstitialAd = InterstitialAd(
adUnitId: interstitialId,
listener: (MobileAdEvent me) {
print(
'========== Interstitial ad mobile ad event =========== $me');
if (me == MobileAdEvent.closed) {
print('Interstitial closed');
interstitialAd.dispose().then((val){
if(val){
loadInterstitialAd();
}else{
}
});
} else if (me == MobileAdEvent.failedToLoad) {
print('Interstitial failed to load');
loadInterstitialAd();
}
});
loadInterstitialAd();
}
loadInterstitialAd() {
interstitialAd.load();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('AdMob plugin test'),
),
body: Center(
child: RaisedButton(
child: Text('Show Interstitial!'),
onPressed: () {
interstitialAd.show();
},
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 12
我遇到了同样的问题并使用InterstitialAd对象解决了它,如下所示:
InterstitialAd myInterstitial() {
return InterstitialAd(
adUnitId: InterstitialAd.testAdUnitId,
targetingInfo: targetingInfo,
listener: (MobileAdEvent event) {
if (event == MobileAdEvent.failedToLoad) {
interstitialAd..load();
} else if (event == MobileAdEvent.closed) {
interstitialAd = myInterstitial()..load();
}
},
);
}
@override
void initState() {
FirebaseAdMob.instance.initialize(appId:
FirebaseAdMob.testAppId);
interstitialAd = myInterstitial()..load();
super.initState();
}
@override
void dispose() {
interstitialAd?.dispose();
super.dispose();
}
Run Code Online (Sandbox Code Playgroud)
调用方法:
interstitialAd
..load()
..show();
Run Code Online (Sandbox Code Playgroud)
根据我的理解,可以使用监听器在事件关闭时递归调用初始的InterstitialAd对象。我的来源来自Tensor Programming Youtube Channel他解释得比我好得多。
| 归档时间: |
|
| 查看次数: |
6058 次 |
| 最近记录: |