我将 AdMob 与我的 flutter 移动应用程序集成在一起,但是,尽管它是在特定屏幕上声明的,但它无处不在,这使得聊天变得非常困难。有没有办法指定我们希望在哪个屏幕上显示广告,或者至少在检测到广告时隐藏它们。
最佳答案
更新: 对于任何感兴趣的人,我都可以通过将其添加到我的应用程序 API 中来解决这个问题:
API.dart:
FirebaseAdMob.instance.initialize(appId: isIos ? ADDMOB_ADID_IOS : ADMOB_APPID_ANDROID);
static BannerAd createBannerAd() {
return new BannerAd(
adUnitId: isIos
? ADDMOB_ADID_IOS
: ADDMOB_ADID_ANDROID,
size: AdSize.smartBanner,
targetingInfo: targetInfo,
listener: (MobileAdEvent event) {
try {
if (event == MobileAdEvent.loaded) {
isAdShown = true;
} else if (event == MobileAdEvent.failedToLoad) {
isAdShown = false;
}
} on Exception catch (error) {
print('Error, ${error.toString()}');
}
}
);
}
然后我跟踪了一些变量:
常量.dart:
bool isAdShown = false;
bool calledDisposed = false;
BannerAd banner;
所以在退出第一个屏幕时我这样做了:
FirstScreen.dart:
banner = TradeApi.createBannerAd()
..load()
..show().catchError(() => print('Error loading add'));
isAdShown = true;
if (isAdShown) {
await banner.dispose();
isAdShown = false;
calledDisposed = true;
}
然后在我的第二个屏幕上: SecondScreen.dart:
appBar: new AppBar(
leading: new WillPopScope(
onWillPop: () {
if (!isAdShown && calledDisposed) {
banner = TradeApi.createBannerAd();
banner.load()..show();
isAdShown = true;
calledDisposed = false;
}
return Future<bool>.value(true);
},
child: const BackButton()
),
),
成功了,我不确定这是否是最有效的方法,但它确实有效
关于firebase - 你如何限制 FirebaseAdmob 到特定的屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51971738/