firebase - 您如何将 FirebaseAdmob 限制为特定屏幕
问题描述
我将 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()
),
),
那成功了,我不确定这是否是最有效的方法,但它有效
推荐阅读
- html - overflow-y css 属性导致右栏中的内容在 Safari 上的某些 iPad 上消失
- python - 将 3D 张量分成批次(Pytorch)
- excel - 请帮助我解决图片中可用的#na 错误和#value 错误
- python - 在 Python 中平滑曲线,同时保留端点处的值和斜率
- sql - Oracle:根据结果集计数更新行
- r - 尝试对多个二进制变量使用 factor() 时,Cluster SE 健壮不起作用
- xml - 尝试在 XSD 中添加 type="xs:string" 时出错
- amazon-web-services - 如何将用户与组 (IAM) 与组织单位映射?
- reactjs - React、Typescript、d3js、Getting a No 重载与此调用匹配
- c# - 如何使用 docker 在带有 SQL 后端的 C# ASP.NET MVC Web 应用程序中创建下拉列表