diff --git a/packages/google_mobile_ads/CHANGELOG.md b/packages/google_mobile_ads/CHANGELOG.md index c57ec73d2..dd54c3301 100644 --- a/packages/google_mobile_ads/CHANGELOG.md +++ b/packages/google_mobile_ads/CHANGELOG.md @@ -193,7 +193,6 @@ * Adds support for [Rewarded Interstitial](https://support.google.com/admob/answer/9884467) (beta) ad format. * Adds support for `onAdClicked` events to all ad formats. `NativeAdListener.onNativeAdClicked` is now deprecated. * `FullScreenContentCallback` and `AdWithViewListeners` now have an `onAdClicked` event. - ## 1.0.1 * Fix for [Issue 449](https://github.com/googleads/googleads-mobile-flutter/issues/449). diff --git a/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/AdInstanceManager.java b/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/AdInstanceManager.java index 1a3c91834..51e3e73f8 100644 --- a/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/AdInstanceManager.java +++ b/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/AdInstanceManager.java @@ -129,6 +129,12 @@ void onAppEvent(int adId, @NonNull String name, @NonNull String data) { arguments.put("eventName", "onAppEvent"); arguments.put("name", name); arguments.put("data", data); + + FlutterAd ad = ads.get(adId); + if (ad != null && ad.getClass() == FlutterAdManagerBannerAd.class) { + ((FlutterAdManagerBannerAd) ad).recordImpression(); + } + invokeOnAdEvent(arguments); } diff --git a/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/FlutterAdListener.java b/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/FlutterAdListener.java index 9379fdf40..af525dbb0 100644 --- a/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/FlutterAdListener.java +++ b/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/FlutterAdListener.java @@ -83,6 +83,11 @@ public void onAdPaid(@NonNull AdValue adValue) { manager.onPaidEvent(ad, AdInstanceManager.comAdValueToFlutterAdValue(adValue)); } } + + @Override + public void onAppEvent(@NonNull String name, @NonNull String data) { + manager.onAppEvent(adId, name, data); + } } /** Listener for native ads. */ diff --git a/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/FlutterBannerAd.java b/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/FlutterBannerAd.java index 9f9fc992d..7a40860bc 100644 --- a/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/FlutterBannerAd.java +++ b/packages/google_mobile_ads/android/src/adsNextGenSdk/java/io/flutter/plugins/googlemobileads/FlutterBannerAd.java @@ -102,7 +102,11 @@ void load() { new AdSize(flutterAdSize.getAdSize().getWidth(), flutterAdSize.getAdSize().getHeight()); allSizes.add(adSize); } - BannerAdRequest adRequest = request.toBannerAdRequestBuilder(adUnitId, allSizes).build(); + BannerAdRequest.Builder builder = request.toBannerAdRequestBuilder(adUnitId, allSizes); + if (!allSizes.isEmpty() && allSizes.get(0).getWidth() == 1) { + builder.setManualImpressionEnabled(true); + } + BannerAdRequest adRequest = builder.build(); adView.loadAd( adRequest, new AdLoadCallback() { @@ -162,4 +166,10 @@ boolean isCollapsible() { } return bannerAd.isCollapsible(); } + + public void recordImpression() { + if (bannerAd != null) { + bannerAd.recordManualImpression(); + } + } }