react-native-applovin-max 7.0.1 → 7.1.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 (49) hide show
  1. package/android/build.gradle +3 -3
  2. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdEvents.java +67 -0
  3. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdView.java +10 -6
  4. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewManager.java +7 -7
  5. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewUiComponent.java +9 -13
  6. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXModule.java +142 -626
  7. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdView.java +6 -6
  8. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +4 -4
  9. package/ios/AppLovinMAX.m +83 -478
  10. package/ios/AppLovinMAXAdView.h +12 -3
  11. package/ios/AppLovinMAXAdView.m +17 -13
  12. package/ios/AppLovinMAXAdViewManager.m +1 -1
  13. package/ios/AppLovinMAXAdViewUIComponent.h +7 -6
  14. package/ios/AppLovinMAXAdViewUIComponent.m +10 -15
  15. package/ios/AppLovinMAXNativeAdView.m +2 -2
  16. package/lib/commonjs/AppLovinMAX.js +19 -3
  17. package/lib/commonjs/AppLovinMAX.js.map +1 -1
  18. package/lib/commonjs/index.js +0 -22
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/module/AppLovinMAX.js +19 -3
  21. package/lib/module/AppLovinMAX.js.map +1 -1
  22. package/lib/module/index.js +0 -1
  23. package/lib/module/index.js.map +1 -1
  24. package/lib/typescript/src/AppLovinMAX.d.ts.map +1 -1
  25. package/lib/typescript/src/index.d.ts +0 -1
  26. package/lib/typescript/src/index.d.ts.map +1 -1
  27. package/lib/typescript/src/types/AdProps.d.ts +6 -6
  28. package/lib/typescript/src/types/AppLovinMAX.d.ts +18 -6
  29. package/lib/typescript/src/types/AppLovinMAX.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/react-native-applovin-max.podspec +2 -2
  32. package/src/AppLovinMAX.ts +24 -3
  33. package/src/index.ts +0 -1
  34. package/src/types/AdProps.ts +6 -6
  35. package/src/types/AppLovinMAX.ts +20 -7
  36. package/lib/commonjs/TargetingData.js +0 -179
  37. package/lib/commonjs/TargetingData.js.map +0 -1
  38. package/lib/commonjs/types/TargetingData.js +0 -6
  39. package/lib/commonjs/types/TargetingData.js.map +0 -1
  40. package/lib/module/TargetingData.js +0 -175
  41. package/lib/module/TargetingData.js.map +0 -1
  42. package/lib/module/types/TargetingData.js +0 -2
  43. package/lib/module/types/TargetingData.js.map +0 -1
  44. package/lib/typescript/src/TargetingData.d.ts +0 -26
  45. package/lib/typescript/src/TargetingData.d.ts.map +0 -1
  46. package/lib/typescript/src/types/TargetingData.d.ts +0 -43
  47. package/lib/typescript/src/types/TargetingData.d.ts.map +0 -1
  48. package/src/TargetingData.ts +0 -212
  49. package/src/types/TargetingData.ts +0 -50
@@ -2,8 +2,6 @@ package com.applovin.reactnative;
2
2
 
3
3
  import android.app.Activity;
4
4
  import android.content.Context;
5
- import android.content.pm.ApplicationInfo;
6
- import android.content.pm.PackageManager;
7
5
  import android.graphics.Color;
8
6
  import android.graphics.Point;
9
7
  import android.graphics.Rect;
@@ -32,6 +30,8 @@ import com.applovin.mediation.MaxMediatedNetworkInfo;
32
30
  import com.applovin.mediation.MaxNetworkResponseInfo;
33
31
  import com.applovin.mediation.MaxReward;
34
32
  import com.applovin.mediation.MaxRewardedAdListener;
33
+ import com.applovin.mediation.MaxSegment;
34
+ import com.applovin.mediation.MaxSegmentCollection;
35
35
  import com.applovin.mediation.ads.MaxAdView;
36
36
  import com.applovin.mediation.ads.MaxAppOpenAd;
37
37
  import com.applovin.mediation.ads.MaxInterstitialAd;
@@ -42,10 +42,8 @@ import com.applovin.sdk.AppLovinPrivacySettings;
42
42
  import com.applovin.sdk.AppLovinSdk;
43
43
  import com.applovin.sdk.AppLovinSdkConfiguration;
44
44
  import com.applovin.sdk.AppLovinSdkConfiguration.ConsentFlowUserGeography;
45
- import com.applovin.sdk.AppLovinSdkSettings;
45
+ import com.applovin.sdk.AppLovinSdkInitializationConfiguration;
46
46
  import com.applovin.sdk.AppLovinSdkUtils;
47
- import com.applovin.sdk.AppLovinTargetingData.AdContentRating;
48
- import com.applovin.sdk.AppLovinTargetingData.Gender;
49
47
  import com.facebook.react.bridge.Arguments;
50
48
  import com.facebook.react.bridge.LifecycleEventListener;
51
49
  import com.facebook.react.bridge.Promise;
@@ -84,48 +82,6 @@ public class AppLovinMAXModule
84
82
  private static final String USER_GEOGRAPHY_OTHER = "O";
85
83
  private static final String USER_GEOGRAPHY_UNKNOWN = "U";
86
84
 
87
- private static final String ON_BANNER_AD_LOADED_EVENT = "OnBannerAdLoadedEvent";
88
- private static final String ON_BANNER_AD_LOAD_FAILED_EVENT = "OnBannerAdLoadFailedEvent";
89
- private static final String ON_BANNER_AD_CLICKED_EVENT = "OnBannerAdClickedEvent";
90
- private static final String ON_BANNER_AD_COLLAPSED_EVENT = "OnBannerAdCollapsedEvent";
91
- private static final String ON_BANNER_AD_EXPANDED_EVENT = "OnBannerAdExpandedEvent";
92
- private static final String ON_BANNER_AD_REVENUE_PAID = "OnBannerAdRevenuePaid";
93
-
94
- private static final String ON_MREC_AD_LOADED_EVENT = "OnMRecAdLoadedEvent";
95
- private static final String ON_MREC_AD_LOAD_FAILED_EVENT = "OnMRecAdLoadFailedEvent";
96
- private static final String ON_MREC_AD_CLICKED_EVENT = "OnMRecAdClickedEvent";
97
- private static final String ON_MREC_AD_COLLAPSED_EVENT = "OnMRecAdCollapsedEvent";
98
- private static final String ON_MREC_AD_EXPANDED_EVENT = "OnMRecAdExpandedEvent";
99
- private static final String ON_MREC_AD_REVENUE_PAID = "OnMRecAdRevenuePaid";
100
-
101
- private static final String ON_INTERSTITIAL_LOADED_EVENT = "OnInterstitialLoadedEvent";
102
- private static final String ON_INTERSTITIAL_LOAD_FAILED_EVENT = "OnInterstitialLoadFailedEvent";
103
- private static final String ON_INTERSTITIAL_CLICKED_EVENT = "OnInterstitialClickedEvent";
104
- private static final String ON_INTERSTITIAL_DISPLAYED_EVENT = "OnInterstitialDisplayedEvent";
105
- private static final String ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT = "OnInterstitialAdFailedToDisplayEvent";
106
- private static final String ON_INTERSTITIAL_HIDDEN_EVENT = "OnInterstitialHiddenEvent";
107
- private static final String ON_INTERSTITIAL_AD_REVENUE_PAID = "OnInterstitialAdRevenuePaid";
108
-
109
- private static final String ON_REWARDED_AD_LOADED_EVENT = "OnRewardedAdLoadedEvent";
110
- private static final String ON_REWARDED_AD_LOAD_FAILED_EVENT = "OnRewardedAdLoadFailedEvent";
111
- private static final String ON_REWARDED_AD_CLICKED_EVENT = "OnRewardedAdClickedEvent";
112
- private static final String ON_REWARDED_AD_DISPLAYED_EVENT = "OnRewardedAdDisplayedEvent";
113
- private static final String ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT = "OnRewardedAdFailedToDisplayEvent";
114
- private static final String ON_REWARDED_AD_HIDDEN_EVENT = "OnRewardedAdHiddenEvent";
115
- private static final String ON_REWARDED_AD_RECEIVED_REWARD_EVENT = "OnRewardedAdReceivedRewardEvent";
116
- private static final String ON_REWARDED_AD_REVENUE_PAID = "OnRewardedAdRevenuePaid";
117
-
118
- private static final String ON_APPOPEN_AD_LOADED_EVENT = "OnAppOpenAdLoadedEvent";
119
- private static final String ON_APPOPEN_AD_LOAD_FAILED_EVENT = "OnAppOpenAdLoadFailedEvent";
120
- private static final String ON_APPOPEN_AD_CLICKED_EVENT = "OnAppOpenAdClickedEvent";
121
- private static final String ON_APPOPEN_AD_DISPLAYED_EVENT = "OnAppOpenAdDisplayedEvent";
122
- private static final String ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT = "OnAppOpenAdFailedToDisplayEvent";
123
- private static final String ON_APPOPEN_AD_HIDDEN_EVENT = "OnAppOpenAdHiddenEvent";
124
- private static final String ON_APPOPEN_AD_REVENUE_PAID = "OnAppOpenAdRevenuePaid";
125
-
126
- private static final String ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOADED_EVENT = "OnNativeUIComponentAdViewAdLoadedEvent";
127
- private static final String ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOAD_FAILED_EVENT = "OnNativeUIComponentAdViewAdLoadFailedEvent";
128
-
129
85
  private static final String TOP_CENTER = "top_center";
130
86
  private static final String TOP_LEFT = "top_left";
131
87
  private static final String TOP_RIGHT = "top_right";
@@ -143,36 +99,18 @@ public class AppLovinMAXModule
143
99
  private static Activity currentActivity;
144
100
 
145
101
  // Parent Fields
146
- private AppLovinSdk sdk;
147
- private boolean isPluginInitialized;
148
- private boolean isSdkInitialized;
149
- private AppLovinSdkConfiguration sdkConfiguration;
102
+ private final AppLovinSdk sdk;
103
+ private boolean isPluginInitialized;
104
+ private boolean isSdkInitialized;
105
+ private AppLovinSdkConfiguration sdkConfiguration;
150
106
 
151
107
  private WindowManager windowManager;
152
108
  private int lastRotation;
153
109
 
154
110
  // Store these values if pub attempts to set it before initializing
155
- private List<String> initializationAdUnitIdsToSet;
156
- private String userIdToSet;
157
- private Boolean mutedToSet;
158
- private List<String> testDeviceAdvertisingIdsToSet;
159
- private Boolean verboseLoggingToSet;
160
- private Boolean creativeDebuggerEnabledToSet;
161
- private Boolean locationCollectionEnabledToSet;
162
- private final Map<String, String> extraParametersToSet = new HashMap<>( 8 );
163
-
164
- private Boolean termsAndPrivacyPolicyFlowEnabledToSet;
165
- private Uri privacyPolicyURLToSet;
166
- private Uri termsOfServiceURLToSet;
167
- private String debugUserGeographyToSet;
168
-
169
- private Integer targetingYearOfBirthToSet;
170
- private String targetingGenderToSet;
171
- private Integer targetingMaximumAdContentRatingToSet;
172
- private String targetingEmailToSet;
173
- private String targetingPhoneNumberToSet;
174
- private List targetingKeywordsToSet;
175
- private List targetingInterestsToSet;
111
+ private List<String> initializationAdUnitIdsToSet;
112
+ private List<String> testDeviceAdvertisingIdsToSet;
113
+ private final MaxSegmentCollection.Builder segmentCollectionBuilder = MaxSegmentCollection.builder();
176
114
 
177
115
  // Fullscreen Ad Fields
178
116
  private final Map<String, MaxInterstitialAd> interstitials = new HashMap<>( 2 );
@@ -205,6 +143,8 @@ public class AppLovinMAXModule
205
143
  instance = this;
206
144
  currentActivity = reactContext.getCurrentActivity();
207
145
 
146
+ sdk = AppLovinSdk.getInstance( reactContext );
147
+
208
148
  // Listening to Lifecycle Events
209
149
  reactContext.addLifecycleEventListener( this );
210
150
  }
@@ -249,160 +189,32 @@ public class AppLovinMAXModule
249
189
 
250
190
  d( "Initializing AppLovin MAX React Native v" + pluginVersion + "..." );
251
191
 
252
- // If SDK key passed in is empty, check Android Manifest
253
- String sdkKeyToUse = sdkKey;
254
192
  if ( TextUtils.isEmpty( sdkKey ) )
255
193
  {
256
- try
257
- {
258
- PackageManager packageManager = getReactApplicationContext().getPackageManager();
259
- String packageName = getReactApplicationContext().getPackageName();
260
- ApplicationInfo applicationInfo = packageManager.getApplicationInfo( packageName, PackageManager.GET_META_DATA );
261
- Bundle metaData = applicationInfo.metaData;
262
-
263
- sdkKeyToUse = metaData.getString( "applovin.sdk.key", "" );
264
- }
265
- catch ( Throwable th )
266
- {
267
- e( "Unable to retrieve SDK key from Android Manifest: " + th );
268
- }
269
-
270
- if ( TextUtils.isEmpty( sdkKeyToUse ) )
271
- {
272
- promise.reject( new IllegalStateException( "Unable to initialize AppLovin SDK - no SDK key provided and not found in Android Manifest!" ) );
273
- return;
274
- }
194
+ promise.reject( new IllegalStateException( "Unable to initialize AppLovin SDK - no SDK key provided!" ) );
195
+ return;
275
196
  }
276
197
 
277
- AppLovinSdkSettings settings = new AppLovinSdkSettings( getReactApplicationContext() );
278
-
279
- // Selective init
198
+ AppLovinSdkInitializationConfiguration.Builder initConfigBuidler = AppLovinSdkInitializationConfiguration.builder( sdkKey, getReactApplicationContext() );
199
+ initConfigBuidler.setPluginVersion( "React-Native-" + pluginVersion );
200
+ initConfigBuidler.setMediationProvider( AppLovinMediationProvider.MAX );
201
+ initConfigBuidler.setSegmentCollection( segmentCollectionBuilder.build() );
280
202
  if ( initializationAdUnitIdsToSet != null )
281
203
  {
282
- settings.setInitializationAdUnitIds( initializationAdUnitIdsToSet );
204
+ initConfigBuidler.setAdUnitIds( initializationAdUnitIdsToSet );
283
205
  initializationAdUnitIdsToSet = null;
284
206
  }
285
-
286
- if ( termsAndPrivacyPolicyFlowEnabledToSet != null )
287
- {
288
- settings.getTermsAndPrivacyPolicyFlowSettings().setEnabled( termsAndPrivacyPolicyFlowEnabledToSet );
289
- termsAndPrivacyPolicyFlowEnabledToSet = null;
290
- }
291
-
292
- if ( privacyPolicyURLToSet != null )
293
- {
294
- settings.getTermsAndPrivacyPolicyFlowSettings().setPrivacyPolicyUri( privacyPolicyURLToSet );
295
- privacyPolicyURLToSet = null;
296
- }
297
-
298
- if ( termsOfServiceURLToSet != null )
299
- {
300
- settings.getTermsAndPrivacyPolicyFlowSettings().setTermsOfServiceUri( termsOfServiceURLToSet );
301
- termsOfServiceURLToSet = null;
302
- }
303
-
304
- if ( AppLovinSdkUtils.isValidString( debugUserGeographyToSet ) )
305
- {
306
- settings.getTermsAndPrivacyPolicyFlowSettings().setDebugUserGeography( getAppLovinConsentFlowUserGeography( debugUserGeographyToSet ) );
307
- debugUserGeographyToSet = null;
308
- }
309
-
310
- // Set muted if needed
311
- if ( mutedToSet != null )
312
- {
313
- settings.setMuted( mutedToSet );
314
- mutedToSet = null;
315
- }
316
-
317
- // Set test device ids if needed
318
207
  if ( testDeviceAdvertisingIdsToSet != null )
319
208
  {
320
- settings.setTestDeviceAdvertisingIds( testDeviceAdvertisingIdsToSet );
209
+ initConfigBuidler.setTestDeviceAdvertisingIds( testDeviceAdvertisingIdsToSet );
321
210
  testDeviceAdvertisingIdsToSet = null;
322
211
  }
323
212
 
324
- // Set verbose logging state if needed
325
- if ( verboseLoggingToSet != null )
326
- {
327
- settings.setVerboseLogging( verboseLoggingToSet );
328
- verboseLoggingToSet = null;
329
- }
330
-
331
- // Set creative debugger enabled if needed.
332
- if ( creativeDebuggerEnabledToSet != null )
333
- {
334
- settings.setCreativeDebuggerEnabled( creativeDebuggerEnabledToSet );
335
- creativeDebuggerEnabledToSet = null;
336
- }
337
-
338
- // Set location collection enabled if needed
339
- if ( locationCollectionEnabledToSet != null )
340
- {
341
- settings.setLocationCollectionEnabled( locationCollectionEnabledToSet );
342
- locationCollectionEnabledToSet = null;
343
- }
344
-
345
- setPendingExtraParametersIfNeeded( settings );
346
-
347
213
  // Initialize SDK
348
- sdk = AppLovinSdk.getInstance( sdkKeyToUse, settings, getReactApplicationContext() );
349
- sdk.setPluginVersion( "React-Native-" + pluginVersion );
350
- sdk.setMediationProvider( AppLovinMediationProvider.MAX );
351
-
352
- // Set user id if needed
353
- if ( AppLovinSdkUtils.isValidString( userIdToSet ) )
354
- {
355
- sdk.setUserIdentifier( userIdToSet );
356
- userIdToSet = null;
357
- }
358
-
359
- if ( targetingYearOfBirthToSet != null )
360
- {
361
- sdk.getTargetingData().setYearOfBirth( targetingYearOfBirthToSet <= 0 ? null : targetingYearOfBirthToSet );
362
- targetingYearOfBirthToSet = null;
363
- }
364
-
365
- if ( targetingGenderToSet != null )
366
- {
367
- sdk.getTargetingData().setGender( getAppLovinGender( targetingGenderToSet ) );
368
- targetingGenderToSet = null;
369
- }
370
-
371
- if ( targetingMaximumAdContentRatingToSet != null )
372
- {
373
- sdk.getTargetingData().setMaximumAdContentRating( getAppLovinAdContentRating( targetingMaximumAdContentRatingToSet ) );
374
- targetingMaximumAdContentRatingToSet = null;
375
- }
376
-
377
- if ( targetingEmailToSet != null )
378
- {
379
- sdk.getTargetingData().setEmail( targetingEmailToSet );
380
- targetingEmailToSet = null;
381
- }
382
-
383
- if ( targetingPhoneNumberToSet != null )
384
- {
385
- sdk.getTargetingData().setPhoneNumber( targetingPhoneNumberToSet );
386
- targetingPhoneNumberToSet = null;
387
- }
388
-
389
- if ( targetingKeywordsToSet != null )
390
- {
391
- sdk.getTargetingData().setKeywords( targetingKeywordsToSet );
392
- targetingKeywordsToSet = null;
393
- }
394
-
395
- if ( targetingInterestsToSet != null )
396
- {
397
- sdk.getTargetingData().setInterests( targetingInterestsToSet );
398
- targetingInterestsToSet = null;
399
- }
400
-
401
- sdk.initializeSdk( configuration -> {
402
-
214
+ sdk.initialize( initConfigBuidler.build(), appLovinSdkConfiguration -> {
403
215
  d( "SDK initialized" );
404
216
 
405
- sdkConfiguration = configuration;
217
+ sdkConfiguration = appLovinSdkConfiguration;
406
218
  isSdkInitialized = true;
407
219
 
408
220
  windowManager = (WindowManager) getReactApplicationContext().getSystemService( Context.WINDOW_SERVICE );
@@ -458,7 +270,7 @@ public class AppLovinMAXModule
458
270
  @ReactMethod
459
271
  public void showMediationDebugger()
460
272
  {
461
- if ( sdk == null )
273
+ if ( !isSdkInitialized )
462
274
  {
463
275
  logUninitializedAccessError( "showMediationDebugger" );
464
276
  return;
@@ -506,63 +318,31 @@ public class AppLovinMAXModule
506
318
  @ReactMethod
507
319
  public void setUserId(final String userId)
508
320
  {
509
- if ( isPluginInitialized )
510
- {
511
- sdk.setUserIdentifier( userId );
512
- userIdToSet = null;
513
- }
514
- else
515
- {
516
- userIdToSet = userId;
517
- }
321
+ sdk.getSettings().setUserIdentifier( userId );
518
322
  }
519
323
 
520
324
  @ReactMethod
521
325
  public void setMuted(final boolean muted)
522
326
  {
523
- if ( isPluginInitialized )
524
- {
525
- sdk.getSettings().setMuted( muted );
526
- mutedToSet = null;
527
- }
528
- else
529
- {
530
- mutedToSet = muted;
531
- }
327
+ sdk.getSettings().setMuted( muted );
532
328
  }
533
329
 
534
330
  @ReactMethod
535
331
  public void isMuted(final Promise promise)
536
332
  {
537
- promise.resolve( isPluginInitialized && sdk.getSettings().isMuted() );
333
+ promise.resolve( sdk.getSettings().isMuted() );
538
334
  }
539
335
 
540
336
  @ReactMethod
541
337
  public void setVerboseLogging(final boolean enabled)
542
338
  {
543
- if ( isPluginInitialized )
544
- {
545
- sdk.getSettings().setVerboseLogging( enabled );
546
- verboseLoggingToSet = null;
547
- }
548
- else
549
- {
550
- verboseLoggingToSet = enabled;
551
- }
339
+ sdk.getSettings().setVerboseLogging( enabled );
552
340
  }
553
341
 
554
342
  @ReactMethod
555
343
  public void setCreativeDebuggerEnabled(final boolean enabled)
556
344
  {
557
- if ( isPluginInitialized )
558
- {
559
- sdk.getSettings().setCreativeDebuggerEnabled( enabled );
560
- creativeDebuggerEnabledToSet = null;
561
- }
562
- else
563
- {
564
- creativeDebuggerEnabledToSet = enabled;
565
- }
345
+ sdk.getSettings().setCreativeDebuggerEnabled( enabled );
566
346
  }
567
347
 
568
348
  @ReactMethod
@@ -576,15 +356,7 @@ public class AppLovinMAXModule
576
356
  advertisingIds.add( (String) rawAdvertisingId );
577
357
  }
578
358
 
579
- if ( isPluginInitialized )
580
- {
581
- sdk.getSettings().setTestDeviceAdvertisingIds( advertisingIds );
582
- testDeviceAdvertisingIdsToSet = null;
583
- }
584
- else
585
- {
586
- testDeviceAdvertisingIdsToSet = advertisingIds;
587
- }
359
+ testDeviceAdvertisingIdsToSet = advertisingIds;
588
360
  }
589
361
 
590
362
  @ReactMethod
@@ -596,16 +368,7 @@ public class AppLovinMAXModule
596
368
  return;
597
369
  }
598
370
 
599
- if ( sdk != null )
600
- {
601
- AppLovinSdkSettings settings = sdk.getSettings();
602
- settings.setExtraParameter( key, value );
603
- setPendingExtraParametersIfNeeded( settings );
604
- }
605
- else
606
- {
607
- extraParametersToSet.put( key, value );
608
- }
371
+ sdk.getSettings().setExtraParameter( key, value );
609
372
  }
610
373
 
611
374
  @ReactMethod
@@ -628,25 +391,25 @@ public class AppLovinMAXModule
628
391
  @ReactMethod
629
392
  public void setTermsAndPrivacyPolicyFlowEnabled(final boolean enabled)
630
393
  {
631
- termsAndPrivacyPolicyFlowEnabledToSet = enabled;
394
+ sdk.getSettings().getTermsAndPrivacyPolicyFlowSettings().setEnabled( enabled );
632
395
  }
633
396
 
634
397
  @ReactMethod
635
398
  public void setPrivacyPolicyUrl(final String urlString)
636
399
  {
637
- privacyPolicyURLToSet = Uri.parse( urlString );
400
+ sdk.getSettings().getTermsAndPrivacyPolicyFlowSettings().setPrivacyPolicyUri( Uri.parse( urlString ) );
638
401
  }
639
402
 
640
403
  @ReactMethod
641
404
  public void setTermsOfServiceUrl(final String urlString)
642
405
  {
643
- termsOfServiceURLToSet = Uri.parse( urlString );
406
+ sdk.getSettings().getTermsAndPrivacyPolicyFlowSettings().setTermsOfServiceUri( Uri.parse( urlString ) );
644
407
  }
645
408
 
646
409
  @ReactMethod
647
410
  public void setConsentFlowDebugUserGeography(final String userGeography)
648
411
  {
649
- debugUserGeographyToSet = userGeography;
412
+ sdk.getSettings().getTermsAndPrivacyPolicyFlowSettings().setDebugUserGeography( getAppLovinConsentFlowUserGeography( userGeography ) );
650
413
  }
651
414
 
652
415
  @ReactMethod
@@ -694,253 +457,68 @@ public class AppLovinMAXModule
694
457
  promise.resolve( sdk.getCmpService().hasSupportedCmp() );
695
458
  }
696
459
 
697
- // Data Passing
698
-
699
- @ReactMethod
700
- public void setTargetingDataYearOfBirth(final int yearOfBirth)
701
- {
702
- if ( sdk == null )
703
- {
704
- targetingYearOfBirthToSet = yearOfBirth;
705
- return;
706
- }
707
-
708
- sdk.getTargetingData().setYearOfBirth( yearOfBirth <= 0 ? null : yearOfBirth );
709
- }
710
-
711
- @ReactMethod
712
- public void getTargetingDataYearOfBirth(final Promise promise)
713
- {
714
- if ( sdk == null )
715
- {
716
- promise.resolve( targetingYearOfBirthToSet == null ? 0 : targetingYearOfBirthToSet );
717
- return;
718
- }
719
-
720
- Integer yearOfBirth = sdk.getTargetingData().getYearOfBirth();
721
- promise.resolve( yearOfBirth != null ? yearOfBirth : 0 );
722
- }
723
-
724
- @ReactMethod
725
- public void setTargetingDataGender(@Nullable final String gender)
726
- {
727
- if ( sdk == null )
728
- {
729
- targetingGenderToSet = gender;
730
- return;
731
- }
732
-
733
- sdk.getTargetingData().setGender( getAppLovinGender( gender ) );
734
- }
735
-
736
- @ReactMethod
737
- public void getTargetingDataGender(final Promise promise)
738
- {
739
- if ( sdk == null )
740
- {
741
- promise.resolve( targetingGenderToSet == null ? "U" : targetingGenderToSet );
742
- return;
743
- }
744
-
745
- if ( sdk.getTargetingData().getGender() == null )
746
- {
747
- promise.resolve( "U" );
748
- }
749
- else
750
- {
751
- promise.resolve( getRawAppLovinGender( sdk.getTargetingData().getGender() ) );
752
- }
753
- }
460
+ // Segment Targeting
754
461
 
755
462
  @ReactMethod
756
- public void setTargetingDataMaximumAdContentRating(final int maximumAdContentRating)
463
+ public void addSegment(final int key, final ReadableArray values, final Promise promise)
757
464
  {
758
- if ( sdk == null )
759
- {
760
- targetingMaximumAdContentRatingToSet = maximumAdContentRating;
761
- return;
762
- }
763
-
764
- sdk.getTargetingData().setMaximumAdContentRating( getAppLovinAdContentRating( maximumAdContentRating ) );
765
- }
766
-
767
- @ReactMethod
768
- public void getTargetingDataMaximumAdContentRating(final Promise promise)
769
- {
770
- if ( sdk == null )
771
- {
772
- promise.resolve( targetingMaximumAdContentRatingToSet == null ? 0 : targetingMaximumAdContentRatingToSet );
773
- return;
774
- }
775
-
776
- if ( sdk.getTargetingData().getMaximumAdContentRating() == null )
777
- {
778
- promise.resolve( 0 );
779
- }
780
- else
781
- {
782
- promise.resolve( sdk.getTargetingData().getMaximumAdContentRating().ordinal() );
783
- }
784
- }
785
-
786
- @ReactMethod
787
- public void setTargetingDataEmail(@Nullable final String email)
788
- {
789
- if ( sdk == null )
790
- {
791
- targetingEmailToSet = email;
792
- return;
793
- }
794
-
795
- sdk.getTargetingData().setEmail( email );
796
- }
797
-
798
- @ReactMethod
799
- public void getTargetingDataEmail(final Promise promise)
800
- {
801
- if ( sdk == null )
802
- {
803
- promise.resolve( targetingEmailToSet );
804
- return;
805
- }
806
-
807
- promise.resolve( sdk.getTargetingData().getEmail() );
808
- }
809
-
810
- @ReactMethod
811
- public void setTargetingDataPhoneNumber(@Nullable final String phoneNumber)
812
- {
813
- if ( sdk == null )
814
- {
815
- targetingPhoneNumberToSet = phoneNumber;
816
- return;
817
- }
818
-
819
- sdk.getTargetingData().setPhoneNumber( phoneNumber );
820
- }
821
-
822
- @ReactMethod
823
- public void getTargetingDataPhoneNumber(final Promise promise)
824
- {
825
- if ( sdk == null )
826
- {
827
- promise.resolve( targetingPhoneNumberToSet );
828
- return;
829
- }
830
-
831
- promise.resolve( sdk.getTargetingData().getPhoneNumber() );
832
- }
833
-
834
- @ReactMethod
835
- public void setTargetingDataKeywords(@Nullable final ReadableArray rawKeywords)
836
- {
837
- if ( sdk == null )
465
+ if ( isPluginInitialized )
838
466
  {
839
- targetingKeywordsToSet = Arguments.toList( rawKeywords );
467
+ promise.reject( new IllegalStateException( "A segment must be added before calling 'AppLovinMAX.initialize(...);'" ) );
840
468
  return;
841
469
  }
842
470
 
843
- sdk.getTargetingData().setKeywords( Arguments.toList( rawKeywords ) );
844
- }
471
+ List<Integer> integerArray = new ArrayList<>( values.size() );
845
472
 
846
- @ReactMethod
847
- public void getTargetingDataKeywords(final Promise promise)
848
- {
849
- if ( sdk == null )
473
+ for ( Object object : values.toArrayList() )
850
474
  {
851
- if ( targetingKeywordsToSet == null || targetingKeywordsToSet.isEmpty() )
475
+ if ( object instanceof Number )
852
476
  {
853
- promise.resolve( null );
477
+ integerArray.add( ( (Number) object ).intValue() );
854
478
  }
855
479
  else
856
480
  {
857
- promise.resolve( Arguments.fromList( targetingKeywordsToSet ) );
481
+ break;
858
482
  }
859
- return;
860
483
  }
861
484
 
862
- List<String> keywords = sdk.getTargetingData().getKeywords();
863
-
864
- if ( keywords == null || keywords.isEmpty() )
485
+ if ( values.size() != integerArray.size() )
865
486
  {
866
- promise.resolve( null );
867
- }
868
- else
869
- {
870
- promise.resolve( Arguments.makeNativeArray( keywords ) );
871
- }
872
- }
873
-
874
- @ReactMethod
875
- public void setTargetingDataInterests(@Nullable final ReadableArray rawInterests)
876
- {
877
- if ( sdk == null )
878
- {
879
- targetingKeywordsToSet = Arguments.toList( rawInterests );
487
+ promise.reject( new IllegalStateException( "Value for key " + key + " is not an array of integers." ) );
880
488
  return;
881
489
  }
882
490
 
883
- sdk.getTargetingData().setInterests( Arguments.toList( rawInterests ) );
491
+ segmentCollectionBuilder.addSegment( new MaxSegment( key, integerArray ) );
492
+
493
+ promise.resolve( null );
884
494
  }
885
495
 
886
496
  @ReactMethod
887
- public void getTargetingDataInterests(final Promise promise)
497
+ public void getSegments(final Promise promise)
888
498
  {
889
- if ( sdk == null )
499
+ if ( !isSdkInitialized )
890
500
  {
891
- if ( targetingInterestsToSet == null || targetingInterestsToSet.isEmpty() )
892
- {
893
- promise.resolve( null );
894
- }
895
- else
896
- {
897
- promise.resolve( Arguments.fromList( targetingInterestsToSet ) );
898
- }
501
+ promise.reject( new IllegalStateException( "Segments cannot be retrieved before calling 'AppLovinMAX.initialize(...).'" ) );
899
502
  return;
900
503
  }
901
504
 
902
- List<String> interests = sdk.getTargetingData().getInterests();
505
+ List<MaxSegment> segments = sdk.getSegmentCollection().getSegments();
903
506
 
904
- if ( interests == null || interests.isEmpty() )
507
+ if ( segments.isEmpty() )
905
508
  {
906
509
  promise.resolve( null );
907
- }
908
- else
909
- {
910
- promise.resolve( Arguments.makeNativeArray( interests ) );
911
- }
912
- }
913
-
914
- @ReactMethod
915
- public void clearAllTargetingData()
916
- {
917
- if ( sdk == null )
918
- {
919
- targetingYearOfBirthToSet = null;
920
- targetingGenderToSet = null;
921
- targetingMaximumAdContentRatingToSet = null;
922
- targetingEmailToSet = null;
923
- targetingPhoneNumberToSet = null;
924
- targetingKeywordsToSet = null;
925
- targetingInterestsToSet = null;
926
510
  return;
927
511
  }
928
512
 
929
- sdk.getTargetingData().clearAll();
930
- }
513
+ Bundle bundle = new Bundle();
931
514
 
932
- @ReactMethod
933
- public void setLocationCollectionEnabled(final boolean enabled)
934
- {
935
- if ( isPluginInitialized )
515
+ for ( MaxSegment segment : segments )
936
516
  {
937
- sdk.getSettings().setLocationCollectionEnabled( enabled );
938
- locationCollectionEnabledToSet = null;
939
- }
940
- else
941
- {
942
- locationCollectionEnabledToSet = enabled;
517
+ // JavaScript can't have integer as a key.
518
+ bundle.putIntegerArrayList( String.valueOf( segment.getKey() ), (ArrayList<Integer>) segment.getValues() );
943
519
  }
520
+
521
+ promise.resolve( Arguments.fromBundle( bundle ) );
944
522
  }
945
523
 
946
524
  // EVENT TRACKING
@@ -1282,7 +860,7 @@ public class AppLovinMAXModule
1282
860
  MaxInterstitialAd interstitial = retrieveInterstitial( adUnitId, "loadInterstitial" );
1283
861
  if ( interstitial == null )
1284
862
  {
1285
- sendReactNativeEventForAdLoadFailed( ON_INTERSTITIAL_LOAD_FAILED_EVENT, adUnitId, null );
863
+ sendReactNativeEventForAdLoadFailed( AppLovinMAXAdEvents.ON_INTERSTITIAL_LOAD_FAILED_EVENT, adUnitId, null );
1286
864
  return;
1287
865
  }
1288
866
 
@@ -1321,7 +899,7 @@ public class AppLovinMAXModule
1321
899
  MaxInterstitialAd interstitial = retrieveInterstitial( adUnitId, "showInterstitial" );
1322
900
  if ( interstitial == null )
1323
901
  {
1324
- sendReactNativeEvent( ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT, getAdUnitInfo( adUnitId ) );
902
+ sendReactNativeEvent( AppLovinMAXAdEvents.ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT, getAdUnitInfo( adUnitId ) );
1325
903
  return;
1326
904
  }
1327
905
 
@@ -1373,7 +951,7 @@ public class AppLovinMAXModule
1373
951
  MaxRewardedAd rewardedAd = retrieveRewardedAd( adUnitId, "loadRewardedAd" );
1374
952
  if ( rewardedAd == null )
1375
953
  {
1376
- sendReactNativeEventForAdLoadFailed( ON_REWARDED_AD_LOAD_FAILED_EVENT, adUnitId, null );
954
+ sendReactNativeEventForAdLoadFailed( AppLovinMAXAdEvents.ON_REWARDED_AD_LOAD_FAILED_EVENT, adUnitId, null );
1377
955
  return;
1378
956
  }
1379
957
 
@@ -1412,7 +990,7 @@ public class AppLovinMAXModule
1412
990
  MaxRewardedAd rewardedAd = retrieveRewardedAd( adUnitId, "showRewardedAd" );
1413
991
  if ( rewardedAd == null )
1414
992
  {
1415
- sendReactNativeEvent( ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT, getAdUnitInfo( adUnitId ) );
993
+ sendReactNativeEvent( AppLovinMAXAdEvents.ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT, getAdUnitInfo( adUnitId ) );
1416
994
  return;
1417
995
  }
1418
996
 
@@ -1538,7 +1116,14 @@ public class AppLovinMAXModule
1538
1116
  final Map<String, Object> extraParameters = ( extraParameterMap != null ) ? extraParameterMap.toHashMap() : null;
1539
1117
  final Map<String, Object> localExtraParameters = ( localExtraParameterMap != null ) ? localExtraParameterMap.toHashMap() : null;
1540
1118
 
1541
- getReactApplicationContext().runOnUiQueueThread( () -> AppLovinMAXAdView.preloadNativeUIComponentAdView( adUnitId, finalAdFormat, placement, customData, extraParameters, localExtraParameters, promise, getReactApplicationContext() ) );
1119
+ getReactApplicationContext().runOnUiQueueThread( () -> AppLovinMAXAdView.preloadNativeUIComponentAdView( adUnitId,
1120
+ finalAdFormat,
1121
+ placement,
1122
+ customData,
1123
+ extraParameters,
1124
+ localExtraParameters,
1125
+ promise,
1126
+ getReactApplicationContext() ) );
1542
1127
  }
1543
1128
 
1544
1129
  @ReactMethod
@@ -1556,7 +1141,7 @@ public class AppLovinMAXModule
1556
1141
  MaxAdFormat adFormat = ad.getFormat();
1557
1142
  if ( adFormat.isAdViewAd() )
1558
1143
  {
1559
- name = ( MaxAdFormat.MREC == adFormat ) ? ON_MREC_AD_LOADED_EVENT : ON_BANNER_AD_LOADED_EVENT;
1144
+ name = ( MaxAdFormat.MREC == adFormat ) ? AppLovinMAXAdEvents.ON_MREC_AD_LOADED_EVENT : AppLovinMAXAdEvents.ON_BANNER_AD_LOADED_EVENT;
1560
1145
 
1561
1146
  String adViewPosition = adViewPositions.get( ad.getAdUnitId() );
1562
1147
  if ( AppLovinSdkUtils.isValidString( adViewPosition ) )
@@ -1575,15 +1160,15 @@ public class AppLovinMAXModule
1575
1160
  }
1576
1161
  else if ( MaxAdFormat.INTERSTITIAL == adFormat )
1577
1162
  {
1578
- name = ON_INTERSTITIAL_LOADED_EVENT;
1163
+ name = AppLovinMAXAdEvents.ON_INTERSTITIAL_LOADED_EVENT;
1579
1164
  }
1580
1165
  else if ( MaxAdFormat.REWARDED == adFormat )
1581
1166
  {
1582
- name = ON_REWARDED_AD_LOADED_EVENT;
1167
+ name = AppLovinMAXAdEvents.ON_REWARDED_AD_LOADED_EVENT;
1583
1168
  }
1584
1169
  else if ( MaxAdFormat.APP_OPEN == adFormat )
1585
1170
  {
1586
- name = ON_APPOPEN_AD_LOADED_EVENT;
1171
+ name = AppLovinMAXAdEvents.ON_APPOPEN_AD_LOADED_EVENT;
1587
1172
  }
1588
1173
  else
1589
1174
  {
@@ -1606,19 +1191,19 @@ public class AppLovinMAXModule
1606
1191
  String name;
1607
1192
  if ( adViews.containsKey( adUnitId ) )
1608
1193
  {
1609
- name = ( MaxAdFormat.MREC == adViewAdFormats.get( adUnitId ) ) ? ON_MREC_AD_LOAD_FAILED_EVENT : ON_BANNER_AD_LOAD_FAILED_EVENT;
1194
+ name = ( MaxAdFormat.MREC == adViewAdFormats.get( adUnitId ) ) ? AppLovinMAXAdEvents.ON_MREC_AD_LOAD_FAILED_EVENT : AppLovinMAXAdEvents.ON_BANNER_AD_LOAD_FAILED_EVENT;
1610
1195
  }
1611
1196
  else if ( interstitials.containsKey( adUnitId ) )
1612
1197
  {
1613
- name = ON_INTERSTITIAL_LOAD_FAILED_EVENT;
1198
+ name = AppLovinMAXAdEvents.ON_INTERSTITIAL_LOAD_FAILED_EVENT;
1614
1199
  }
1615
1200
  else if ( rewardedAds.containsKey( adUnitId ) )
1616
1201
  {
1617
- name = ON_REWARDED_AD_LOAD_FAILED_EVENT;
1202
+ name = AppLovinMAXAdEvents.ON_REWARDED_AD_LOAD_FAILED_EVENT;
1618
1203
  }
1619
1204
  else if ( appOpenAds.containsKey( adUnitId ) )
1620
1205
  {
1621
- name = ON_APPOPEN_AD_LOAD_FAILED_EVENT;
1206
+ name = AppLovinMAXAdEvents.ON_APPOPEN_AD_LOAD_FAILED_EVENT;
1622
1207
  }
1623
1208
  else
1624
1209
  {
@@ -1641,23 +1226,23 @@ public class AppLovinMAXModule
1641
1226
  final String name;
1642
1227
  if ( MaxAdFormat.BANNER == adFormat || MaxAdFormat.LEADER == adFormat )
1643
1228
  {
1644
- name = ON_BANNER_AD_CLICKED_EVENT;
1229
+ name = AppLovinMAXAdEvents.ON_BANNER_AD_CLICKED_EVENT;
1645
1230
  }
1646
1231
  else if ( MaxAdFormat.MREC == adFormat )
1647
1232
  {
1648
- name = ON_MREC_AD_CLICKED_EVENT;
1233
+ name = AppLovinMAXAdEvents.ON_MREC_AD_CLICKED_EVENT;
1649
1234
  }
1650
1235
  else if ( MaxAdFormat.INTERSTITIAL == adFormat )
1651
1236
  {
1652
- name = ON_INTERSTITIAL_CLICKED_EVENT;
1237
+ name = AppLovinMAXAdEvents.ON_INTERSTITIAL_CLICKED_EVENT;
1653
1238
  }
1654
1239
  else if ( MaxAdFormat.REWARDED == adFormat )
1655
1240
  {
1656
- name = ON_REWARDED_AD_CLICKED_EVENT;
1241
+ name = AppLovinMAXAdEvents.ON_REWARDED_AD_CLICKED_EVENT;
1657
1242
  }
1658
1243
  else if ( MaxAdFormat.APP_OPEN == adFormat )
1659
1244
  {
1660
- name = ON_APPOPEN_AD_CLICKED_EVENT;
1245
+ name = AppLovinMAXAdEvents.ON_APPOPEN_AD_CLICKED_EVENT;
1661
1246
  }
1662
1247
  else
1663
1248
  {
@@ -1678,15 +1263,15 @@ public class AppLovinMAXModule
1678
1263
  final String name;
1679
1264
  if ( MaxAdFormat.INTERSTITIAL == adFormat )
1680
1265
  {
1681
- name = ON_INTERSTITIAL_DISPLAYED_EVENT;
1266
+ name = AppLovinMAXAdEvents.ON_INTERSTITIAL_DISPLAYED_EVENT;
1682
1267
  }
1683
1268
  else if ( MaxAdFormat.REWARDED == adFormat )
1684
1269
  {
1685
- name = ON_REWARDED_AD_DISPLAYED_EVENT;
1270
+ name = AppLovinMAXAdEvents.ON_REWARDED_AD_DISPLAYED_EVENT;
1686
1271
  }
1687
1272
  else // APP OPEN
1688
1273
  {
1689
- name = ON_APPOPEN_AD_DISPLAYED_EVENT;
1274
+ name = AppLovinMAXAdEvents.ON_APPOPEN_AD_DISPLAYED_EVENT;
1690
1275
  }
1691
1276
 
1692
1277
  sendReactNativeEvent( name, getAdInfo( ad ) );
@@ -1702,15 +1287,15 @@ public class AppLovinMAXModule
1702
1287
  final String name;
1703
1288
  if ( MaxAdFormat.INTERSTITIAL == adFormat )
1704
1289
  {
1705
- name = ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT;
1290
+ name = AppLovinMAXAdEvents.ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT;
1706
1291
  }
1707
1292
  else if ( MaxAdFormat.REWARDED == adFormat )
1708
1293
  {
1709
- name = ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT;
1294
+ name = AppLovinMAXAdEvents.ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT;
1710
1295
  }
1711
1296
  else // APP OPEN
1712
1297
  {
1713
- name = ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT;
1298
+ name = AppLovinMAXAdEvents.ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT;
1714
1299
  }
1715
1300
 
1716
1301
  sendReactNativeEvent( name, getAdDisplayFailedInfo( ad, error ) );
@@ -1726,15 +1311,15 @@ public class AppLovinMAXModule
1726
1311
  String name;
1727
1312
  if ( MaxAdFormat.INTERSTITIAL == adFormat )
1728
1313
  {
1729
- name = ON_INTERSTITIAL_HIDDEN_EVENT;
1314
+ name = AppLovinMAXAdEvents.ON_INTERSTITIAL_HIDDEN_EVENT;
1730
1315
  }
1731
1316
  else if ( MaxAdFormat.REWARDED == adFormat )
1732
1317
  {
1733
- name = ON_REWARDED_AD_HIDDEN_EVENT;
1318
+ name = AppLovinMAXAdEvents.ON_REWARDED_AD_HIDDEN_EVENT;
1734
1319
  }
1735
1320
  else // APP OPEN
1736
1321
  {
1737
- name = ON_APPOPEN_AD_HIDDEN_EVENT;
1322
+ name = AppLovinMAXAdEvents.ON_APPOPEN_AD_HIDDEN_EVENT;
1738
1323
  }
1739
1324
 
1740
1325
  sendReactNativeEvent( name, getAdInfo( ad ) );
@@ -1750,7 +1335,7 @@ public class AppLovinMAXModule
1750
1335
  return;
1751
1336
  }
1752
1337
 
1753
- sendReactNativeEvent( ( MaxAdFormat.MREC == adFormat ) ? ON_MREC_AD_EXPANDED_EVENT : ON_BANNER_AD_EXPANDED_EVENT, getAdInfo( ad ) );
1338
+ sendReactNativeEvent( ( MaxAdFormat.MREC == adFormat ) ? AppLovinMAXAdEvents.ON_MREC_AD_EXPANDED_EVENT : AppLovinMAXAdEvents.ON_BANNER_AD_EXPANDED_EVENT, getAdInfo( ad ) );
1754
1339
  }
1755
1340
 
1756
1341
  @Override
@@ -1763,7 +1348,7 @@ public class AppLovinMAXModule
1763
1348
  return;
1764
1349
  }
1765
1350
 
1766
- sendReactNativeEvent( ( MaxAdFormat.MREC == adFormat ) ? ON_MREC_AD_COLLAPSED_EVENT : ON_BANNER_AD_COLLAPSED_EVENT, getAdInfo( ad ) );
1351
+ sendReactNativeEvent( ( MaxAdFormat.MREC == adFormat ) ? AppLovinMAXAdEvents.ON_MREC_AD_COLLAPSED_EVENT : AppLovinMAXAdEvents.ON_BANNER_AD_COLLAPSED_EVENT, getAdInfo( ad ) );
1767
1352
  }
1768
1353
 
1769
1354
  @Override
@@ -1773,23 +1358,23 @@ public class AppLovinMAXModule
1773
1358
  final String name;
1774
1359
  if ( MaxAdFormat.BANNER == adFormat || MaxAdFormat.LEADER == adFormat )
1775
1360
  {
1776
- name = ON_BANNER_AD_REVENUE_PAID;
1361
+ name = AppLovinMAXAdEvents.ON_BANNER_AD_REVENUE_PAID;
1777
1362
  }
1778
1363
  else if ( MaxAdFormat.MREC == adFormat )
1779
1364
  {
1780
- name = ON_MREC_AD_REVENUE_PAID;
1365
+ name = AppLovinMAXAdEvents.ON_MREC_AD_REVENUE_PAID;
1781
1366
  }
1782
1367
  else if ( MaxAdFormat.INTERSTITIAL == adFormat )
1783
1368
  {
1784
- name = ON_INTERSTITIAL_AD_REVENUE_PAID;
1369
+ name = AppLovinMAXAdEvents.ON_INTERSTITIAL_AD_REVENUE_PAID;
1785
1370
  }
1786
1371
  else if ( MaxAdFormat.REWARDED == adFormat )
1787
1372
  {
1788
- name = ON_REWARDED_AD_REVENUE_PAID;
1373
+ name = AppLovinMAXAdEvents.ON_REWARDED_AD_REVENUE_PAID;
1789
1374
  }
1790
1375
  else if ( MaxAdFormat.APP_OPEN == adFormat )
1791
1376
  {
1792
- name = ON_APPOPEN_AD_REVENUE_PAID;
1377
+ name = AppLovinMAXAdEvents.ON_APPOPEN_AD_REVENUE_PAID;
1793
1378
  }
1794
1379
  else
1795
1380
  {
@@ -1828,7 +1413,7 @@ public class AppLovinMAXModule
1828
1413
  WritableMap params = getAdInfo( ad );
1829
1414
  params.putString( "rewardLabel", rewardLabel );
1830
1415
  params.putInt( "rewardAmount", rewardAmount );
1831
- sendReactNativeEvent( "OnRewardedAdReceivedRewardEvent", params );
1416
+ sendReactNativeEvent( AppLovinMAXAdEvents.ON_REWARDED_AD_RECEIVED_REWARD_EVENT, params );
1832
1417
  }
1833
1418
 
1834
1419
  // INTERNAL METHODS
@@ -2374,18 +1959,6 @@ public class AppLovinMAXModule
2374
1959
  relativeLayout.setPadding( adViewOffset.x, adViewOffset.y, adViewOffset.x, adViewOffset.y );
2375
1960
  }
2376
1961
 
2377
- private void setPendingExtraParametersIfNeeded(final AppLovinSdkSettings settings)
2378
- {
2379
- if ( extraParametersToSet.isEmpty() ) return;
2380
-
2381
- for ( final String key : extraParametersToSet.keySet() )
2382
- {
2383
- settings.setExtraParameter( key, extraParametersToSet.get( key ) );
2384
- }
2385
-
2386
- extraParametersToSet.clear();
2387
- }
2388
-
2389
1962
  // Utility Methods
2390
1963
 
2391
1964
  private void logInvalidAdFormat(MaxAdFormat adFormat)
@@ -2449,63 +2022,6 @@ public class AppLovinMAXModule
2449
2022
  return new Point( AppLovinSdkUtils.dpToPx( context, (int) xDp ), AppLovinSdkUtils.dpToPx( context, (int) yDp ) );
2450
2023
  }
2451
2024
 
2452
- private static Gender getAppLovinGender(@Nullable final String gender)
2453
- {
2454
- if ( gender != null )
2455
- {
2456
- if ( "F".equalsIgnoreCase( gender ) )
2457
- {
2458
- return Gender.FEMALE;
2459
- }
2460
- else if ( "M".equalsIgnoreCase( gender ) )
2461
- {
2462
- return Gender.MALE;
2463
- }
2464
- else if ( "O".equalsIgnoreCase( gender ) )
2465
- {
2466
- return Gender.OTHER;
2467
- }
2468
- }
2469
-
2470
- return Gender.UNKNOWN;
2471
- }
2472
-
2473
- private static String getRawAppLovinGender(final Gender gender)
2474
- {
2475
- if ( gender == Gender.FEMALE )
2476
- {
2477
- return "F";
2478
- }
2479
- else if ( gender == Gender.MALE )
2480
- {
2481
- return "M";
2482
- }
2483
- else if ( gender == Gender.OTHER )
2484
- {
2485
- return "O";
2486
- }
2487
-
2488
- return "U";
2489
- }
2490
-
2491
- private static AdContentRating getAppLovinAdContentRating(final int maximumAdContentRating)
2492
- {
2493
- if ( maximumAdContentRating == 1 )
2494
- {
2495
- return AdContentRating.ALL_AUDIENCES;
2496
- }
2497
- else if ( maximumAdContentRating == 2 )
2498
- {
2499
- return AdContentRating.EVERYONE_OVER_TWELVE;
2500
- }
2501
- else if ( maximumAdContentRating == 3 )
2502
- {
2503
- return AdContentRating.MATURE_AUDIENCES;
2504
- }
2505
-
2506
- return AdContentRating.NONE;
2507
- }
2508
-
2509
2025
  private static ConsentFlowUserGeography getAppLovinConsentFlowUserGeography(final String userGeography)
2510
2026
  {
2511
2027
  if ( USER_GEOGRAPHY_GDPR.equalsIgnoreCase( userGeography ) )
@@ -2818,47 +2334,47 @@ public class AppLovinMAXModule
2818
2334
  {
2819
2335
  final Map<String, Object> constants = new HashMap<>();
2820
2336
 
2821
- constants.put( "ON_MREC_AD_LOADED_EVENT", ON_MREC_AD_LOADED_EVENT );
2822
- constants.put( "ON_MREC_AD_LOAD_FAILED_EVENT", ON_MREC_AD_LOAD_FAILED_EVENT );
2823
- constants.put( "ON_MREC_AD_CLICKED_EVENT", ON_MREC_AD_CLICKED_EVENT );
2824
- constants.put( "ON_MREC_AD_COLLAPSED_EVENT", ON_MREC_AD_COLLAPSED_EVENT );
2825
- constants.put( "ON_MREC_AD_EXPANDED_EVENT", ON_MREC_AD_EXPANDED_EVENT );
2826
- constants.put( "ON_MREC_AD_REVENUE_PAID", ON_MREC_AD_REVENUE_PAID );
2827
-
2828
- constants.put( "ON_BANNER_AD_LOADED_EVENT", ON_BANNER_AD_LOADED_EVENT );
2829
- constants.put( "ON_BANNER_AD_LOAD_FAILED_EVENT", ON_BANNER_AD_LOAD_FAILED_EVENT );
2830
- constants.put( "ON_BANNER_AD_CLICKED_EVENT", ON_BANNER_AD_CLICKED_EVENT );
2831
- constants.put( "ON_BANNER_AD_COLLAPSED_EVENT", ON_BANNER_AD_COLLAPSED_EVENT );
2832
- constants.put( "ON_BANNER_AD_EXPANDED_EVENT", ON_BANNER_AD_EXPANDED_EVENT );
2833
- constants.put( "ON_BANNER_AD_REVENUE_PAID", ON_BANNER_AD_REVENUE_PAID );
2834
-
2835
- constants.put( "ON_INTERSTITIAL_LOADED_EVENT", ON_INTERSTITIAL_LOADED_EVENT );
2836
- constants.put( "ON_INTERSTITIAL_LOAD_FAILED_EVENT", ON_INTERSTITIAL_LOAD_FAILED_EVENT );
2837
- constants.put( "ON_INTERSTITIAL_CLICKED_EVENT", ON_INTERSTITIAL_CLICKED_EVENT );
2838
- constants.put( "ON_INTERSTITIAL_DISPLAYED_EVENT", ON_INTERSTITIAL_DISPLAYED_EVENT );
2839
- constants.put( "ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT", ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT );
2840
- constants.put( "ON_INTERSTITIAL_HIDDEN_EVENT", ON_INTERSTITIAL_HIDDEN_EVENT );
2841
- constants.put( "ON_INTERSTITIAL_AD_REVENUE_PAID", ON_INTERSTITIAL_AD_REVENUE_PAID );
2842
-
2843
- constants.put( "ON_REWARDED_AD_LOADED_EVENT", ON_REWARDED_AD_LOADED_EVENT );
2844
- constants.put( "ON_REWARDED_AD_LOAD_FAILED_EVENT", ON_REWARDED_AD_LOAD_FAILED_EVENT );
2845
- constants.put( "ON_REWARDED_AD_CLICKED_EVENT", ON_REWARDED_AD_CLICKED_EVENT );
2846
- constants.put( "ON_REWARDED_AD_DISPLAYED_EVENT", ON_REWARDED_AD_DISPLAYED_EVENT );
2847
- constants.put( "ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT", ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT );
2848
- constants.put( "ON_REWARDED_AD_HIDDEN_EVENT", ON_REWARDED_AD_HIDDEN_EVENT );
2849
- constants.put( "ON_REWARDED_AD_RECEIVED_REWARD_EVENT", ON_REWARDED_AD_RECEIVED_REWARD_EVENT );
2850
- constants.put( "ON_REWARDED_AD_REVENUE_PAID", ON_REWARDED_AD_REVENUE_PAID );
2851
-
2852
- constants.put( "ON_APPOPEN_AD_LOADED_EVENT", ON_APPOPEN_AD_LOADED_EVENT );
2853
- constants.put( "ON_APPOPEN_AD_LOAD_FAILED_EVENT", ON_APPOPEN_AD_LOAD_FAILED_EVENT );
2854
- constants.put( "ON_APPOPEN_AD_CLICKED_EVENT", ON_APPOPEN_AD_CLICKED_EVENT );
2855
- constants.put( "ON_APPOPEN_AD_DISPLAYED_EVENT", ON_APPOPEN_AD_DISPLAYED_EVENT );
2856
- constants.put( "ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT", ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT );
2857
- constants.put( "ON_APPOPEN_AD_HIDDEN_EVENT", ON_APPOPEN_AD_HIDDEN_EVENT );
2858
- constants.put( "ON_APPOPEN_AD_REVENUE_PAID", ON_APPOPEN_AD_REVENUE_PAID );
2859
-
2860
- constants.put( "ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOADED_EVENT", ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOADED_EVENT );
2861
- constants.put( "ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOAD_FAILED_EVENT", ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOAD_FAILED_EVENT );
2337
+ constants.put( "ON_MREC_AD_LOADED_EVENT", AppLovinMAXAdEvents.ON_MREC_AD_LOADED_EVENT );
2338
+ constants.put( "ON_MREC_AD_LOAD_FAILED_EVENT", AppLovinMAXAdEvents.ON_MREC_AD_LOAD_FAILED_EVENT );
2339
+ constants.put( "ON_MREC_AD_CLICKED_EVENT", AppLovinMAXAdEvents.ON_MREC_AD_CLICKED_EVENT );
2340
+ constants.put( "ON_MREC_AD_COLLAPSED_EVENT", AppLovinMAXAdEvents.ON_MREC_AD_COLLAPSED_EVENT );
2341
+ constants.put( "ON_MREC_AD_EXPANDED_EVENT", AppLovinMAXAdEvents.ON_MREC_AD_EXPANDED_EVENT );
2342
+ constants.put( "ON_MREC_AD_REVENUE_PAID", AppLovinMAXAdEvents.ON_MREC_AD_REVENUE_PAID );
2343
+
2344
+ constants.put( "ON_BANNER_AD_LOADED_EVENT", AppLovinMAXAdEvents.ON_BANNER_AD_LOADED_EVENT );
2345
+ constants.put( "ON_BANNER_AD_LOAD_FAILED_EVENT", AppLovinMAXAdEvents.ON_BANNER_AD_LOAD_FAILED_EVENT );
2346
+ constants.put( "ON_BANNER_AD_CLICKED_EVENT", AppLovinMAXAdEvents.ON_BANNER_AD_CLICKED_EVENT );
2347
+ constants.put( "ON_BANNER_AD_COLLAPSED_EVENT", AppLovinMAXAdEvents.ON_BANNER_AD_COLLAPSED_EVENT );
2348
+ constants.put( "ON_BANNER_AD_EXPANDED_EVENT", AppLovinMAXAdEvents.ON_BANNER_AD_EXPANDED_EVENT );
2349
+ constants.put( "ON_BANNER_AD_REVENUE_PAID", AppLovinMAXAdEvents.ON_BANNER_AD_REVENUE_PAID );
2350
+
2351
+ constants.put( "ON_INTERSTITIAL_LOADED_EVENT", AppLovinMAXAdEvents.ON_INTERSTITIAL_LOADED_EVENT );
2352
+ constants.put( "ON_INTERSTITIAL_LOAD_FAILED_EVENT", AppLovinMAXAdEvents.ON_INTERSTITIAL_LOAD_FAILED_EVENT );
2353
+ constants.put( "ON_INTERSTITIAL_CLICKED_EVENT", AppLovinMAXAdEvents.ON_INTERSTITIAL_CLICKED_EVENT );
2354
+ constants.put( "ON_INTERSTITIAL_DISPLAYED_EVENT", AppLovinMAXAdEvents.ON_INTERSTITIAL_DISPLAYED_EVENT );
2355
+ constants.put( "ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT", AppLovinMAXAdEvents.ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT );
2356
+ constants.put( "ON_INTERSTITIAL_HIDDEN_EVENT", AppLovinMAXAdEvents.ON_INTERSTITIAL_HIDDEN_EVENT );
2357
+ constants.put( "ON_INTERSTITIAL_AD_REVENUE_PAID", AppLovinMAXAdEvents.ON_INTERSTITIAL_AD_REVENUE_PAID );
2358
+
2359
+ constants.put( "ON_REWARDED_AD_LOADED_EVENT", AppLovinMAXAdEvents.ON_REWARDED_AD_LOADED_EVENT );
2360
+ constants.put( "ON_REWARDED_AD_LOAD_FAILED_EVENT", AppLovinMAXAdEvents.ON_REWARDED_AD_LOAD_FAILED_EVENT );
2361
+ constants.put( "ON_REWARDED_AD_CLICKED_EVENT", AppLovinMAXAdEvents.ON_REWARDED_AD_CLICKED_EVENT );
2362
+ constants.put( "ON_REWARDED_AD_DISPLAYED_EVENT", AppLovinMAXAdEvents.ON_REWARDED_AD_DISPLAYED_EVENT );
2363
+ constants.put( "ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT", AppLovinMAXAdEvents.ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT );
2364
+ constants.put( "ON_REWARDED_AD_HIDDEN_EVENT", AppLovinMAXAdEvents.ON_REWARDED_AD_HIDDEN_EVENT );
2365
+ constants.put( "ON_REWARDED_AD_RECEIVED_REWARD_EVENT", AppLovinMAXAdEvents.ON_REWARDED_AD_RECEIVED_REWARD_EVENT );
2366
+ constants.put( "ON_REWARDED_AD_REVENUE_PAID", AppLovinMAXAdEvents.ON_REWARDED_AD_REVENUE_PAID );
2367
+
2368
+ constants.put( "ON_APPOPEN_AD_LOADED_EVENT", AppLovinMAXAdEvents.ON_APPOPEN_AD_LOADED_EVENT );
2369
+ constants.put( "ON_APPOPEN_AD_LOAD_FAILED_EVENT", AppLovinMAXAdEvents.ON_APPOPEN_AD_LOAD_FAILED_EVENT );
2370
+ constants.put( "ON_APPOPEN_AD_CLICKED_EVENT", AppLovinMAXAdEvents.ON_APPOPEN_AD_CLICKED_EVENT );
2371
+ constants.put( "ON_APPOPEN_AD_DISPLAYED_EVENT", AppLovinMAXAdEvents.ON_APPOPEN_AD_DISPLAYED_EVENT );
2372
+ constants.put( "ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT", AppLovinMAXAdEvents.ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT );
2373
+ constants.put( "ON_APPOPEN_AD_HIDDEN_EVENT", AppLovinMAXAdEvents.ON_APPOPEN_AD_HIDDEN_EVENT );
2374
+ constants.put( "ON_APPOPEN_AD_REVENUE_PAID", AppLovinMAXAdEvents.ON_APPOPEN_AD_REVENUE_PAID );
2375
+
2376
+ constants.put( "ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOADED_EVENT", AppLovinMAXAdEvents.ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOADED_EVENT );
2377
+ constants.put( "ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOAD_FAILED_EVENT", AppLovinMAXAdEvents.ON_NATIVE_UI_COMPONENT_ADVIEW_AD_LOAD_FAILED_EVENT );
2862
2378
 
2863
2379
  constants.put( "TOP_CENTER_POSITION", TOP_CENTER );
2864
2380
  constants.put( "TOP_LEFT_POSITION", TOP_LEFT );