react-native-google-mobile-ads 13.1.0 → 13.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java +18 -14
  2. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsCommon.java +3 -3
  3. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsFullScreenAdModule.kt +1 -1
  4. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeAdView.java +42 -2
  5. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerComponent.m +26 -7
  6. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerView.mm +5 -0
  7. package/lib/commonjs/ads/BaseAd.js +21 -2
  8. package/lib/commonjs/ads/BaseAd.js.map +1 -1
  9. package/lib/commonjs/common/debounce.js +21 -0
  10. package/lib/commonjs/common/debounce.js.map +1 -0
  11. package/lib/commonjs/index.js +7 -0
  12. package/lib/commonjs/index.js.map +1 -1
  13. package/lib/commonjs/version.js +1 -1
  14. package/lib/module/ads/BaseAd.js +21 -2
  15. package/lib/module/ads/BaseAd.js.map +1 -1
  16. package/lib/module/common/debounce.js +14 -0
  17. package/lib/module/common/debounce.js.map +1 -0
  18. package/lib/module/index.js +1 -1
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/version.js +1 -1
  21. package/lib/typescript/ads/BaseAd.d.ts.map +1 -1
  22. package/lib/typescript/common/debounce.d.ts +2 -0
  23. package/lib/typescript/common/debounce.d.ts.map +1 -0
  24. package/lib/typescript/index.d.ts +2 -2
  25. package/lib/typescript/index.d.ts.map +1 -1
  26. package/lib/typescript/types/BannerAdProps.d.ts +7 -0
  27. package/lib/typescript/types/BannerAdProps.d.ts.map +1 -1
  28. package/lib/typescript/version.d.ts +1 -1
  29. package/package.json +1 -1
  30. package/src/ads/BaseAd.tsx +23 -3
  31. package/src/common/debounce.ts +15 -0
  32. package/src/index.ts +1 -1
  33. package/src/types/BannerAdProps.ts +5 -0
  34. package/src/version.ts +1 -1
@@ -31,7 +31,6 @@ import com.facebook.react.uimanager.ThemedReactContext;
31
31
  import com.facebook.react.uimanager.UIManagerHelper;
32
32
  import com.facebook.react.uimanager.annotations.ReactProp;
33
33
  import com.facebook.react.uimanager.events.EventDispatcher;
34
- import com.facebook.react.views.view.ReactViewGroup;
35
34
  import com.google.android.gms.ads.AdListener;
36
35
  import com.google.android.gms.ads.AdRequest;
37
36
  import com.google.android.gms.ads.AdSize;
@@ -131,7 +130,7 @@ public class ReactNativeGoogleMobileAdsBannerAdViewManager
131
130
  }
132
131
  }
133
132
 
134
- if (sizeList.size() > 0) {
133
+ if (sizeList.size() > 0 && !sizeList.contains(AdSize.FLUID)) {
135
134
  AdSize adSize = sizeList.get(0);
136
135
  WritableMap payload = Arguments.createMap();
137
136
  payload.putDouble("width", adSize.getWidth());
@@ -211,21 +210,27 @@ public class ReactNativeGoogleMobileAdsBannerAdViewManager
211
210
  @Override
212
211
  public void onAdLoaded() {
213
212
  AdSize adSize = adView.getAdSize();
214
- int left, top, width, height;
213
+ int width, height;
215
214
  if (reactViewGroup.getIsFluid()) {
216
- // TODO size=FLUID is still not working
217
- left = 0;
218
- top = 0;
219
215
  width = reactViewGroup.getWidth();
220
216
  height = reactViewGroup.getHeight();
217
+
218
+ adView.addOnLayoutChangeListener(
219
+ (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
220
+ WritableMap payload = Arguments.createMap();
221
+ payload.putDouble("width", PixelUtil.toDIPFromPixel(right - left));
222
+ payload.putDouble("height", PixelUtil.toDIPFromPixel(bottom - top));
223
+ sendEvent(reactViewGroup, EVENT_SIZE_CHANGE, payload);
224
+ });
221
225
  } else {
222
- left = adView.getLeft();
223
- top = adView.getTop();
226
+ int left = adView.getLeft();
227
+ int top = adView.getTop();
224
228
  width = adSize.getWidthInPixels(reactViewGroup.getContext());
225
229
  height = adSize.getHeightInPixels(reactViewGroup.getContext());
230
+
231
+ adView.measure(width, height);
232
+ adView.layout(left, top, left + width, top + height);
226
233
  }
227
- adView.measure(width, height);
228
- adView.layout(left, top, left + width, top + height);
229
234
 
230
235
  WritableMap payload = Arguments.createMap();
231
236
  payload.putDouble("width", PixelUtil.toDIPFromPixel(width));
@@ -269,7 +274,7 @@ public class ReactNativeGoogleMobileAdsBannerAdViewManager
269
274
  }
270
275
 
271
276
  @Nullable
272
- private BaseAdView getAdView(ReactViewGroup reactViewGroup) {
277
+ private BaseAdView getAdView(ViewGroup reactViewGroup) {
273
278
  return (BaseAdView) reactViewGroup.getChildAt(0);
274
279
  }
275
280
 
@@ -290,10 +295,9 @@ public class ReactNativeGoogleMobileAdsBannerAdViewManager
290
295
  if (adView instanceof AdManagerAdView) {
291
296
  if (sizes.contains(AdSize.FLUID)) {
292
297
  reactViewGroup.setIsFluid(true);
293
- ((AdManagerAdView) adView).setAdSizes(AdSize.FLUID);
294
- } else {
295
- ((AdManagerAdView) adView).setAdSizes(sizes.toArray(new AdSize[0]));
296
298
  }
299
+ ((AdManagerAdView) adView).setAdSizes(sizes.toArray(new AdSize[0]));
300
+
297
301
  if (manualImpressionsEnabled) {
298
302
  ((AdManagerAdView) adView).setManualImpressionsEnabled(true);
299
303
  }
@@ -20,11 +20,11 @@ package io.invertase.googlemobileads;
20
20
  import android.os.Bundle;
21
21
  import android.util.DisplayMetrics;
22
22
  import android.view.Display;
23
+ import android.view.ViewGroup;
23
24
  import com.facebook.react.bridge.Arguments;
24
25
  import com.facebook.react.bridge.ReactContext;
25
26
  import com.facebook.react.bridge.ReadableMap;
26
27
  import com.facebook.react.bridge.WritableMap;
27
- import com.facebook.react.views.view.ReactViewGroup;
28
28
  import com.google.ads.mediation.admob.AdMobAdapter;
29
29
  import com.google.android.gms.ads.AdError;
30
30
  import com.google.android.gms.ads.AdRequest;
@@ -40,7 +40,7 @@ import javax.annotation.Nullable;
40
40
 
41
41
  public class ReactNativeGoogleMobileAdsCommon {
42
42
 
43
- static AdSize getAdSizeForAdaptiveBanner(String preDefinedAdSize, ReactViewGroup reactViewGroup) {
43
+ static AdSize getAdSizeForAdaptiveBanner(String preDefinedAdSize, ViewGroup reactViewGroup) {
44
44
 
45
45
  try {
46
46
  Display display =
@@ -63,7 +63,7 @@ public class ReactNativeGoogleMobileAdsCommon {
63
63
  }
64
64
  }
65
65
 
66
- static AdSize getAdSize(String preDefinedAdSize, ReactViewGroup reactViewGroup) {
66
+ static AdSize getAdSize(String preDefinedAdSize, ViewGroup reactViewGroup) {
67
67
  if (preDefinedAdSize.matches(
68
68
  "ADAPTIVE_BANNER|ANCHORED_ADAPTIVE_BANNER|INLINE_ADAPTIVE_BANNER")) {
69
69
  return ReactNativeGoogleMobileAdsCommon.getAdSizeForAdaptiveBanner(
@@ -145,7 +145,7 @@ abstract class ReactNativeGoogleMobileAdsFullScreenAdModule<T>(
145
145
  private val adUnitId: String,
146
146
  private val adRequestOptions: ReadableMap
147
147
  ) : AdLoadCallback<T>() {
148
- override fun onAdLoaded(ad: T) {
148
+ override fun onAdLoaded(ad: T & Any) {
149
149
  try {
150
150
  val adHelper = ReactNativeGoogleMobileAdsAdHelper(ad)
151
151
  var eventType = ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_LOADED
@@ -1,12 +1,21 @@
1
1
  package io.invertase.googlemobileads.common;
2
2
 
3
3
  import android.content.Context;
4
- import com.facebook.react.views.view.ReactViewGroup;
4
+ import android.widget.FrameLayout;
5
5
  import com.google.android.gms.ads.AdRequest;
6
6
  import com.google.android.gms.ads.AdSize;
7
7
  import java.util.List;
8
8
 
9
- public class ReactNativeAdView extends ReactViewGroup {
9
+ /**
10
+ * Using FrameLayout instead of ReactViewGroup
11
+ *
12
+ * <p>This is because in the case of fluid ads, - JS side will usually not specify the ad height -
13
+ * Also, after loading the fluid ad, we need to measure the ad height and update the layout Which
14
+ * isn't possible with ReactViewGroup since it overrides requestLayout by a noop
15
+ *
16
+ * <p>See https://github.com/facebook/react-native/issues/17968 for more details
17
+ */
18
+ public class ReactNativeAdView extends FrameLayout {
10
19
  private AdRequest request;
11
20
  private List<AdSize> sizes;
12
21
  private String unitId;
@@ -14,6 +23,37 @@ public class ReactNativeAdView extends ReactViewGroup {
14
23
  private boolean propsChanged;
15
24
  private boolean isFluid;
16
25
 
26
+ @Override
27
+ public void requestLayout() {
28
+ super.requestLayout();
29
+ post(measureAndLayout);
30
+ }
31
+
32
+ /**
33
+ * This ensures the adview is properly measured and laid out if its layout changed after being
34
+ * loaded This happens everytime for fluid ads, but cannot happen for fixed size ads loading
35
+ * additional content
36
+ *
37
+ * <p>See https://github.com/facebook/react-native/issues/17968 for more details
38
+ */
39
+ private final Runnable measureAndLayout =
40
+ () -> {
41
+ /**
42
+ * For fluid ads, we usually don't specify the ad height from JS side, so mark it as
43
+ * unspecified and let it dynamically determine its size
44
+ *
45
+ * <p>See
46
+ * https://developers.google.com/ad-manager/mobile-ads-sdk/android/native/styles#fluid_size
47
+ */
48
+ int heightMeasureSpec =
49
+ isFluid
50
+ ? MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
51
+ : MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.EXACTLY);
52
+
53
+ measure(MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY), heightMeasureSpec);
54
+ layout(getLeft(), getTop(), getRight(), getTop() + getHeight());
55
+ };
56
+
17
57
  public ReactNativeAdView(final Context context) {
18
58
  super(context);
19
59
  }
@@ -44,6 +44,11 @@
44
44
  if ([RNGoogleMobileAdsCommon isAdManagerUnit:_unitId]) {
45
45
  _banner = [[GAMBannerView alloc] initWithAdSize:adSize];
46
46
 
47
+ if (GADAdSizeEqualToSize(adSize, GADAdSizeFluid)) {
48
+ _banner.frame = self.bounds;
49
+ _banner.autoresizingMask = (UIViewAutoresizingFlexibleWidth);
50
+ }
51
+
47
52
  ((GAMBannerView *)_banner).validAdSizes = _sizes;
48
53
  ((GAMBannerView *)_banner).appEventDelegate = self;
49
54
  ((GAMBannerView *)_banner).enableManualImpressions = [_manualImpressionsEnabled boolValue];
@@ -88,6 +93,16 @@
88
93
  _propsChanged = true;
89
94
  }
90
95
 
96
+ - (GADAdSize)getInitialAdSize {
97
+ for (NSValue *sizeValue in _sizes) {
98
+ GADAdSize adSize = GADAdSizeFromNSValue(sizeValue);
99
+ if (GADAdSizeEqualToSize(adSize, GADAdSizeFluid)) {
100
+ return GADAdSizeFluid;
101
+ }
102
+ }
103
+ return GADAdSizeFromNSValue(_sizes[0]);
104
+ }
105
+
91
106
  - (void)requestAd {
92
107
  #ifndef __LP64__
93
108
  return; // prevent crash on 32bit
@@ -98,17 +113,21 @@
98
113
  return;
99
114
  }
100
115
 
101
- [self initBanner:GADAdSizeFromNSValue(_sizes[0])];
116
+ [self initBanner:[self getInitialAdSize]];
102
117
  [self addSubview:_banner];
103
118
  _banner.adUnitID = _unitId;
104
119
  [self setRequested:YES];
120
+ __weak typeof(self) weakSelf = self;
105
121
  _banner.paidEventHandler = ^(GADAdValue *_Nonnull value) {
106
- [self sendEvent:@"onPaid"
107
- payload:@{
108
- @"value" : value.value,
109
- @"precision" : @(value.precision),
110
- @"currency" : value.currencyCode,
111
- }];
122
+ typeof(self) strongSelf = weakSelf;
123
+ if (strongSelf) {
124
+ [strongSelf sendEvent:@"onPaid"
125
+ payload:@{
126
+ @"value" : value.value,
127
+ @"precision" : @(value.precision),
128
+ @"currency" : value.currencyCode,
129
+ }];
130
+ }
112
131
  };
113
132
  [_banner loadRequest:[RNGoogleMobileAdsCommon buildAdRequest:_request]];
114
133
  [self sendEvent:@"onSizeChange"
@@ -35,6 +35,11 @@ using namespace facebook::react;
35
35
  [super prepareForRecycle];
36
36
  static const auto defaultProps = std::make_shared<const RNGoogleMobileAdsBannerViewProps>();
37
37
  _props = defaultProps;
38
+
39
+ if (_banner) {
40
+ [_banner removeFromSuperview];
41
+ _banner = nil;
42
+ }
38
43
  }
39
44
 
40
45
  - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps {
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.BaseAd = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
8
9
  var _common = require("../common");
9
10
  var _NativeError = require("../internal/NativeError");
10
11
  var _GoogleMobileAdsBannerViewNativeComponent = _interopRequireDefault(require("./GoogleMobileAdsBannerViewNativeComponent"));
11
12
  var _BannerAdSize = require("../BannerAdSize");
12
13
  var _validateAdRequestOptions = require("../validateAdRequestOptions");
14
+ var _debounce = require("../common/debounce");
13
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
17
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -41,6 +43,7 @@ const BaseAd = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
41
43
  ...props
42
44
  } = _ref;
43
45
  const [dimensions, setDimensions] = (0, _react.useState)([0, 0]);
46
+ const debouncedSetDimensions = (0, _debounce.debounce)(setDimensions, 100);
44
47
  (0, _react.useEffect)(() => {
45
48
  if (!unitId) {
46
49
  throw new Error("BannerAd: 'unitId' expected a valid string unit ID.");
@@ -68,10 +71,11 @@ const BaseAd = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
68
71
  const {
69
72
  type
70
73
  } = nativeEvent;
71
- if (type !== 'onSizeChange' && (0, _common.isFunction)(props[type])) {
74
+ if ((0, _common.isFunction)(props[type])) {
72
75
  let eventHandler, eventPayload;
73
76
  switch (type) {
74
77
  case 'onAdLoaded':
78
+ case 'onSizeChange':
75
79
  eventPayload = {
76
80
  width: nativeEvent.width,
77
81
  height: nativeEvent.height
@@ -107,7 +111,22 @@ const BaseAd = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
107
111
  const width = Math.ceil(nativeEvent.width);
108
112
  const height = Math.ceil(nativeEvent.height);
109
113
  if (width && height && JSON.stringify([width, height]) !== JSON.stringify(dimensions)) {
110
- setDimensions([width, height]);
114
+ /**
115
+ * On Android, it seems the ad size is not always the definitive on the first onAdLoaded event.
116
+ * So if we change the size here with an incorrect value, then we relayout the ad on native side
117
+ * and it might cause an incorrect size to be set.
118
+ *
119
+ * To reproduce this issue, go to the example app, on the "GAMBanner Fluid" example
120
+ * and reload the ad several times
121
+ *
122
+ * on my low-end Samsung A10s, it always took less than 100ms in debug mode to get the correct size
123
+ * hence the 100ms debounce
124
+ */
125
+ if (sizes.includes(_BannerAdSize.GAMBannerAdSize.FLUID) && _reactNative.Platform.OS === 'android') {
126
+ debouncedSetDimensions([width, height]);
127
+ } else {
128
+ setDimensions([width, height]);
129
+ }
111
130
  }
112
131
  }
113
132
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_common","_NativeError","_GoogleMobileAdsBannerViewNativeComponent","_interopRequireDefault","_BannerAdSize","_validateAdRequestOptions","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","sizeRegex","BaseAd","React","forwardRef","_ref","ref","unitId","sizes","requestOptions","manualImpressionsEnabled","props","dimensions","setDimensions","useState","useEffect","Error","length","every","size","BannerAdSize","GAMBannerAdSize","test","parsedRequestOptions","JSON","stringify","validateAdRequestOptions","e","message","onNativeEvent","event","nativeEvent","type","isFunction","eventHandler","eventPayload","width","height","NativeError","fromEvent","name","data","handler","currency","precision","value","Math","ceil","style","includes","FLUID","createElement","request","exports","displayName"],"sourceRoot":"../../../src","sources":["ads/BaseAd.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_common","_NativeError","_GoogleMobileAdsBannerViewNativeComponent","_interopRequireDefault","_BannerAdSize","_validateAdRequestOptions","_debounce","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","sizeRegex","BaseAd","React","forwardRef","_ref","ref","unitId","sizes","requestOptions","manualImpressionsEnabled","props","dimensions","setDimensions","useState","debouncedSetDimensions","debounce","useEffect","Error","length","every","size","BannerAdSize","GAMBannerAdSize","test","parsedRequestOptions","JSON","stringify","validateAdRequestOptions","e","message","onNativeEvent","event","nativeEvent","type","isFunction","eventHandler","eventPayload","width","height","NativeError","fromEvent","name","data","handler","currency","precision","value","Math","ceil","includes","FLUID","Platform","OS","style","createElement","request","exports","displayName"],"sourceRoot":"../../../src","sources":["ads/BaseAd.tsx"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.debounce = void 0;
7
+ const debounce = (func, waitFor) => {
8
+ let timeout = null;
9
+ const debounced = function () {
10
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
11
+ args[_key] = arguments[_key];
12
+ }
13
+ if (timeout !== null) {
14
+ clearTimeout(timeout);
15
+ }
16
+ timeout = setTimeout(() => func(...args), waitFor);
17
+ };
18
+ return debounced;
19
+ };
20
+ exports.debounce = debounce;
21
+ //# sourceMappingURL=debounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["debounce","func","waitFor","timeout","debounced","_len","arguments","length","args","Array","_key","clearTimeout","setTimeout","exports"],"sourceRoot":"../../../src","sources":["common/debounce.ts"],"mappings":";;;;;;AAAO,MAAMA,QAAQ,GAAGA,CACtBC,IAAoC,EACpCC,OAAe,KACoB;EACnC,IAAIC,OAA6C,GAAG,IAAI;EAExD,MAAMC,SAAS,GAAG,SAAAA,CAAA,EAAwB;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAApBC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IACxB,IAAIP,OAAO,KAAK,IAAI,EAAE;MACpBQ,YAAY,CAACR,OAAO,CAAC;IACvB;IACAA,OAAO,GAAGS,UAAU,CAAC,MAAMX,IAAI,CAAC,GAAGO,IAAI,CAAC,EAAEN,OAAO,CAAC;EACpD,CAAC;EAED,OAAOE,SAAS;AAClB,CAAC;AAACS,OAAA,CAAAb,QAAA,GAAAA,QAAA"}
@@ -15,6 +15,7 @@ var _exportNames = {
15
15
  TestIds: true,
16
16
  AdEventType: true,
17
17
  BannerAdSize: true,
18
+ GAMBannerAdSize: true,
18
19
  GAMAdEventType: true,
19
20
  RewardedAdEventType: true,
20
21
  AdsConsent: true,
@@ -103,6 +104,12 @@ Object.defineProperty(exports, "GAMBannerAd", {
103
104
  return _GAMBannerAd.GAMBannerAd;
104
105
  }
105
106
  });
107
+ Object.defineProperty(exports, "GAMBannerAdSize", {
108
+ enumerable: true,
109
+ get: function () {
110
+ return _BannerAdSize.GAMBannerAdSize;
111
+ }
112
+ });
106
113
  Object.defineProperty(exports, "GAMInterstitialAd", {
107
114
  enumerable: true,
108
115
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"names":["_version","require","_MobileAds","_interopRequireWildcard","_AdsConsentDebugGeography","_AdsConsentPurposes","_AdsConsentSpecialFeatures","_AdsConsentStatus","_AdsConsentPrivacyOptionsRequirementStatus","_MaxAdContentRating","_TestIds","_AdEventType","_BannerAdSize","_GAMAdEventType","_RewardedAdEventType","_AdsConsent","_AppOpenAd","_InterstitialAd","_RewardedAd","_RewardedInterstitialAd","_BannerAd","_GAMBannerAd","_GAMInterstitialAd","_useAppOpenAd","_useInterstitialAd","_useRewardedAd","_useRewardedInterstitialAd","_constants","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","SDK_VERSION","version"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAAA,QAAA,GAAAC,OAAA;AAKA,IAAAC,UAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,yBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,0BAAA,GAAAL,OAAA;AACA,IAAAM,iBAAA,GAAAN,OAAA;AACA,IAAAO,0CAAA,GAAAP,OAAA;AACA,IAAAQ,mBAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,YAAA,GAAAV,OAAA;AACA,IAAAW,aAAA,GAAAX,OAAA;AACA,IAAAY,eAAA,GAAAZ,OAAA;AACA,IAAAa,oBAAA,GAAAb,OAAA;AACA,IAAAc,WAAA,GAAAd,OAAA;AACA,IAAAe,UAAA,GAAAf,OAAA;AACA,IAAAgB,eAAA,GAAAhB,OAAA;AACA,IAAAiB,WAAA,GAAAjB,OAAA;AACA,IAAAkB,uBAAA,GAAAlB,OAAA;AACA,IAAAmB,SAAA,GAAAnB,OAAA;AACA,IAAAoB,YAAA,GAAApB,OAAA;AACA,IAAAqB,kBAAA,GAAArB,OAAA;AACA,IAAAsB,aAAA,GAAAtB,OAAA;AACA,IAAAuB,kBAAA,GAAAvB,OAAA;AACA,IAAAwB,cAAA,GAAAxB,OAAA;AACA,IAAAyB,0BAAA,GAAAzB,OAAA;AACA,IAAA0B,UAAA,GAAA1B,OAAA;AACA,IAAA2B,MAAA,GAAA3B,OAAA;AAAA4B,MAAA,CAAAC,IAAA,CAAAF,MAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAJ,MAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAZ,MAAA,CAAAI,GAAA;IAAA;EAAA;AAAA;AAAwB,SAAAS,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAvC,wBAAA2C,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAT,GAAA,CAAAM,GAAA,SAAAK,MAAA,WAAAC,qBAAA,GAAAvB,MAAA,CAAAS,cAAA,IAAAT,MAAA,CAAAwB,wBAAA,WAAArB,GAAA,IAAAc,GAAA,QAAAd,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAW,GAAA,EAAAd,GAAA,SAAAsB,IAAA,GAAAF,qBAAA,GAAAvB,MAAA,CAAAwB,wBAAA,CAAAP,GAAA,EAAAd,GAAA,cAAAsB,IAAA,KAAAA,IAAA,CAAAd,GAAA,IAAAc,IAAA,CAAAC,GAAA,KAAA1B,MAAA,CAAAS,cAAA,CAAAa,MAAA,EAAAnB,GAAA,EAAAsB,IAAA,YAAAH,MAAA,CAAAnB,GAAA,IAAAc,GAAA,CAAAd,GAAA,SAAAmB,MAAA,CAAAH,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAM,GAAA,CAAAT,GAAA,EAAAK,MAAA,YAAAA,MAAA;AA/CxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACO,MAAMK,WAAW,GAAGC,gBAAO;AAACpB,OAAA,CAAAmB,WAAA,GAAAA,WAAA"}
1
+ {"version":3,"names":["_version","require","_MobileAds","_interopRequireWildcard","_AdsConsentDebugGeography","_AdsConsentPurposes","_AdsConsentSpecialFeatures","_AdsConsentStatus","_AdsConsentPrivacyOptionsRequirementStatus","_MaxAdContentRating","_TestIds","_AdEventType","_BannerAdSize","_GAMAdEventType","_RewardedAdEventType","_AdsConsent","_AppOpenAd","_InterstitialAd","_RewardedAd","_RewardedInterstitialAd","_BannerAd","_GAMBannerAd","_GAMInterstitialAd","_useAppOpenAd","_useInterstitialAd","_useRewardedAd","_useRewardedInterstitialAd","_constants","_types","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","set","SDK_VERSION","version"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
@@ -5,6 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.version = void 0;
7
7
  // Generated by genversion.
8
- const version = '13.1.0';
8
+ const version = '13.2.1';
9
9
  exports.version = version;
10
10
  //# sourceMappingURL=version.js.map
@@ -17,11 +17,13 @@
17
17
  */
18
18
 
19
19
  import React, { useState, useEffect } from 'react';
20
+ import { Platform } from 'react-native';
20
21
  import { isFunction } from '../common';
21
22
  import { NativeError } from '../internal/NativeError';
22
23
  import GoogleMobileAdsBannerView from './GoogleMobileAdsBannerViewNativeComponent';
23
24
  import { BannerAdSize, GAMBannerAdSize } from '../BannerAdSize';
24
25
  import { validateAdRequestOptions } from '../validateAdRequestOptions';
26
+ import { debounce } from '../common/debounce';
25
27
  const sizeRegex = /([0-9]+)x([0-9]+)/;
26
28
  export const BaseAd = /*#__PURE__*/React.forwardRef((_ref, ref) => {
27
29
  let {
@@ -32,6 +34,7 @@ export const BaseAd = /*#__PURE__*/React.forwardRef((_ref, ref) => {
32
34
  ...props
33
35
  } = _ref;
34
36
  const [dimensions, setDimensions] = useState([0, 0]);
37
+ const debouncedSetDimensions = debounce(setDimensions, 100);
35
38
  useEffect(() => {
36
39
  if (!unitId) {
37
40
  throw new Error("BannerAd: 'unitId' expected a valid string unit ID.");
@@ -59,10 +62,11 @@ export const BaseAd = /*#__PURE__*/React.forwardRef((_ref, ref) => {
59
62
  const {
60
63
  type
61
64
  } = nativeEvent;
62
- if (type !== 'onSizeChange' && isFunction(props[type])) {
65
+ if (isFunction(props[type])) {
63
66
  let eventHandler, eventPayload;
64
67
  switch (type) {
65
68
  case 'onAdLoaded':
69
+ case 'onSizeChange':
66
70
  eventPayload = {
67
71
  width: nativeEvent.width,
68
72
  height: nativeEvent.height
@@ -98,7 +102,22 @@ export const BaseAd = /*#__PURE__*/React.forwardRef((_ref, ref) => {
98
102
  const width = Math.ceil(nativeEvent.width);
99
103
  const height = Math.ceil(nativeEvent.height);
100
104
  if (width && height && JSON.stringify([width, height]) !== JSON.stringify(dimensions)) {
101
- setDimensions([width, height]);
105
+ /**
106
+ * On Android, it seems the ad size is not always the definitive on the first onAdLoaded event.
107
+ * So if we change the size here with an incorrect value, then we relayout the ad on native side
108
+ * and it might cause an incorrect size to be set.
109
+ *
110
+ * To reproduce this issue, go to the example app, on the "GAMBanner Fluid" example
111
+ * and reload the ad several times
112
+ *
113
+ * on my low-end Samsung A10s, it always took less than 100ms in debug mode to get the correct size
114
+ * hence the 100ms debounce
115
+ */
116
+ if (sizes.includes(GAMBannerAdSize.FLUID) && Platform.OS === 'android') {
117
+ debouncedSetDimensions([width, height]);
118
+ } else {
119
+ setDimensions([width, height]);
120
+ }
102
121
  }
103
122
  }
104
123
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","useEffect","isFunction","NativeError","GoogleMobileAdsBannerView","BannerAdSize","GAMBannerAdSize","validateAdRequestOptions","sizeRegex","BaseAd","forwardRef","_ref","ref","unitId","sizes","requestOptions","manualImpressionsEnabled","props","dimensions","setDimensions","Error","length","every","size","test","parsedRequestOptions","JSON","stringify","e","message","onNativeEvent","event","nativeEvent","type","eventHandler","eventPayload","width","height","fromEvent","name","data","handler","currency","precision","value","Math","ceil","style","includes","FLUID","createElement","request","displayName"],"sourceRoot":"../../../src","sources":["ads/BaseAd.tsx"],"mappings":"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"}
1
+ {"version":3,"names":["React","useState","useEffect","Platform","isFunction","NativeError","GoogleMobileAdsBannerView","BannerAdSize","GAMBannerAdSize","validateAdRequestOptions","debounce","sizeRegex","BaseAd","forwardRef","_ref","ref","unitId","sizes","requestOptions","manualImpressionsEnabled","props","dimensions","setDimensions","debouncedSetDimensions","Error","length","every","size","test","parsedRequestOptions","JSON","stringify","e","message","onNativeEvent","event","nativeEvent","type","eventHandler","eventPayload","width","height","fromEvent","name","data","handler","currency","precision","value","Math","ceil","includes","FLUID","OS","style","createElement","request","displayName"],"sourceRoot":"../../../src","sources":["ads/BaseAd.tsx"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export const debounce = (func, waitFor) => {
2
+ let timeout = null;
3
+ const debounced = function () {
4
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
5
+ args[_key] = arguments[_key];
6
+ }
7
+ if (timeout !== null) {
8
+ clearTimeout(timeout);
9
+ }
10
+ timeout = setTimeout(() => func(...args), waitFor);
11
+ };
12
+ return debounced;
13
+ };
14
+ //# sourceMappingURL=debounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["debounce","func","waitFor","timeout","debounced","_len","arguments","length","args","Array","_key","clearTimeout","setTimeout"],"sourceRoot":"../../../src","sources":["common/debounce.ts"],"mappings":"AAAA,OAAO,MAAMA,QAAQ,GAAGA,CACtBC,IAAoC,EACpCC,OAAe,KACoB;EACnC,IAAIC,OAA6C,GAAG,IAAI;EAExD,MAAMC,SAAS,GAAG,SAAAA,CAAA,EAAwB;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAApBC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IACxB,IAAIP,OAAO,KAAK,IAAI,EAAE;MACpBQ,YAAY,CAACR,OAAO,CAAC;IACvB;IACAA,OAAO,GAAGS,UAAU,CAAC,MAAMX,IAAI,CAAC,GAAGO,IAAI,CAAC,EAAEN,OAAO,CAAC;EACpD,CAAC;EAED,OAAOE,SAAS;AAClB,CAAC"}
@@ -28,7 +28,7 @@ export { AdsConsentPrivacyOptionsRequirementStatus } from './AdsConsentPrivacyOp
28
28
  export { MaxAdContentRating } from './MaxAdContentRating';
29
29
  export { TestIds } from './TestIds';
30
30
  export { AdEventType } from './AdEventType';
31
- export { BannerAdSize } from './BannerAdSize';
31
+ export { BannerAdSize, GAMBannerAdSize } from './BannerAdSize';
32
32
  export { GAMAdEventType } from './GAMAdEventType';
33
33
  export { RewardedAdEventType } from './RewardedAdEventType';
34
34
  export { AdsConsent } from './AdsConsent';
@@ -1 +1 @@
1
- {"version":3,"names":["version","SDK_VERSION","default","MobileAds","AdsConsentDebugGeography","AdsConsentPurposes","AdsConsentSpecialFeatures","AdsConsentStatus","AdsConsentPrivacyOptionsRequirementStatus","MaxAdContentRating","TestIds","AdEventType","BannerAdSize","GAMAdEventType","RewardedAdEventType","AdsConsent","AppOpenAd","InterstitialAd","RewardedAd","RewardedInterstitialAd","BannerAd","GAMBannerAd","GAMInterstitialAd","useAppOpenAd","useInterstitialAd","useRewardedAd","useRewardedInterstitialAd","RevenuePrecisions"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,WAAW;;AAEnC;AACA,OAAO,MAAMC,WAAW,GAAGD,OAAO;AAElC,SAASE,OAAO,EAAEC,SAAS,QAAQ,aAAa;AAChD,SAASC,wBAAwB,QAAQ,4BAA4B;AACrE,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,yBAAyB,QAAQ,6BAA6B;AACvE,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,yCAAyC,QAAQ,6CAA6C;AACvG,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,yBAAyB,QAAQ,mCAAmC;AAC7E,SAASC,iBAAiB,QAAQ,oBAAoB;AACtD,cAAc,SAAS"}
1
+ {"version":3,"names":["version","SDK_VERSION","default","MobileAds","AdsConsentDebugGeography","AdsConsentPurposes","AdsConsentSpecialFeatures","AdsConsentStatus","AdsConsentPrivacyOptionsRequirementStatus","MaxAdContentRating","TestIds","AdEventType","BannerAdSize","GAMBannerAdSize","GAMAdEventType","RewardedAdEventType","AdsConsent","AppOpenAd","InterstitialAd","RewardedAd","RewardedInterstitialAd","BannerAd","GAMBannerAd","GAMInterstitialAd","useAppOpenAd","useInterstitialAd","useRewardedAd","useRewardedInterstitialAd","RevenuePrecisions"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,WAAW;;AAEnC;AACA,OAAO,MAAMC,WAAW,GAAGD,OAAO;AAElC,SAASE,OAAO,EAAEC,SAAS,QAAQ,aAAa;AAChD,SAASC,wBAAwB,QAAQ,4BAA4B;AACrE,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,yBAAyB,QAAQ,6BAA6B;AACvE,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,yCAAyC,QAAQ,6CAA6C;AACvG,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,YAAY,EAAEC,eAAe,QAAQ,gBAAgB;AAC9D,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,mBAAmB,QAAQ,uBAAuB;AAC3D,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,iBAAiB,QAAQ,yBAAyB;AAC3D,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,aAAa,QAAQ,uBAAuB;AACrD,SAASC,yBAAyB,QAAQ,mCAAmC;AAC7E,SAASC,iBAAiB,QAAQ,oBAAoB;AACtD,cAAc,SAAS"}
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export const version = '13.1.0';
2
+ export const version = '13.2.1';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseAd.d.ts","sourceRoot":"","sources":["../../../src/ads/BaseAd.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA8B,MAAM,OAAO,CAAC;AASnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,eAAO,MAAM,MAAM,sNA+HjB,CAAC"}
1
+ {"version":3,"file":"BaseAd.d.ts","sourceRoot":"","sources":["../../../src/ads/BaseAd.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAA8B,MAAM,OAAO,CAAC;AASnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,eAAO,MAAM,MAAM,sNAkJjB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const debounce: <Arguments extends unknown[], Result>(func: (...args: Arguments) => Result, waitFor: number) => (...args: Arguments) => void;
2
+ //# sourceMappingURL=debounce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../../src/common/debounce.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,uFAEV,MAAM,6BACW,IAW3B,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const SDK_VERSION = "13.1.0";
1
+ export declare const SDK_VERSION = "13.2.1";
2
2
  export { default, MobileAds } from './MobileAds';
3
3
  export { AdsConsentDebugGeography } from './AdsConsentDebugGeography';
4
4
  export { AdsConsentPurposes } from './AdsConsentPurposes';
@@ -8,7 +8,7 @@ export { AdsConsentPrivacyOptionsRequirementStatus } from './AdsConsentPrivacyOp
8
8
  export { MaxAdContentRating } from './MaxAdContentRating';
9
9
  export { TestIds } from './TestIds';
10
10
  export { AdEventType } from './AdEventType';
11
- export { BannerAdSize } from './BannerAdSize';
11
+ export { BannerAdSize, GAMBannerAdSize } from './BannerAdSize';
12
12
  export { GAMAdEventType } from './GAMAdEventType';
13
13
  export { RewardedAdEventType } from './RewardedAdEventType';
14
14
  export { AdsConsent } from './AdsConsent';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,WAAW,WAAU,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,WAAW,WAAU,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,yCAAyC,EAAE,MAAM,6CAA6C,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,cAAc,SAAS,CAAC"}
@@ -73,6 +73,13 @@ export interface BannerAdProps {
73
73
  * See: https://developers.google.com/admob/android/impression-level-ad-revenue
74
74
  */
75
75
  onPaid?: PaidEventListener;
76
+ /**
77
+ * Called when ad size dimensions changed
78
+ */
79
+ onSizeChange?: (dimensions: {
80
+ width: number;
81
+ height: number;
82
+ }) => void;
76
83
  }
77
84
  /**
78
85
  * An interface for a GAM Banner advert component.
@@ -1 +1 @@
1
- {"version":3,"file":"BannerAdProps.d.ts","sourceRoot":"","sources":["../../../src/types/BannerAdProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC;IAE5B;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAErE;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAE1C;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACnE;;;;OAIG;IACH,KAAK,EAAE,OAAO,eAAe,CAAC,MAAM,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC3C"}
1
+ {"version":3,"file":"BannerAdProps.d.ts","sourceRoot":"","sources":["../../../src/types/BannerAdProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,IAAI,EAAE,YAAY,GAAG,MAAM,CAAC;IAE5B;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAErE;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAE1C;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACxE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;IACnE;;;;OAIG;IACH,KAAK,EAAE,OAAO,eAAe,CAAC,MAAM,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CAC3C"}
@@ -1,2 +1,2 @@
1
- export declare const version = "13.1.0";
1
+ export declare const version = "13.2.1";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-google-mobile-ads",
3
- "version": "13.1.0",
3
+ "version": "13.2.1",
4
4
  "author": "Invertase <oss@invertase.io> (http://invertase.io)",
5
5
  "description": "React Native Google Mobile Ads is an easy way to monetize mobile apps with targeted, in-app advertising.",
6
6
  "main": "lib/commonjs/index.js",
@@ -17,7 +17,7 @@
17
17
  */
18
18
 
19
19
  import React, { useState, useEffect } from 'react';
20
- import { NativeSyntheticEvent } from 'react-native';
20
+ import { NativeSyntheticEvent, Platform } from 'react-native';
21
21
  import { isFunction } from '../common';
22
22
  import { RevenuePrecisions } from '../common/constants';
23
23
  import { NativeError } from '../internal/NativeError';
@@ -26,6 +26,7 @@ import type { NativeEvent } from './GoogleMobileAdsBannerViewNativeComponent';
26
26
  import { BannerAdSize, GAMBannerAdSize } from '../BannerAdSize';
27
27
  import { validateAdRequestOptions } from '../validateAdRequestOptions';
28
28
  import { GAMBannerAdProps } from '../types/BannerAdProps';
29
+ import { debounce } from '../common/debounce';
29
30
 
30
31
  const sizeRegex = /([0-9]+)x([0-9]+)/;
31
32
 
@@ -35,6 +36,8 @@ export const BaseAd = React.forwardRef<
35
36
  >(({ unitId, sizes, requestOptions, manualImpressionsEnabled, ...props }, ref) => {
36
37
  const [dimensions, setDimensions] = useState<(number | string)[]>([0, 0]);
37
38
 
39
+ const debouncedSetDimensions = debounce(setDimensions, 100);
40
+
38
41
  useEffect(() => {
39
42
  if (!unitId) {
40
43
  throw new Error("BannerAd: 'unitId' expected a valid string unit ID.");
@@ -90,10 +93,11 @@ export const BaseAd = React.forwardRef<
90
93
  };
91
94
  const { type } = nativeEvent;
92
95
 
93
- if (type !== 'onSizeChange' && isFunction(props[type])) {
96
+ if (isFunction(props[type])) {
94
97
  let eventHandler, eventPayload;
95
98
  switch (type) {
96
99
  case 'onAdLoaded':
100
+ case 'onSizeChange':
97
101
  eventPayload = {
98
102
  width: nativeEvent.width,
99
103
  height: nativeEvent.height,
@@ -129,8 +133,24 @@ export const BaseAd = React.forwardRef<
129
133
  if (type === 'onAdLoaded' || type === 'onSizeChange') {
130
134
  const width = Math.ceil(nativeEvent.width);
131
135
  const height = Math.ceil(nativeEvent.height);
136
+
132
137
  if (width && height && JSON.stringify([width, height]) !== JSON.stringify(dimensions)) {
133
- setDimensions([width, height]);
138
+ /**
139
+ * On Android, it seems the ad size is not always the definitive on the first onAdLoaded event.
140
+ * So if we change the size here with an incorrect value, then we relayout the ad on native side
141
+ * and it might cause an incorrect size to be set.
142
+ *
143
+ * To reproduce this issue, go to the example app, on the "GAMBanner Fluid" example
144
+ * and reload the ad several times
145
+ *
146
+ * on my low-end Samsung A10s, it always took less than 100ms in debug mode to get the correct size
147
+ * hence the 100ms debounce
148
+ */
149
+ if (sizes.includes(GAMBannerAdSize.FLUID) && Platform.OS === 'android') {
150
+ debouncedSetDimensions([width, height]);
151
+ } else {
152
+ setDimensions([width, height]);
153
+ }
134
154
  }
135
155
  }
136
156
  }
@@ -0,0 +1,15 @@
1
+ export const debounce = <Arguments extends unknown[], Result>(
2
+ func: (...args: Arguments) => Result,
3
+ waitFor: number,
4
+ ): ((...args: Arguments) => void) => {
5
+ let timeout: ReturnType<typeof setTimeout> | null = null;
6
+
7
+ const debounced = (...args: Arguments) => {
8
+ if (timeout !== null) {
9
+ clearTimeout(timeout);
10
+ }
11
+ timeout = setTimeout(() => func(...args), waitFor);
12
+ };
13
+
14
+ return debounced;
15
+ };
package/src/index.ts CHANGED
@@ -29,7 +29,7 @@ export { AdsConsentPrivacyOptionsRequirementStatus } from './AdsConsentPrivacyOp
29
29
  export { MaxAdContentRating } from './MaxAdContentRating';
30
30
  export { TestIds } from './TestIds';
31
31
  export { AdEventType } from './AdEventType';
32
- export { BannerAdSize } from './BannerAdSize';
32
+ export { BannerAdSize, GAMBannerAdSize } from './BannerAdSize';
33
33
  export { GAMAdEventType } from './GAMAdEventType';
34
34
  export { RewardedAdEventType } from './RewardedAdEventType';
35
35
  export { AdsConsent } from './AdsConsent';
@@ -78,6 +78,11 @@ export interface BannerAdProps {
78
78
  * See: https://developers.google.com/admob/android/impression-level-ad-revenue
79
79
  */
80
80
  onPaid?: PaidEventListener;
81
+
82
+ /**
83
+ * Called when ad size dimensions changed
84
+ */
85
+ onSizeChange?: (dimensions: { width: number; height: number }) => void;
81
86
  }
82
87
 
83
88
  /**
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '13.1.0';
2
+ export const version = '13.2.1';