Я внедрил баннерную рекламу в свое приложение Flutter, и с помощью тестовой рекламы все отлично работает, за исключением того, что я не могу обнаружить событие «показа» в слушателе.Другие события, такие как «загруженный» и «открытый», обнаруживаются нормально, но не «впечатление».
События DebugView в Firebase также не показывают автоматически собранные события ad_query, ad_impression и ad_exposure.Однако он показывает событие ad_click.
Это нормальное поведение для тестовой рекламы?Я просто проверяю, прежде чем использовать реальный идентификатор объявления.
Мой код выглядит так, если это имеет значение, хорошо ли выглядит логика повторения?
BannerAd _bannerAd;
BannerAd createBannerAd() {
return BannerAd(
adUnitId: BannerAd.testAdUnitId,
size: AdSize.smartBanner,
targetingInfo: targetingInfo,
listener: (MobileAdEvent event) {
if (event == MobileAdEvent.failedToLoad) {
// retry loading ad
_loadAd();
print("Ad Failed to load, retrying");
}
if (event == MobileAdEvent.impression) {
print("Impression");
}
print("------BannerAd event :$event");
},
);
}
_loadAd() async {
// duration to wait before showing ad
var _duration = new Duration(seconds: 5);
return new Timer(_duration, () {
_bannerAd?.dispose();
_bannerAd = createBannerAd()..load();
_bannerAd..show();
});
}
@override
void initState() {
super.initState();
FirebaseAdMob.instance.initialize(appId: FirebaseAdMob.testAppId);
_bannerAd?.dispose();
// Run timer to show ad after certain delay
_loadAd();
}
@override
void dispose() {
_bannerAd?.dispose();
super.dispose();
}