react-native-applovin-max 6.3.1 → 6.4.0
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/build.gradle +3 -3
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXModule.java +22 -18
- package/ios/AppLovinMAX.m +4 -1
- package/ios/Podfile +1 -1
- package/ios/Podfile.lock +4 -4
- package/package.json +1 -1
- package/react-native-applovin-max.podspec +2 -2
- package/src/AdView.tsx +75 -64
- package/src/AppLovinMAX.ts +1 -1
- package/src/BannerAd.ts +1 -0
- package/src/nativeAd/NativeAdViewComponents.tsx +2 -2
- package/src/types/AdInfo.ts +8 -0
package/android/build.gradle
CHANGED
|
@@ -35,8 +35,8 @@ android {
|
|
|
35
35
|
defaultConfig {
|
|
36
36
|
minSdkVersion 16
|
|
37
37
|
targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
|
|
38
|
-
versionCode
|
|
39
|
-
versionName "6.
|
|
38
|
+
versionCode 6040000
|
|
39
|
+
versionName "6.4.0"
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
flavorDimensions("default")
|
|
@@ -140,5 +140,5 @@ dependencies {
|
|
|
140
140
|
// noinspection GradleDynamicVersion
|
|
141
141
|
api 'com.facebook.react:react-native:+'
|
|
142
142
|
|
|
143
|
-
implementation 'com.applovin:applovin-sdk:12.
|
|
143
|
+
implementation 'com.applovin:applovin-sdk:12.4.0'
|
|
144
144
|
}
|
|
@@ -36,10 +36,7 @@ import com.applovin.mediation.ads.MaxAdView;
|
|
|
36
36
|
import com.applovin.mediation.ads.MaxAppOpenAd;
|
|
37
37
|
import com.applovin.mediation.ads.MaxInterstitialAd;
|
|
38
38
|
import com.applovin.mediation.ads.MaxRewardedAd;
|
|
39
|
-
import com.applovin.sdk.AppLovinAdContentRating;
|
|
40
39
|
import com.applovin.sdk.AppLovinCmpError;
|
|
41
|
-
import com.applovin.sdk.AppLovinCmpService;
|
|
42
|
-
import com.applovin.sdk.AppLovinGender;
|
|
43
40
|
import com.applovin.sdk.AppLovinMediationProvider;
|
|
44
41
|
import com.applovin.sdk.AppLovinPrivacySettings;
|
|
45
42
|
import com.applovin.sdk.AppLovinSdk;
|
|
@@ -47,6 +44,8 @@ import com.applovin.sdk.AppLovinSdkConfiguration;
|
|
|
47
44
|
import com.applovin.sdk.AppLovinSdkConfiguration.ConsentFlowUserGeography;
|
|
48
45
|
import com.applovin.sdk.AppLovinSdkSettings;
|
|
49
46
|
import com.applovin.sdk.AppLovinSdkUtils;
|
|
47
|
+
import com.applovin.sdk.AppLovinTargetingData.AdContentRating;
|
|
48
|
+
import com.applovin.sdk.AppLovinTargetingData.Gender;
|
|
50
49
|
import com.facebook.react.bridge.Arguments;
|
|
51
50
|
import com.facebook.react.bridge.LifecycleEventListener;
|
|
52
51
|
import com.facebook.react.bridge.Promise;
|
|
@@ -2459,7 +2458,7 @@ public class AppLovinMAXModule
|
|
|
2459
2458
|
|
|
2460
2459
|
if ( promise == null )
|
|
2461
2460
|
{
|
|
2462
|
-
e(
|
|
2461
|
+
e( message );
|
|
2463
2462
|
return;
|
|
2464
2463
|
}
|
|
2465
2464
|
|
|
@@ -2531,38 +2530,38 @@ public class AppLovinMAXModule
|
|
|
2531
2530
|
return new Point( AppLovinSdkUtils.dpToPx( context, (int) xDp ), AppLovinSdkUtils.dpToPx( context, (int) yDp ) );
|
|
2532
2531
|
}
|
|
2533
2532
|
|
|
2534
|
-
private static
|
|
2533
|
+
private static Gender getAppLovinGender(@Nullable final String gender)
|
|
2535
2534
|
{
|
|
2536
2535
|
if ( gender != null )
|
|
2537
2536
|
{
|
|
2538
2537
|
if ( "F".equalsIgnoreCase( gender ) )
|
|
2539
2538
|
{
|
|
2540
|
-
return
|
|
2539
|
+
return Gender.FEMALE;
|
|
2541
2540
|
}
|
|
2542
2541
|
else if ( "M".equalsIgnoreCase( gender ) )
|
|
2543
2542
|
{
|
|
2544
|
-
return
|
|
2543
|
+
return Gender.MALE;
|
|
2545
2544
|
}
|
|
2546
2545
|
else if ( "O".equalsIgnoreCase( gender ) )
|
|
2547
2546
|
{
|
|
2548
|
-
return
|
|
2547
|
+
return Gender.OTHER;
|
|
2549
2548
|
}
|
|
2550
2549
|
}
|
|
2551
2550
|
|
|
2552
|
-
return
|
|
2551
|
+
return Gender.UNKNOWN;
|
|
2553
2552
|
}
|
|
2554
2553
|
|
|
2555
|
-
private static String getRawAppLovinGender(final
|
|
2554
|
+
private static String getRawAppLovinGender(final Gender gender)
|
|
2556
2555
|
{
|
|
2557
|
-
if ( gender ==
|
|
2556
|
+
if ( gender == Gender.FEMALE )
|
|
2558
2557
|
{
|
|
2559
2558
|
return "F";
|
|
2560
2559
|
}
|
|
2561
|
-
else if ( gender ==
|
|
2560
|
+
else if ( gender == Gender.MALE )
|
|
2562
2561
|
{
|
|
2563
2562
|
return "M";
|
|
2564
2563
|
}
|
|
2565
|
-
else if ( gender ==
|
|
2564
|
+
else if ( gender == Gender.OTHER )
|
|
2566
2565
|
{
|
|
2567
2566
|
return "O";
|
|
2568
2567
|
}
|
|
@@ -2570,22 +2569,22 @@ public class AppLovinMAXModule
|
|
|
2570
2569
|
return "U";
|
|
2571
2570
|
}
|
|
2572
2571
|
|
|
2573
|
-
private static
|
|
2572
|
+
private static AdContentRating getAppLovinAdContentRating(final int maximumAdContentRating)
|
|
2574
2573
|
{
|
|
2575
2574
|
if ( maximumAdContentRating == 1 )
|
|
2576
2575
|
{
|
|
2577
|
-
return
|
|
2576
|
+
return AdContentRating.ALL_AUDIENCES;
|
|
2578
2577
|
}
|
|
2579
2578
|
else if ( maximumAdContentRating == 2 )
|
|
2580
2579
|
{
|
|
2581
|
-
return
|
|
2580
|
+
return AdContentRating.EVERYONE_OVER_TWELVE;
|
|
2582
2581
|
}
|
|
2583
2582
|
else if ( maximumAdContentRating == 3 )
|
|
2584
2583
|
{
|
|
2585
|
-
return
|
|
2584
|
+
return AdContentRating.MATURE_AUDIENCES;
|
|
2586
2585
|
}
|
|
2587
2586
|
|
|
2588
|
-
return
|
|
2587
|
+
return AdContentRating.NONE;
|
|
2589
2588
|
}
|
|
2590
2589
|
|
|
2591
2590
|
private static ConsentFlowUserGeography getAppLovinConsentFlowUserGeography(final String userGeography)
|
|
@@ -2629,6 +2628,11 @@ public class AppLovinMAXModule
|
|
|
2629
2628
|
adInfo.putMap( "waterfall", createAdWaterfallInfo( ad.getWaterfall() ) );
|
|
2630
2629
|
adInfo.putString( "dspName", AppLovinSdkUtils.isValidString( ad.getDspName() ) ? ad.getDspName() : "" );
|
|
2631
2630
|
|
|
2631
|
+
WritableMap sizeObject = Arguments.createMap();
|
|
2632
|
+
sizeObject.putInt( "width", ad.getSize().getWidth() );
|
|
2633
|
+
sizeObject.putInt( "height", ad.getSize().getHeight() );
|
|
2634
|
+
adInfo.putMap( "size", sizeObject );
|
|
2635
|
+
|
|
2632
2636
|
return adInfo;
|
|
2633
2637
|
}
|
|
2634
2638
|
|
package/ios/AppLovinMAX.m
CHANGED
|
@@ -2193,7 +2193,10 @@ RCT_EXPORT_METHOD(setAppOpenAdLocalExtraParameter:(NSString *)adUnitIdentifier :
|
|
|
2193
2193
|
@"placement" : ad.placement ?: @"",
|
|
2194
2194
|
@"revenue" : @(ad.revenue),
|
|
2195
2195
|
@"waterfall": [self createAdWaterfallInfo: ad.waterfall],
|
|
2196
|
-
@"dspName" : ad.DSPName ?: @""
|
|
2196
|
+
@"dspName" : ad.DSPName ?: @"",
|
|
2197
|
+
@"size" : @{@"width" : @(ad.size.width),
|
|
2198
|
+
@"height" : @(ad.size.height)}
|
|
2199
|
+
};
|
|
2197
2200
|
}
|
|
2198
2201
|
|
|
2199
2202
|
- (NSDictionary<NSString *, id> *)adLoadFailedInfoForAd:(NSString *)adUnitIdentifier withError:(MAError *)error
|
package/ios/Podfile
CHANGED
|
@@ -35,6 +35,6 @@ target 'AppLovinMAX' do
|
|
|
35
35
|
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
|
|
36
36
|
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
|
|
37
37
|
|
|
38
|
-
pod 'AppLovinSDK', '12.
|
|
38
|
+
pod 'AppLovinSDK', '12.4.0'
|
|
39
39
|
|
|
40
40
|
end
|
package/ios/Podfile.lock
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
PODS:
|
|
2
|
-
- AppLovinSDK (12.
|
|
2
|
+
- AppLovinSDK (12.4.0)
|
|
3
3
|
- boost-for-react-native (1.63.0)
|
|
4
4
|
- DoubleConversion (1.1.6)
|
|
5
5
|
- FBLazyVector (0.63.5)
|
|
@@ -249,7 +249,7 @@ PODS:
|
|
|
249
249
|
- Yoga (1.14.0)
|
|
250
250
|
|
|
251
251
|
DEPENDENCIES:
|
|
252
|
-
- AppLovinSDK (= 12.
|
|
252
|
+
- AppLovinSDK (= 12.4.0)
|
|
253
253
|
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
|
254
254
|
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
|
255
255
|
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
|
|
@@ -339,7 +339,7 @@ EXTERNAL SOURCES:
|
|
|
339
339
|
:path: "../node_modules/react-native/ReactCommon/yoga"
|
|
340
340
|
|
|
341
341
|
SPEC CHECKSUMS:
|
|
342
|
-
AppLovinSDK:
|
|
342
|
+
AppLovinSDK: 2bf8c7a5100d7a997a52c6f669d23644a853dc0c
|
|
343
343
|
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
|
344
344
|
DoubleConversion: cde416483dac037923206447da6e1454df403714
|
|
345
345
|
FBLazyVector: 352a8ca9bbc8e2f097d680747a8c97ecef12d469
|
|
@@ -368,6 +368,6 @@ SPEC CHECKSUMS:
|
|
|
368
368
|
ReactCommon: b9ff54b6dd22ba4a776eda22d7f83ec27544ca35
|
|
369
369
|
Yoga: 0276e9f20976c8568e107cfc1163a8629051adc0
|
|
370
370
|
|
|
371
|
-
PODFILE CHECKSUM:
|
|
371
|
+
PODFILE CHECKSUM: 62b5804f10688875dcb55aab27adc7ae555df11e
|
|
372
372
|
|
|
373
373
|
COCOAPODS: 1.15.2
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-applovin-max",
|
|
3
3
|
"author": "AppLovin Corporation",
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.4.0",
|
|
5
5
|
"description": "AppLovin MAX React Native Plugin for Android and iOS",
|
|
6
6
|
"homepage": "https://github.com/AppLovin/AppLovin-MAX-React-Native",
|
|
7
7
|
"license": "MIT",
|
|
@@ -11,10 +11,10 @@ Pod::Spec.new do |s|
|
|
|
11
11
|
s.authors = package["author"]
|
|
12
12
|
|
|
13
13
|
s.platforms = { :ios => "10.0" }
|
|
14
|
-
s.source = { :git => "https://github.com/AppLovin/AppLovin-MAX-React-Native.git", :tag => "
|
|
14
|
+
s.source = { :git => "https://github.com/AppLovin/AppLovin-MAX-React-Native.git", :tag => "release_6_4_0" }
|
|
15
15
|
|
|
16
16
|
s.source_files = "ios/AppLovinMAX*.{h,m}"
|
|
17
17
|
|
|
18
18
|
s.dependency "React"
|
|
19
|
-
s.dependency "AppLovinSDK", "12.
|
|
19
|
+
s.dependency "AppLovinSDK", "12.4.0"
|
|
20
20
|
end
|
package/src/AdView.tsx
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { useEffect, useState, useRef, useCallback, useImperativeHandle, forwardRef } from 'react';
|
|
3
|
-
import {
|
|
2
|
+
import { useEffect, useState, useRef, useCallback, useImperativeHandle, useReducer, forwardRef } from 'react';
|
|
3
|
+
import {
|
|
4
|
+
NativeModules,
|
|
5
|
+
requireNativeComponent,
|
|
6
|
+
StyleSheet,
|
|
7
|
+
UIManager,
|
|
8
|
+
findNodeHandle,
|
|
9
|
+
useWindowDimensions,
|
|
10
|
+
} from 'react-native';
|
|
4
11
|
import type { ViewProps, ViewStyle, StyleProp, NativeMethods } from 'react-native';
|
|
5
12
|
import type { AdDisplayFailedInfo, AdInfo, AdLoadFailedInfo, AdRevenueInfo } from './types/AdInfo';
|
|
6
13
|
import type { AdNativeEvent } from './types/AdEvent';
|
|
@@ -67,77 +74,45 @@ const AdViewComponent = requireNativeComponent<AdViewProps & ViewProps & AdViewN
|
|
|
67
74
|
|
|
68
75
|
type AdViewType = React.Component<AdViewProps> & NativeMethods;
|
|
69
76
|
|
|
77
|
+
type SizeKey = 'width' | 'height';
|
|
78
|
+
type SizeRecord = Partial<Record<SizeKey, number | string>>;
|
|
79
|
+
|
|
70
80
|
const ADVIEW_SIZE = {
|
|
71
81
|
banner: { width: 320, height: 50 },
|
|
72
82
|
leader: { width: 728, height: 90 },
|
|
73
83
|
mrec: { width: 300, height: 250 },
|
|
74
84
|
};
|
|
75
85
|
|
|
86
|
+
// Returns 'auto' for unspecified width / height
|
|
76
87
|
const getOutlineViewSize = (style: StyleProp<ViewStyle>) => {
|
|
77
88
|
const viewStyle = StyleSheet.flatten(style || {});
|
|
78
|
-
return [viewStyle?.width, viewStyle?.height];
|
|
89
|
+
return [viewStyle?.width ?? 'auto', viewStyle?.height ?? 'auto'];
|
|
79
90
|
};
|
|
80
91
|
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
adaptiveBannerEnabled
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
): Promise<
|
|
92
|
+
const sizeBannerDimensions = (
|
|
93
|
+
sizeProps: SizeRecord,
|
|
94
|
+
adaptiveBannerEnabled: boolean,
|
|
95
|
+
screenWidth: number,
|
|
96
|
+
bannerFormatSize: SizeRecord
|
|
97
|
+
): Promise<SizeRecord> => {
|
|
87
98
|
const sizeForBannerFormat = async () => {
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
const minWidth = isTablet ? ADVIEW_SIZE.leader.width : ADVIEW_SIZE.banner.width;
|
|
99
|
+
const width = sizeProps.width === 'auto' ? screenWidth : sizeProps.width;
|
|
91
100
|
|
|
92
|
-
let
|
|
93
|
-
if (
|
|
94
|
-
if (
|
|
95
|
-
|
|
101
|
+
let height;
|
|
102
|
+
if (sizeProps.height === 'auto') {
|
|
103
|
+
if (adaptiveBannerEnabled) {
|
|
104
|
+
height = await AppLovinMAX.getAdaptiveBannerHeightForWidth(screenWidth);
|
|
96
105
|
} else {
|
|
97
|
-
|
|
106
|
+
height = bannerFormatSize.height;
|
|
98
107
|
}
|
|
99
108
|
} else {
|
|
100
|
-
|
|
109
|
+
height = sizeProps.height;
|
|
101
110
|
}
|
|
102
111
|
|
|
103
|
-
return Promise.resolve({
|
|
104
|
-
...(width === 'auto'
|
|
105
|
-
? {
|
|
106
|
-
width: minWidth,
|
|
107
|
-
}
|
|
108
|
-
: {
|
|
109
|
-
minWidth: minWidth,
|
|
110
|
-
}),
|
|
111
|
-
...(height === 'auto'
|
|
112
|
-
? {
|
|
113
|
-
height: minHeight,
|
|
114
|
-
}
|
|
115
|
-
: {
|
|
116
|
-
minHeight: minHeight,
|
|
117
|
-
}),
|
|
118
|
-
});
|
|
112
|
+
return Promise.resolve({ width: width, height: height });
|
|
119
113
|
};
|
|
120
114
|
|
|
121
|
-
|
|
122
|
-
return sizeForBannerFormat();
|
|
123
|
-
} else {
|
|
124
|
-
return Promise.resolve({
|
|
125
|
-
...(width === 'auto'
|
|
126
|
-
? {
|
|
127
|
-
width: ADVIEW_SIZE.mrec.width,
|
|
128
|
-
}
|
|
129
|
-
: {
|
|
130
|
-
minWidth: ADVIEW_SIZE.mrec.width,
|
|
131
|
-
}),
|
|
132
|
-
...(height === 'auto'
|
|
133
|
-
? {
|
|
134
|
-
height: ADVIEW_SIZE.mrec.height,
|
|
135
|
-
}
|
|
136
|
-
: {
|
|
137
|
-
minHeight: ADVIEW_SIZE.mrec.height,
|
|
138
|
-
}),
|
|
139
|
-
});
|
|
140
|
-
}
|
|
115
|
+
return sizeForBannerFormat();
|
|
141
116
|
};
|
|
142
117
|
|
|
143
118
|
/**
|
|
@@ -186,9 +161,13 @@ export const AdView = forwardRef<AdViewHandler, AdViewProps & ViewProps>(functio
|
|
|
186
161
|
},
|
|
187
162
|
ref
|
|
188
163
|
) {
|
|
164
|
+
const { width: screenWidth } = useWindowDimensions();
|
|
165
|
+
const adFormatSize = useRef<SizeRecord>({});
|
|
166
|
+
const [, forceUpdate] = useReducer((x) => x + 1, 0);
|
|
189
167
|
const adViewRef = useRef<AdViewType | null>(null);
|
|
190
168
|
const [isInitialized, setIsInitialized] = useState<boolean>(false);
|
|
191
|
-
const
|
|
169
|
+
const sizeProps = useRef<SizeRecord>({});
|
|
170
|
+
const dimensions = useRef<SizeRecord>({});
|
|
192
171
|
|
|
193
172
|
const loadAd = () => {
|
|
194
173
|
if (adViewRef.current) {
|
|
@@ -209,23 +188,55 @@ export const AdView = forwardRef<AdViewHandler, AdViewProps & ViewProps>(functio
|
|
|
209
188
|
}, []);
|
|
210
189
|
|
|
211
190
|
useEffect(() => {
|
|
191
|
+
if (adFormat === AdFormat.BANNER) {
|
|
192
|
+
AppLovinMAX.isTablet().then((result: boolean) => {
|
|
193
|
+
if (result) {
|
|
194
|
+
adFormatSize.current = { width: ADVIEW_SIZE.leader.width, height: ADVIEW_SIZE.leader.height };
|
|
195
|
+
} else {
|
|
196
|
+
adFormatSize.current = { width: ADVIEW_SIZE.banner.width, height: ADVIEW_SIZE.banner.height };
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
} else {
|
|
200
|
+
adFormatSize.current = { width: ADVIEW_SIZE.mrec.width, height: ADVIEW_SIZE.mrec.height };
|
|
201
|
+
}
|
|
202
|
+
|
|
212
203
|
AppLovinMAX.isInitialized().then((result: boolean) => {
|
|
213
204
|
setIsInitialized(result);
|
|
214
205
|
if (!result) {
|
|
215
206
|
console.warn('AdView is mounted before the initialization of the AppLovin MAX React Native module');
|
|
216
207
|
}
|
|
217
208
|
});
|
|
218
|
-
}, []);
|
|
209
|
+
}, []); // Run once when mounted
|
|
219
210
|
|
|
220
211
|
useEffect(() => {
|
|
221
212
|
if (!isInitialized) return;
|
|
213
|
+
|
|
222
214
|
const [width, height] = getOutlineViewSize(style);
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
215
|
+
|
|
216
|
+
if (sizeProps.current.width === width && sizeProps.current.height === height) return;
|
|
217
|
+
|
|
218
|
+
sizeProps.current = { width: width, height: height };
|
|
219
|
+
|
|
220
|
+
if (adFormat === AdFormat.BANNER) {
|
|
221
|
+
sizeBannerDimensions(sizeProps.current, adaptiveBannerEnabled, screenWidth, adFormatSize.current).then(
|
|
222
|
+
(adaptedSize: SizeRecord) => {
|
|
223
|
+
if (
|
|
224
|
+
dimensions.current.width !== adaptedSize.width ||
|
|
225
|
+
dimensions.current.height !== adaptedSize.height
|
|
226
|
+
) {
|
|
227
|
+
dimensions.current = adaptedSize;
|
|
228
|
+
forceUpdate();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
);
|
|
232
|
+
} else {
|
|
233
|
+
dimensions.current = {
|
|
234
|
+
width: width === 'auto' ? adFormatSize.current.width : width,
|
|
235
|
+
height: height === 'auto' ? adFormatSize.current.height : height,
|
|
236
|
+
};
|
|
237
|
+
forceUpdate();
|
|
238
|
+
}
|
|
239
|
+
}); // Run every render
|
|
229
240
|
|
|
230
241
|
const onAdLoadedEvent = (event: AdNativeEvent<AdInfo>) => {
|
|
231
242
|
if (onAdLoaded) onAdLoaded(event.nativeEvent);
|
|
@@ -259,7 +270,7 @@ export const AdView = forwardRef<AdViewHandler, AdViewProps & ViewProps>(functio
|
|
|
259
270
|
if (!isInitialized) {
|
|
260
271
|
return null;
|
|
261
272
|
} else {
|
|
262
|
-
const isDimensionsSet = Object.keys(dimensions).length > 0;
|
|
273
|
+
const isDimensionsSet = Object.keys(dimensions.current).length > 0;
|
|
263
274
|
|
|
264
275
|
// Not sized yet
|
|
265
276
|
if (!isDimensionsSet) {
|
|
@@ -286,7 +297,7 @@ export const AdView = forwardRef<AdViewHandler, AdViewProps & ViewProps>(functio
|
|
|
286
297
|
onAdExpandedEvent={onAdExpandedEvent}
|
|
287
298
|
onAdCollapsedEvent={onAdCollapsedEvent}
|
|
288
299
|
onAdRevenuePaidEvent={onAdRevenuePaidEvent}
|
|
289
|
-
style={Object.assign({}, style, dimensions)}
|
|
300
|
+
style={Object.assign({}, style, dimensions.current)}
|
|
290
301
|
{...otherProps}
|
|
291
302
|
/>
|
|
292
303
|
);
|
package/src/AppLovinMAX.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { Configuration } from './types/Configuration';
|
|
|
4
4
|
|
|
5
5
|
const NativeAppLovinMAX = NativeModules.AppLovinMAX;
|
|
6
6
|
|
|
7
|
-
const VERSION = '6.
|
|
7
|
+
const VERSION = '6.4.0';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* This enum represents the user's geography used to determine the type of consent flow shown to the
|
package/src/BannerAd.ts
CHANGED
|
@@ -18,6 +18,7 @@ const {
|
|
|
18
18
|
|
|
19
19
|
const createAd = (adUnitId: string, position: AdViewPosition, xOffset?: number, yOffset?: number): void => {
|
|
20
20
|
AppLovinMAX.createBannerWithOffsets(adUnitId, position, xOffset ?? 0, yOffset ?? 0);
|
|
21
|
+
AppLovinMAX.setBannerExtraParameter(adUnitId, 'adaptive_banner', 'true');
|
|
21
22
|
};
|
|
22
23
|
|
|
23
24
|
const destroyAd = (adUnitId: string): void => {
|
|
@@ -88,7 +88,7 @@ export const IconView = (props: Omit<ImageProps, 'source'>) => {
|
|
|
88
88
|
const { nativeAd, nativeAdView } = useContext(NativeAdViewContext);
|
|
89
89
|
|
|
90
90
|
useEffect(() => {
|
|
91
|
-
if (!nativeAd.image || !imageRef.current) return;
|
|
91
|
+
if (!(nativeAd.image || nativeAd.url) || !imageRef.current) return;
|
|
92
92
|
|
|
93
93
|
nativeAdView?.setNativeProps({
|
|
94
94
|
iconView: findNodeHandle(imageRef.current),
|
|
@@ -96,7 +96,7 @@ export const IconView = (props: Omit<ImageProps, 'source'>) => {
|
|
|
96
96
|
}, [nativeAd]);
|
|
97
97
|
|
|
98
98
|
return nativeAd.url ? (
|
|
99
|
-
<Image {...props} source={{ uri: nativeAd.url }} />
|
|
99
|
+
<Image {...props} ref={imageRef} source={{ uri: nativeAd.url }} />
|
|
100
100
|
) : nativeAd.image ? (
|
|
101
101
|
<Image {...props} ref={imageRef} source={0} />
|
|
102
102
|
) : (
|
package/src/types/AdInfo.ts
CHANGED
|
@@ -48,6 +48,14 @@ export type AdInfo = {
|
|
|
48
48
|
* The native ad info.
|
|
49
49
|
*/
|
|
50
50
|
nativeAd?: AdNativeInfo | null;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The size of the AdView format ad, or size with (width: 0, height: 0) otherwise.
|
|
54
|
+
*/
|
|
55
|
+
size: {
|
|
56
|
+
width: number;
|
|
57
|
+
height: number;
|
|
58
|
+
};
|
|
51
59
|
};
|
|
52
60
|
|
|
53
61
|
/**
|