react-native-google-mobile-ads 15.3.1 → 15.4.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.
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java +47 -17
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsCommon.java +11 -1
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsModule.kt +4 -4
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeAdView.java +18 -0
- package/docs/displaying-ads.mdx +1 -1
- package/docs/index.mdx +3 -1
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerComponent.h +1 -1
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerComponent.m +17 -7
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerView.h +1 -1
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerView.mm +22 -9
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerViewManager.mm +1 -1
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsCommon.h +3 -1
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsCommon.mm +7 -2
- package/lib/commonjs/ads/BaseAd.js +7 -1
- package/lib/commonjs/ads/BaseAd.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/ads/BaseAd.js +7 -1
- package/lib/module/ads/BaseAd.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/ads/BaseAd.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/specs/components/GoogleMobileAdsBannerViewNativeComponent.d.ts +5 -1
- package/lib/typescript/specs/components/GoogleMobileAdsBannerViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/types/BannerAdProps.d.ts +10 -0
- package/lib/typescript/types/BannerAdProps.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/ads/BaseAd.tsx +134 -127
- package/src/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts +1 -1
- package/src/types/BannerAdProps.ts +12 -0
- package/src/version.ts +1 -1
|
@@ -23,6 +23,8 @@ import androidx.annotation.NonNull;
|
|
|
23
23
|
import com.facebook.react.bridge.Arguments;
|
|
24
24
|
import com.facebook.react.bridge.ReactContext;
|
|
25
25
|
import com.facebook.react.bridge.ReadableArray;
|
|
26
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
27
|
+
import com.facebook.react.bridge.ReadableType;
|
|
26
28
|
import com.facebook.react.bridge.WritableMap;
|
|
27
29
|
import com.facebook.react.common.MapBuilder;
|
|
28
30
|
import com.facebook.react.uimanager.PixelUtil;
|
|
@@ -118,26 +120,54 @@ public class ReactNativeGoogleMobileAdsBannerAdViewManager
|
|
|
118
120
|
}
|
|
119
121
|
}
|
|
120
122
|
|
|
121
|
-
@ReactProp(name = "
|
|
122
|
-
public void
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
if (
|
|
126
|
-
|
|
127
|
-
|
|
123
|
+
@ReactProp(name = "sizeConfig")
|
|
124
|
+
public void setSizeConfig(ReactNativeAdView reactViewGroup, ReadableMap sizeConfig) {
|
|
125
|
+
if (sizeConfig != null) {
|
|
126
|
+
// Handle maxHeight
|
|
127
|
+
if (sizeConfig.hasKey("maxHeight") && !sizeConfig.isNull("maxHeight")) {
|
|
128
|
+
float maxHeight = (float) sizeConfig.getDouble("maxHeight");
|
|
129
|
+
reactViewGroup.setMaxAdHeight(maxHeight);
|
|
130
|
+
} else {
|
|
131
|
+
reactViewGroup.setMaxAdHeight(0);
|
|
128
132
|
}
|
|
129
|
-
}
|
|
130
133
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
134
|
+
// Handle width
|
|
135
|
+
if (sizeConfig.hasKey("width") && !sizeConfig.isNull("width")) {
|
|
136
|
+
float width = (float) sizeConfig.getDouble("width");
|
|
137
|
+
reactViewGroup.setAdWidth(width);
|
|
138
|
+
} else {
|
|
139
|
+
reactViewGroup.setAdWidth(0);
|
|
140
|
+
}
|
|
141
|
+
// Handle the sizes array
|
|
142
|
+
if (sizeConfig.hasKey("sizes") && !sizeConfig.isNull("sizes")) {
|
|
143
|
+
ReadableArray sizesArray = sizeConfig.getArray("sizes");
|
|
144
|
+
if (sizesArray != null) {
|
|
145
|
+
// Process the sizes array and convert to AdSize objects
|
|
146
|
+
List<AdSize> sizeList = new ArrayList<>();
|
|
147
|
+
for (int i = 0; i < sizesArray.size(); i++) {
|
|
148
|
+
if (sizesArray.getType(i) == ReadableType.String) {
|
|
149
|
+
String sizeString = sizesArray.getString(i);
|
|
150
|
+
AdSize adSize =
|
|
151
|
+
ReactNativeGoogleMobileAdsCommon.getAdSize(sizeString, reactViewGroup);
|
|
152
|
+
sizeList.add(adSize);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
138
155
|
|
|
139
|
-
|
|
140
|
-
|
|
156
|
+
// Update the view with sizes and trigger size change event if needed
|
|
157
|
+
if (sizeList.size() > 0 && !sizeList.contains(AdSize.FLUID)) {
|
|
158
|
+
AdSize adSize = sizeList.get(0);
|
|
159
|
+
WritableMap payload = Arguments.createMap();
|
|
160
|
+
payload.putDouble("width", adSize.getWidth());
|
|
161
|
+
payload.putDouble("height", adSize.getHeight());
|
|
162
|
+
sendEvent(reactViewGroup, EVENT_SIZE_CHANGE, payload);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
reactViewGroup.setSizes(sizeList);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
reactViewGroup.setPropsChanged(true);
|
|
170
|
+
}
|
|
141
171
|
}
|
|
142
172
|
|
|
143
173
|
@ReactProp(name = "manualImpressionsEnabled")
|
package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsCommon.java
CHANGED
|
@@ -30,6 +30,7 @@ import com.google.android.gms.ads.AdError;
|
|
|
30
30
|
import com.google.android.gms.ads.AdRequest;
|
|
31
31
|
import com.google.android.gms.ads.AdSize;
|
|
32
32
|
import com.google.android.gms.ads.admanager.AdManagerAdRequest;
|
|
33
|
+
import io.invertase.googlemobileads.common.ReactNativeAdView;
|
|
33
34
|
import io.invertase.googlemobileads.common.ReactNativeEventEmitter;
|
|
34
35
|
import java.util.ArrayList;
|
|
35
36
|
import java.util.Map;
|
|
@@ -50,9 +51,18 @@ public class ReactNativeGoogleMobileAdsCommon {
|
|
|
50
51
|
|
|
51
52
|
DisplayMetrics outMetrics = new DisplayMetrics();
|
|
52
53
|
display.getMetrics(outMetrics);
|
|
53
|
-
int adWidth = (int) (outMetrics.widthPixels / outMetrics.density);
|
|
54
54
|
|
|
55
|
+
// Get custom width if set, otherwise use device width
|
|
56
|
+
float customWidth = ((ReactNativeAdView) reactViewGroup).getAdWidth();
|
|
57
|
+
int screenWidth = (int) (outMetrics.widthPixels / outMetrics.density);
|
|
58
|
+
int adWidth = customWidth > 0 ? Math.min(Math.round(customWidth), screenWidth) : screenWidth;
|
|
59
|
+
|
|
60
|
+
float maxAdHeight = ((ReactNativeAdView) reactViewGroup).getMaxAdHeight();
|
|
55
61
|
if ("INLINE_ADAPTIVE_BANNER".equals(preDefinedAdSize)) {
|
|
62
|
+
if (maxAdHeight > 0) {
|
|
63
|
+
return AdSize.getInlineAdaptiveBannerAdSize(
|
|
64
|
+
adWidth, Math.round(Math.max(maxAdHeight, 32)));
|
|
65
|
+
}
|
|
56
66
|
return AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(
|
|
57
67
|
reactViewGroup.getContext(), adWidth);
|
|
58
68
|
}
|
package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsModule.kt
CHANGED
|
@@ -111,7 +111,7 @@ class ReactNativeGoogleMobileAdsModule(
|
|
|
111
111
|
// it is not clear if that will cause problems even if it happens, but users that have widely deployed this
|
|
112
112
|
// with the use of currentActivity have not seen problems
|
|
113
113
|
// reference if it needs attention: https://github.com/invertase/react-native-google-mobile-ads/pull/664
|
|
114
|
-
currentActivity ?: reactApplicationContext,
|
|
114
|
+
reactApplicationContext.currentActivity ?: reactApplicationContext,
|
|
115
115
|
OnInitializationCompleteListener { initializationStatus ->
|
|
116
116
|
val result = Arguments.createArray()
|
|
117
117
|
for ((key, value) in initializationStatus.adapterStatusMap) {
|
|
@@ -136,7 +136,7 @@ class ReactNativeGoogleMobileAdsModule(
|
|
|
136
136
|
|
|
137
137
|
@ReactMethod
|
|
138
138
|
fun openAdInspector(promise: Promise) {
|
|
139
|
-
val activity = currentActivity
|
|
139
|
+
val activity = reactApplicationContext.currentActivity
|
|
140
140
|
if (activity == null) {
|
|
141
141
|
promise.reject("null-activity", "Ad Inspector attempted to open but the current Activity was null.")
|
|
142
142
|
return
|
|
@@ -164,8 +164,8 @@ class ReactNativeGoogleMobileAdsModule(
|
|
|
164
164
|
|
|
165
165
|
@ReactMethod
|
|
166
166
|
fun openDebugMenu(adUnit: String) {
|
|
167
|
-
currentActivity?.runOnUiThread {
|
|
168
|
-
MobileAds.openDebugMenu(currentActivity!!, adUnit)
|
|
167
|
+
reactApplicationContext.currentActivity?.runOnUiThread {
|
|
168
|
+
MobileAds.openDebugMenu(reactApplicationContext.currentActivity!!, adUnit)
|
|
169
169
|
}
|
|
170
170
|
}
|
|
171
171
|
|
|
@@ -18,6 +18,8 @@ import java.util.List;
|
|
|
18
18
|
public class ReactNativeAdView extends FrameLayout {
|
|
19
19
|
private AdRequest request;
|
|
20
20
|
private List<AdSize> sizes;
|
|
21
|
+
private float maxAdHeight;
|
|
22
|
+
private float adWidth;
|
|
21
23
|
private String unitId;
|
|
22
24
|
private boolean manualImpressionsEnabled;
|
|
23
25
|
private boolean propsChanged;
|
|
@@ -74,6 +76,22 @@ public class ReactNativeAdView extends FrameLayout {
|
|
|
74
76
|
return this.sizes;
|
|
75
77
|
}
|
|
76
78
|
|
|
79
|
+
public void setMaxAdHeight(float maxAdHeight) {
|
|
80
|
+
this.maxAdHeight = maxAdHeight;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public float getMaxAdHeight() {
|
|
84
|
+
return this.maxAdHeight;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public void setAdWidth(float adWidth) {
|
|
88
|
+
this.adWidth = adWidth;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public float getAdWidth() {
|
|
92
|
+
return this.adWidth;
|
|
93
|
+
}
|
|
94
|
+
|
|
77
95
|
public void setUnitId(String unitId) {
|
|
78
96
|
this.unitId = unitId;
|
|
79
97
|
}
|
package/docs/displaying-ads.mdx
CHANGED
|
@@ -423,7 +423,7 @@ import { BannerAd, BannerAdSize, TestIds, useForeground } from 'react-native-goo
|
|
|
423
423
|
const adUnitId = __DEV__ ? TestIds.ADAPTIVE_BANNER : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
|
|
424
424
|
|
|
425
425
|
function App() {
|
|
426
|
-
const bannerRef = useRef
|
|
426
|
+
const bannerRef = useRef<BannerAd>(null);
|
|
427
427
|
|
|
428
428
|
// (iOS) WKWebView can terminate if app is in a "suspended state", resulting in an empty banner when app returns to foreground.
|
|
429
429
|
// Therefore it's advised to "manually" request a new ad when the app is foregrounded (https://groups.google.com/g/google-admob-ads-sdk/c/rwBpqOUr8m8).
|
package/docs/index.mdx
CHANGED
|
@@ -496,9 +496,11 @@ RewardedAd.createForAdRequest(TestIds.REWARDED);
|
|
|
496
496
|
## Next Steps
|
|
497
497
|
|
|
498
498
|
Now the basics of setting up and configuring AdMob have been explained, we can go ahead and start to display different
|
|
499
|
-
adverts to our users. The AdMob module provides integration with
|
|
499
|
+
adverts to our users. The AdMob module provides integration with six different types:
|
|
500
500
|
|
|
501
501
|
- [App Open Ads](/displaying-ads#app-open-ads)
|
|
502
502
|
- [Interstitial Ads](/displaying-ads#interstitial-ads)
|
|
503
503
|
- [Rewarded Ads](/displaying-ads#rewarded-ads)
|
|
504
504
|
- [Banner Ads](/displaying-ads#banner-ads-component)
|
|
505
|
+
- [Rewarded Interstitial Ads](/displaying-ads#rewarded-interstitial-ads)
|
|
506
|
+
- [Native Ads](/native-ads)
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
@property GADBannerView *banner;
|
|
28
28
|
@property(nonatomic, assign) BOOL requested;
|
|
29
29
|
|
|
30
|
-
@property(nonatomic, copy)
|
|
30
|
+
@property(nonatomic, copy) NSDictionary *sizeConfig;
|
|
31
31
|
@property(nonatomic, copy) NSString *unitId;
|
|
32
32
|
@property(nonatomic, copy) NSDictionary *request;
|
|
33
33
|
@property(nonatomic, copy) NSNumber *manualImpressionsEnabled;
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
_banner.autoresizingMask = (UIViewAutoresizingFlexibleWidth);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
((GAMBannerView *)_banner).validAdSizes =
|
|
52
|
+
((GAMBannerView *)_banner).validAdSizes = _sizeConfig[@"sizes"];
|
|
53
53
|
((GAMBannerView *)_banner).appEventDelegate = self;
|
|
54
54
|
((GAMBannerView *)_banner).enableManualImpressions = [_manualImpressionsEnabled boolValue];
|
|
55
55
|
} else {
|
|
@@ -64,17 +64,26 @@
|
|
|
64
64
|
_propsChanged = true;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
- (void)
|
|
67
|
+
- (void)setSizeConfig:(NSDictionary *)sizeConfig {
|
|
68
|
+
NSArray *sizes = sizeConfig[@"sizes"];
|
|
68
69
|
__block NSMutableArray *adSizes = [[NSMutableArray alloc] initWithCapacity:sizes.count];
|
|
70
|
+
CGFloat maxHeight = sizeConfig[@"maxHeight"] ? [sizeConfig[@"maxHeight"] doubleValue] : -1;
|
|
71
|
+
CGFloat width = sizeConfig[@"width"] ? [sizeConfig[@"width"] doubleValue] : -1;
|
|
69
72
|
[sizes enumerateObjectsUsingBlock:^(id jsonValue, NSUInteger idx, __unused BOOL *stop) {
|
|
70
|
-
GADAdSize adSize = [RNGoogleMobileAdsCommon stringToAdSize:jsonValue
|
|
73
|
+
GADAdSize adSize = [RNGoogleMobileAdsCommon stringToAdSize:jsonValue
|
|
74
|
+
withMaxHeight:maxHeight
|
|
75
|
+
andWidth:width];
|
|
71
76
|
if (GADAdSizeEqualToSize(adSize, GADAdSizeInvalid)) {
|
|
72
77
|
RCTLogWarn(@"Invalid adSize %@", jsonValue);
|
|
73
78
|
} else {
|
|
74
79
|
[adSizes addObject:NSValueFromGADAdSize(adSize)];
|
|
75
80
|
}
|
|
76
81
|
}];
|
|
77
|
-
|
|
82
|
+
_sizeConfig = @{
|
|
83
|
+
@"sizes" : adSizes,
|
|
84
|
+
@"maxHeight" : [NSNumber numberWithFloat:maxHeight],
|
|
85
|
+
@"width" : [NSNumber numberWithFloat:width]
|
|
86
|
+
};
|
|
78
87
|
_propsChanged = true;
|
|
79
88
|
}
|
|
80
89
|
|
|
@@ -94,13 +103,14 @@
|
|
|
94
103
|
}
|
|
95
104
|
|
|
96
105
|
- (GADAdSize)getInitialAdSize {
|
|
97
|
-
|
|
106
|
+
NSArray *sizes = _sizeConfig[@"sizes"];
|
|
107
|
+
for (NSValue *sizeValue in sizes) {
|
|
98
108
|
GADAdSize adSize = GADAdSizeFromNSValue(sizeValue);
|
|
99
109
|
if (GADAdSizeEqualToSize(adSize, GADAdSizeFluid)) {
|
|
100
110
|
return GADAdSizeFluid;
|
|
101
111
|
}
|
|
102
112
|
}
|
|
103
|
-
return GADAdSizeFromNSValue(
|
|
113
|
+
return GADAdSizeFromNSValue(sizes[0]);
|
|
104
114
|
}
|
|
105
115
|
|
|
106
116
|
- (void)requestAd {
|
|
@@ -108,7 +118,7 @@
|
|
|
108
118
|
return; // prevent crash on 32bit
|
|
109
119
|
#endif
|
|
110
120
|
|
|
111
|
-
if (_unitId == nil ||
|
|
121
|
+
if (_unitId == nil || _sizeConfig == nil || _request == nil || _manualImpressionsEnabled == nil) {
|
|
112
122
|
[self setRequested:NO];
|
|
113
123
|
return;
|
|
114
124
|
}
|
|
@@ -19,7 +19,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
19
19
|
@property GADBannerView *banner;
|
|
20
20
|
@property(nonatomic, assign) BOOL requested;
|
|
21
21
|
|
|
22
|
-
@property(nonatomic, copy)
|
|
22
|
+
@property(nonatomic, copy) NSDictionary *sizeConfig;
|
|
23
23
|
@property(nonatomic, copy) NSString *unitId;
|
|
24
24
|
@property(nonatomic, copy) NSDictionary *request;
|
|
25
25
|
@property(nonatomic, copy) NSNumber *manualImpressionsEnabled;
|
|
@@ -57,18 +57,31 @@ using namespace facebook::react;
|
|
|
57
57
|
propsChanged = true;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
if (oldViewProps.sizes != newViewProps.sizes
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
if (oldViewProps.sizeConfig.sizes != newViewProps.sizeConfig.sizes ||
|
|
61
|
+
oldViewProps.sizeConfig.maxHeight != newViewProps.sizeConfig.maxHeight ||
|
|
62
|
+
oldViewProps.sizeConfig.width != newViewProps.sizeConfig.width) {
|
|
63
|
+
NSMutableArray *adSizes =
|
|
64
|
+
[NSMutableArray arrayWithCapacity:newViewProps.sizeConfig.sizes.size()];
|
|
65
|
+
CGFloat maxAdHeight =
|
|
66
|
+
newViewProps.sizeConfig.maxHeight > 0 ? newViewProps.sizeConfig.maxHeight : -1;
|
|
67
|
+
CGFloat width = newViewProps.sizeConfig.width > 0 ? newViewProps.sizeConfig.width : -1;
|
|
68
|
+
for (auto i = 0; i < newViewProps.sizeConfig.sizes.size(); i++) {
|
|
69
|
+
NSString *jsonValue =
|
|
70
|
+
[[NSString alloc] initWithUTF8String:newViewProps.sizeConfig.sizes[i].c_str()];
|
|
71
|
+
GADAdSize adSize = [RNGoogleMobileAdsCommon stringToAdSize:jsonValue
|
|
72
|
+
withMaxHeight:maxAdHeight
|
|
73
|
+
andWidth:width];
|
|
65
74
|
if (GADAdSizeEqualToSize(adSize, GADAdSizeInvalid)) {
|
|
66
75
|
RCTLogWarn(@"Invalid adSize %@", jsonValue);
|
|
67
76
|
} else {
|
|
68
77
|
[adSizes addObject:NSValueFromGADAdSize(adSize)];
|
|
69
78
|
}
|
|
70
79
|
}
|
|
71
|
-
|
|
80
|
+
_sizeConfig = @{
|
|
81
|
+
@"sizes" : adSizes,
|
|
82
|
+
@"maxHeight" : [NSNumber numberWithFloat:maxAdHeight],
|
|
83
|
+
@"width" : [NSNumber numberWithFloat:width]
|
|
84
|
+
};
|
|
72
85
|
propsChanged = true;
|
|
73
86
|
}
|
|
74
87
|
|
|
@@ -117,7 +130,7 @@ using namespace facebook::react;
|
|
|
117
130
|
if ([RNGoogleMobileAdsCommon isAdManagerUnit:_unitId]) {
|
|
118
131
|
_banner = [[GAMBannerView alloc] initWithAdSize:adSize];
|
|
119
132
|
|
|
120
|
-
((GAMBannerView *)_banner).validAdSizes =
|
|
133
|
+
((GAMBannerView *)_banner).validAdSizes = _sizeConfig[@"sizes"];
|
|
121
134
|
((GAMBannerView *)_banner).appEventDelegate = self;
|
|
122
135
|
((GAMBannerView *)_banner).enableManualImpressions = [_manualImpressionsEnabled boolValue];
|
|
123
136
|
} else {
|
|
@@ -140,11 +153,11 @@ using namespace facebook::react;
|
|
|
140
153
|
return; // prevent crash on 32bit
|
|
141
154
|
#endif
|
|
142
155
|
|
|
143
|
-
if (_unitId == nil ||
|
|
156
|
+
if (_unitId == nil || _sizeConfig == nil || _request == nil || _manualImpressionsEnabled == nil) {
|
|
144
157
|
[self setRequested:NO];
|
|
145
158
|
return;
|
|
146
159
|
} else {
|
|
147
|
-
[self initBanner:GADAdSizeFromNSValue(
|
|
160
|
+
[self initBanner:GADAdSizeFromNSValue(_sizeConfig[@"sizes"][0])];
|
|
148
161
|
[self addSubview:_banner];
|
|
149
162
|
_banner.adUnitID = _unitId;
|
|
150
163
|
[self setRequested:YES];
|
|
@@ -34,7 +34,9 @@
|
|
|
34
34
|
error:(nullable NSDictionary *)error
|
|
35
35
|
data:(nullable NSDictionary *)data;
|
|
36
36
|
|
|
37
|
-
+ (GADAdSize)stringToAdSize:(NSString *)value
|
|
37
|
+
+ (GADAdSize)stringToAdSize:(NSString *)value
|
|
38
|
+
withMaxHeight:(CGFloat)maxHeight
|
|
39
|
+
andWidth:(CGFloat)adWidth;
|
|
38
40
|
|
|
39
41
|
+ (BOOL)isAdManagerUnit:(NSString *)unitId;
|
|
40
42
|
|
|
@@ -160,7 +160,9 @@ NSString *const GOOGLE_MOBILE_ADS_EVENT_REWARDED_EARNED_REWARD = @"rewarded_earn
|
|
|
160
160
|
[[RNRCTEventEmitter shared] sendEventWithName:event body:payload];
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
+ (GADAdSize)stringToAdSize:(NSString *)value
|
|
163
|
+
+ (GADAdSize)stringToAdSize:(NSString *)value
|
|
164
|
+
withMaxHeight:(CGFloat)maxHeight
|
|
165
|
+
andWidth:(CGFloat)adWidth {
|
|
164
166
|
NSError *error = nil;
|
|
165
167
|
NSRegularExpression *regex =
|
|
166
168
|
[NSRegularExpression regularExpressionWithPattern:@"([0-9]+)x([0-9]+)"
|
|
@@ -202,8 +204,11 @@ NSString *const GOOGLE_MOBILE_ADS_EVENT_REWARDED_EARNED_REWARD = @"rewarded_earn
|
|
|
202
204
|
frame =
|
|
203
205
|
UIEdgeInsetsInsetRect(frame, [UIApplication sharedApplication].keyWindow.safeAreaInsets);
|
|
204
206
|
}
|
|
205
|
-
CGFloat viewWidth = frame.size.width;
|
|
207
|
+
CGFloat viewWidth = adWidth > 0 ? MIN(frame.size.width, adWidth) : frame.size.width;
|
|
206
208
|
if ([value isEqualToString:@"INLINE_ADAPTIVE_BANNER"]) {
|
|
209
|
+
if (maxHeight > 0) {
|
|
210
|
+
return GADInlineAdaptiveBannerAdSizeWithWidthAndMaxHeight(viewWidth, MAX(maxHeight, 32.0));
|
|
211
|
+
}
|
|
207
212
|
return GADCurrentOrientationInlineAdaptiveBannerAdSizeWithWidth(viewWidth);
|
|
208
213
|
}
|
|
209
214
|
return GADCurrentOrientationAnchoredAdaptiveBannerAdSizeWithWidth(viewWidth);
|
|
@@ -37,6 +37,8 @@ const sizeRegex = /([0-9]+)x([0-9]+)/;
|
|
|
37
37
|
const BaseAd = exports.BaseAd = /*#__PURE__*/_react.default.forwardRef(({
|
|
38
38
|
unitId,
|
|
39
39
|
sizes,
|
|
40
|
+
maxHeight,
|
|
41
|
+
width,
|
|
40
42
|
requestOptions,
|
|
41
43
|
manualImpressionsEnabled,
|
|
42
44
|
...props
|
|
@@ -138,7 +140,11 @@ const BaseAd = exports.BaseAd = /*#__PURE__*/_react.default.forwardRef(({
|
|
|
138
140
|
};
|
|
139
141
|
return /*#__PURE__*/_react.default.createElement(_GoogleMobileAdsBannerViewNativeComponent.default, {
|
|
140
142
|
ref: ref,
|
|
141
|
-
|
|
143
|
+
sizeConfig: {
|
|
144
|
+
sizes,
|
|
145
|
+
maxHeight,
|
|
146
|
+
width
|
|
147
|
+
},
|
|
142
148
|
style: style,
|
|
143
149
|
unitId: unitId,
|
|
144
150
|
request: JSON.stringify(validatedRequestOptions),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_common","_NativeError","_GoogleMobileAdsBannerViewNativeComponent","_interopRequireDefault","_BannerAdSize","_validateAdRequestOptions","_debounce","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","sizeRegex","BaseAd","exports","React","forwardRef","unitId","sizes","requestOptions","manualImpressionsEnabled","props","ref","dimensions","setDimensions","useState","debouncedSetDimensions","debounce","useEffect","Error","length","every","size","BannerAdSize","GAMBannerAdSize","test","validatedRequestOptions","useMemo","validateAdRequestOptions","message","onNativeEvent","event","nativeEvent","type","isFunction","eventHandler","eventPayload","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_common","_NativeError","_GoogleMobileAdsBannerViewNativeComponent","_interopRequireDefault","_BannerAdSize","_validateAdRequestOptions","_debounce","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","sizeRegex","BaseAd","exports","React","forwardRef","unitId","sizes","maxHeight","width","requestOptions","manualImpressionsEnabled","props","ref","dimensions","setDimensions","useState","debouncedSetDimensions","debounce","useEffect","Error","length","every","size","BannerAdSize","GAMBannerAdSize","test","validatedRequestOptions","useMemo","validateAdRequestOptions","message","onNativeEvent","event","nativeEvent","type","isFunction","eventHandler","eventPayload","height","NativeError","fromEvent","name","data","handler","currency","precision","value","Math","ceil","JSON","stringify","includes","FLUID","Platform","OS","style","createElement","sizeConfig","request","displayName"],"sourceRoot":"../../../src","sources":["ads/BaseAd.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/version.js
CHANGED
package/lib/module/ads/BaseAd.js
CHANGED
|
@@ -28,6 +28,8 @@ const sizeRegex = /([0-9]+)x([0-9]+)/;
|
|
|
28
28
|
export const BaseAd = /*#__PURE__*/React.forwardRef(({
|
|
29
29
|
unitId,
|
|
30
30
|
sizes,
|
|
31
|
+
maxHeight,
|
|
32
|
+
width,
|
|
31
33
|
requestOptions,
|
|
32
34
|
manualImpressionsEnabled,
|
|
33
35
|
...props
|
|
@@ -129,7 +131,11 @@ export const BaseAd = /*#__PURE__*/React.forwardRef(({
|
|
|
129
131
|
};
|
|
130
132
|
return /*#__PURE__*/React.createElement(GoogleMobileAdsBannerView, {
|
|
131
133
|
ref: ref,
|
|
132
|
-
|
|
134
|
+
sizeConfig: {
|
|
135
|
+
sizes,
|
|
136
|
+
maxHeight,
|
|
137
|
+
width
|
|
138
|
+
},
|
|
133
139
|
style: style,
|
|
134
140
|
unitId: unitId,
|
|
135
141
|
request: JSON.stringify(validatedRequestOptions),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","useMemo","Platform","isFunction","NativeError","GoogleMobileAdsBannerView","BannerAdSize","GAMBannerAdSize","validateAdRequestOptions","debounce","sizeRegex","BaseAd","forwardRef","unitId","sizes","requestOptions","manualImpressionsEnabled","props","ref","dimensions","setDimensions","debouncedSetDimensions","Error","length","every","size","test","validatedRequestOptions","e","message","onNativeEvent","event","nativeEvent","type","eventHandler","eventPayload","
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useMemo","Platform","isFunction","NativeError","GoogleMobileAdsBannerView","BannerAdSize","GAMBannerAdSize","validateAdRequestOptions","debounce","sizeRegex","BaseAd","forwardRef","unitId","sizes","maxHeight","width","requestOptions","manualImpressionsEnabled","props","ref","dimensions","setDimensions","debouncedSetDimensions","Error","length","every","size","test","validatedRequestOptions","e","message","onNativeEvent","event","nativeEvent","type","eventHandler","eventPayload","height","fromEvent","name","data","handler","currency","precision","value","Math","ceil","JSON","stringify","includes","FLUID","OS","style","createElement","sizeConfig","request","displayName"],"sourceRoot":"../../../src","sources":["ads/BaseAd.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseAd.d.ts","sourceRoot":"","sources":["../../../src/ads/BaseAd.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAS5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"BaseAd.d.ts","sourceRoot":"","sources":["../../../src/ads/BaseAd.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAS5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,eAAO,MAAM,MAAM,wOAwJlB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "15.
|
|
1
|
+
export declare const SDK_VERSION = "15.4.1";
|
|
2
2
|
export { default, MobileAds } from './MobileAds';
|
|
3
3
|
export { AdsConsentDebugGeography, AdsConsentInfo, AdsConsentInfoOptions, AdsConsentInterface, AdsConsentPrivacyOptionsRequirementStatus, AdsConsentStatus, AdsConsentUserChoices, } from './specs/modules/NativeConsentModule';
|
|
4
4
|
export { AdsConsentPurposes } from './AdsConsentPurposes';
|
|
@@ -14,7 +14,11 @@ export type NativeEvent = {
|
|
|
14
14
|
value?: Float;
|
|
15
15
|
};
|
|
16
16
|
export interface NativeProps extends ViewProps {
|
|
17
|
-
|
|
17
|
+
sizeConfig: {
|
|
18
|
+
sizes: string[];
|
|
19
|
+
maxHeight?: Float;
|
|
20
|
+
width?: Float;
|
|
21
|
+
};
|
|
18
22
|
unitId: string;
|
|
19
23
|
request: string;
|
|
20
24
|
manualImpressionsEnabled: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleMobileAdsBannerViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAI7F,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,KAAK,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"GoogleMobileAdsBannerViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAC;AAI7F,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,OAAO,CAAC;IAClC,aAAa,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;CAClD;AAED,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;AAEvD,UAAU,cAAc;IACtB,sBAAsB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAC3E,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CAC1D;AAID,eAAO,MAAM,QAAQ,EAAE,cAErB,CAAC;wBAIE,aAAa,CAAC,WAAW,CAAC;AAF/B,wBAEgC"}
|
|
@@ -45,6 +45,16 @@ export interface BannerAdProps {
|
|
|
45
45
|
* Inventory must be available for the banner size specified, otherwise a no-fill error will be sent to `onAdFailedToLoad`.
|
|
46
46
|
*/
|
|
47
47
|
size: BannerAdSize | string;
|
|
48
|
+
/**
|
|
49
|
+
* Limit inline adaptive banner height.
|
|
50
|
+
* By default, inline adaptive banners instantiated without a maxHeight value have a maxHeight equal to the device height.
|
|
51
|
+
*/
|
|
52
|
+
maxHeight?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Sets the width for adaptive banners (inline and anchored).
|
|
55
|
+
* If not specified, the width defaults to the full device width.
|
|
56
|
+
*/
|
|
57
|
+
width?: number;
|
|
48
58
|
/**
|
|
49
59
|
* The request options for this banner.
|
|
50
60
|
*/
|
|
@@ -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;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,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;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,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;IAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;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 = "15.
|
|
1
|
+
export declare const version = "15.4.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": "15.
|
|
3
|
+
"version": "15.4.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",
|
package/src/ads/BaseAd.tsx
CHANGED
|
@@ -33,147 +33,154 @@ const sizeRegex = /([0-9]+)x([0-9]+)/;
|
|
|
33
33
|
export const BaseAd = React.forwardRef<
|
|
34
34
|
React.ElementRef<typeof GoogleMobileAdsBannerView>,
|
|
35
35
|
GAMBannerAdProps
|
|
36
|
-
>(
|
|
37
|
-
|
|
36
|
+
>(
|
|
37
|
+
(
|
|
38
|
+
{ unitId, sizes, maxHeight, width, requestOptions, manualImpressionsEnabled, ...props },
|
|
39
|
+
ref,
|
|
40
|
+
) => {
|
|
41
|
+
const [dimensions, setDimensions] = useState<(number | DimensionValue)[]>([0, 0]);
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
const debouncedSetDimensions = debounce(setDimensions, 100);
|
|
40
44
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
useEffect(() => {
|
|
48
|
-
if (
|
|
49
|
-
sizes.length === 0 ||
|
|
50
|
-
!sizes.every(size => size in BannerAdSize || size in GAMBannerAdSize || sizeRegex.test(size))
|
|
51
|
-
) {
|
|
52
|
-
throw new Error("BannerAd: 'size(s)' expected a valid BannerAdSize or custom size string.");
|
|
53
|
-
}
|
|
54
|
-
}, [sizes]);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (!unitId) {
|
|
47
|
+
throw new Error("BannerAd: 'unitId' expected a valid string unit ID.");
|
|
48
|
+
}
|
|
49
|
+
}, [unitId]);
|
|
55
50
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (
|
|
53
|
+
sizes.length === 0 ||
|
|
54
|
+
!sizes.every(
|
|
55
|
+
size => size in BannerAdSize || size in GAMBannerAdSize || sizeRegex.test(size),
|
|
56
|
+
)
|
|
57
|
+
) {
|
|
58
|
+
throw new Error("BannerAd: 'size(s)' expected a valid BannerAdSize or custom size string.");
|
|
64
59
|
}
|
|
65
|
-
}
|
|
66
|
-
return {};
|
|
67
|
-
}, [requestOptions]);
|
|
60
|
+
}, [sizes]);
|
|
68
61
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
| {
|
|
78
|
-
type: 'onAdFailedToLoad';
|
|
79
|
-
code: string;
|
|
80
|
-
message: string;
|
|
81
|
-
}
|
|
82
|
-
| {
|
|
83
|
-
type: 'onAppEvent';
|
|
84
|
-
name: string;
|
|
85
|
-
data?: string;
|
|
62
|
+
const validatedRequestOptions = useMemo(() => {
|
|
63
|
+
if (requestOptions) {
|
|
64
|
+
try {
|
|
65
|
+
return validateAdRequestOptions(requestOptions);
|
|
66
|
+
} catch (e) {
|
|
67
|
+
if (e instanceof Error) {
|
|
68
|
+
throw new Error(`BannerAd: ${e.message}`);
|
|
69
|
+
}
|
|
86
70
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
precision: RevenuePrecisions;
|
|
91
|
-
value: number;
|
|
92
|
-
};
|
|
93
|
-
const { type } = nativeEvent;
|
|
71
|
+
}
|
|
72
|
+
return {};
|
|
73
|
+
}, [requestOptions]);
|
|
94
74
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
name: nativeEvent.name,
|
|
113
|
-
data: nativeEvent.data,
|
|
114
|
-
};
|
|
115
|
-
if ((eventHandler = props[type])) eventHandler(eventPayload);
|
|
116
|
-
break;
|
|
117
|
-
case 'onPaid':
|
|
118
|
-
const handler = props[type];
|
|
119
|
-
if (handler) {
|
|
120
|
-
handler({
|
|
121
|
-
currency: nativeEvent.currency,
|
|
122
|
-
precision: nativeEvent.precision,
|
|
123
|
-
value: nativeEvent.value,
|
|
124
|
-
});
|
|
75
|
+
function onNativeEvent(event: NativeSyntheticEvent<NativeEvent>) {
|
|
76
|
+
const nativeEvent = event.nativeEvent as
|
|
77
|
+
| {
|
|
78
|
+
type: 'onAdLoaded' | 'onSizeChange';
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
}
|
|
82
|
+
| { type: 'onAdOpened' | 'onAdClosed' }
|
|
83
|
+
| {
|
|
84
|
+
type: 'onAdFailedToLoad';
|
|
85
|
+
code: string;
|
|
86
|
+
message: string;
|
|
87
|
+
}
|
|
88
|
+
| {
|
|
89
|
+
type: 'onAppEvent';
|
|
90
|
+
name: string;
|
|
91
|
+
data?: string;
|
|
125
92
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
93
|
+
| {
|
|
94
|
+
type: 'onPaid';
|
|
95
|
+
currency: string;
|
|
96
|
+
precision: RevenuePrecisions;
|
|
97
|
+
value: number;
|
|
98
|
+
};
|
|
99
|
+
const { type } = nativeEvent;
|
|
100
|
+
|
|
101
|
+
if (isFunction(props[type])) {
|
|
102
|
+
let eventHandler, eventPayload;
|
|
103
|
+
switch (type) {
|
|
104
|
+
case 'onAdLoaded':
|
|
105
|
+
case 'onSizeChange':
|
|
106
|
+
eventPayload = {
|
|
107
|
+
width: nativeEvent.width,
|
|
108
|
+
height: nativeEvent.height,
|
|
109
|
+
};
|
|
110
|
+
if ((eventHandler = props[type])) eventHandler(eventPayload);
|
|
111
|
+
break;
|
|
112
|
+
case 'onAdFailedToLoad':
|
|
113
|
+
eventPayload = NativeError.fromEvent(nativeEvent, 'googleMobileAds');
|
|
114
|
+
if ((eventHandler = props[type])) eventHandler(eventPayload);
|
|
115
|
+
break;
|
|
116
|
+
case 'onAppEvent':
|
|
117
|
+
eventPayload = {
|
|
118
|
+
name: nativeEvent.name,
|
|
119
|
+
data: nativeEvent.data,
|
|
120
|
+
};
|
|
121
|
+
if ((eventHandler = props[type])) eventHandler(eventPayload);
|
|
122
|
+
break;
|
|
123
|
+
case 'onPaid':
|
|
124
|
+
const handler = props[type];
|
|
125
|
+
if (handler) {
|
|
126
|
+
handler({
|
|
127
|
+
currency: nativeEvent.currency,
|
|
128
|
+
precision: nativeEvent.precision,
|
|
129
|
+
value: nativeEvent.value,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
break;
|
|
133
|
+
default:
|
|
134
|
+
if ((eventHandler = props[type])) eventHandler();
|
|
135
|
+
}
|
|
129
136
|
}
|
|
130
|
-
}
|
|
131
137
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
138
|
+
if (type === 'onAdLoaded' || type === 'onSizeChange') {
|
|
139
|
+
const width = Math.ceil(nativeEvent.width);
|
|
140
|
+
const height = Math.ceil(nativeEvent.height);
|
|
135
141
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
142
|
+
if (width && height && JSON.stringify([width, height]) !== JSON.stringify(dimensions)) {
|
|
143
|
+
/**
|
|
144
|
+
* On Android, it seems the ad size is not always the definitive on the first onAdLoaded event.
|
|
145
|
+
* So if we change the size here with an incorrect value, then we relayout the ad on native side
|
|
146
|
+
* and it might cause an incorrect size to be set.
|
|
147
|
+
*
|
|
148
|
+
* To reproduce this issue, go to the example app, on the "GAMBanner Fluid" example
|
|
149
|
+
* and reload the ad several times
|
|
150
|
+
*
|
|
151
|
+
* on my low-end Samsung A10s, it always took less than 100ms in debug mode to get the correct size
|
|
152
|
+
* hence the 100ms debounce
|
|
153
|
+
*/
|
|
154
|
+
if (sizes.includes(GAMBannerAdSize.FLUID) && Platform.OS === 'android') {
|
|
155
|
+
debouncedSetDimensions([width, height]);
|
|
156
|
+
} else {
|
|
157
|
+
setDimensions([width, height]);
|
|
158
|
+
}
|
|
152
159
|
}
|
|
153
160
|
}
|
|
154
161
|
}
|
|
155
|
-
}
|
|
156
162
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
const style = sizes.includes(GAMBannerAdSize.FLUID)
|
|
164
|
+
? {
|
|
165
|
+
width: '100%' as DimensionValue,
|
|
166
|
+
height: dimensions[1],
|
|
167
|
+
}
|
|
168
|
+
: {
|
|
169
|
+
width: dimensions[0],
|
|
170
|
+
height: dimensions[1],
|
|
171
|
+
};
|
|
166
172
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
173
|
+
return (
|
|
174
|
+
<GoogleMobileAdsBannerView
|
|
175
|
+
ref={ref}
|
|
176
|
+
sizeConfig={{ sizes, maxHeight, width }}
|
|
177
|
+
style={style}
|
|
178
|
+
unitId={unitId}
|
|
179
|
+
request={JSON.stringify(validatedRequestOptions)}
|
|
180
|
+
manualImpressionsEnabled={!!manualImpressionsEnabled}
|
|
181
|
+
onNativeEvent={onNativeEvent}
|
|
182
|
+
/>
|
|
183
|
+
);
|
|
184
|
+
},
|
|
185
|
+
);
|
|
179
186
|
BaseAd.displayName = 'BaseAd';
|
|
@@ -48,6 +48,18 @@ export interface BannerAdProps {
|
|
|
48
48
|
*/
|
|
49
49
|
size: BannerAdSize | string;
|
|
50
50
|
|
|
51
|
+
/**
|
|
52
|
+
* Limit inline adaptive banner height.
|
|
53
|
+
* By default, inline adaptive banners instantiated without a maxHeight value have a maxHeight equal to the device height.
|
|
54
|
+
*/
|
|
55
|
+
maxHeight?: number;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Sets the width for adaptive banners (inline and anchored).
|
|
59
|
+
* If not specified, the width defaults to the full device width.
|
|
60
|
+
*/
|
|
61
|
+
width?: number;
|
|
62
|
+
|
|
51
63
|
/**
|
|
52
64
|
* The request options for this banner.
|
|
53
65
|
*/
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '15.
|
|
2
|
+
export const version = '15.4.1';
|