我将AdMob与我扑朔迷离的移动应用程序集成在一起,尽管它是在特定屏幕上声明的,但它随处可见,这使得聊天非常困难。有没有一种方法可以指定我们希望在其上显示广告的屏幕,或者至少在检测到它们后将其隐藏。
答案 0 :(得分:1)
更新: 对于感兴趣的任何人,我都可以通过将其添加到我的应用程序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()}');
}
}
);
}
然后我跟踪一些变量:
Constants.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()
),
),
那是成功的I俩,我不确定这是否是最有效的方法,但确实有效