react-native-applovin-max 4.1.7 → 5.0.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/ios/AppLovinMAX.m CHANGED
@@ -78,6 +78,55 @@
78
78
  static NSString *const SDK_TAG = @"AppLovinSdk";
79
79
  static NSString *const TAG = @"AppLovinMAX";
80
80
 
81
+ static NSString *const ON_BANNER_AD_LOADED_EVENT = @"OnBannerAdLoadedEvent";
82
+ static NSString *const ON_BANNER_AD_LOAD_FAILED_EVENT = @"OnBannerAdLoadFailedEvent";
83
+ static NSString *const ON_BANNER_AD_CLICKED_EVENT = @"OnBannerAdClickedEvent";
84
+ static NSString *const ON_BANNER_AD_COLLAPSED_EVENT = @"OnBannerAdCollapsedEvent";
85
+ static NSString *const ON_BANNER_AD_EXPANDED_EVENT = @"OnBannerAdExpandedEvent";
86
+ static NSString *const ON_BANNER_AD_REVENUE_PAID = @"OnBannerAdRevenuePaid";
87
+
88
+ static NSString *const ON_MREC_AD_LOADED_EVENT = @"OnMRecAdLoadedEvent";
89
+ static NSString *const ON_MREC_AD_LOAD_FAILED_EVENT = @"OnMRecAdLoadFailedEvent";
90
+ static NSString *const ON_MREC_AD_CLICKED_EVENT= @"OnMRecAdClickedEvent";
91
+ static NSString *const ON_MREC_AD_COLLAPSED_EVENT = @"OnMRecAdCollapsedEvent";
92
+ static NSString *const ON_MREC_AD_EXPANDED_EVENT = @"OnMRecAdExpandedEvent";
93
+ static NSString *const ON_MREC_AD_REVENUE_PAID = @"OnMRecAdRevenuePaid";
94
+
95
+ static NSString *const ON_INTERSTITIAL_LOADED_EVENT = @"OnInterstitialLoadedEvent";
96
+ static NSString *const ON_INTERSTITIAL_LOAD_FAILED_EVENT = @"OnInterstitialLoadFailedEvent";
97
+ static NSString *const ON_INTERSTITIAL_CLICKED_EVENT = @"OnInterstitialClickedEvent";
98
+ static NSString *const ON_INTERSTITIAL_DISPLAYED_EVENT = @"OnInterstitialDisplayedEvent";
99
+ static NSString *const ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT = @"OnInterstitialAdFailedToDisplayEvent";
100
+ static NSString *const ON_INTERSTITIAL_HIDDEN_EVENT = @"OnInterstitialHiddenEvent";
101
+ static NSString *const ON_INTERSTITIAL_AD_REVENUE_PAID = @"OnInterstitialAdRevenuePaid";
102
+
103
+ static NSString *const ON_REWARDED_AD_LOADED_EVENT = @"OnRewardedAdLoadedEvent";
104
+ static NSString *const ON_REWARDED_AD_LOAD_FAILED_EVENT = @"OnRewardedAdLoadFailedEvent";
105
+ static NSString *const ON_REWARDED_AD_CLICKED_EVENT = @"OnRewardedAdClickedEvent";
106
+ static NSString *const ON_REWARDED_AD_DISPLAYED_EVENT = @"OnRewardedAdDisplayedEvent";
107
+ static NSString *const ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT = @"OnRewardedAdFailedToDisplayEvent";
108
+ static NSString *const ON_REWARDED_AD_HIDDEN_EVENT = @"OnRewardedAdHiddenEvent";
109
+ static NSString *const ON_REWARDED_AD_RECEIVED_REWARD_EVENT = @"OnRewardedAdReceivedRewardEvent";
110
+ static NSString *const ON_REWARDED_AD_REVENUE_PAID = @"OnRewardedAdRevenuePaid";
111
+
112
+ static NSString *const ON_APPOPEN_AD_LOADED_EVENT = @"OnAppOpenAdLoadedEvent";
113
+ static NSString *const ON_APPOPEN_AD_LOAD_FAILED_EVENT = @"OnAppOpenAdLoadFailedEvent";
114
+ static NSString *const ON_APPOPEN_AD_CLICKED_EVENT = @"OnAppOpenAdClickedEvent";
115
+ static NSString *const ON_APPOPEN_AD_DISPLAYED_EVENT = @"OnAppOpenAdDisplayedEvent";
116
+ static NSString *const ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT = @"OnAppOpenAdFailedToDisplayEvent";
117
+ static NSString *const ON_APPOPEN_AD_HIDDEN_EVENT = @"OnAppOpenAdHiddenEvent";
118
+ static NSString *const ON_APPOPEN_AD_REVENUE_PAID = @"OnAppOpenAdRevenuePaid";
119
+
120
+ static NSString *const TOP_CENTER = @"top_center";
121
+ static NSString *const TOP_LEFT = @"top_left";
122
+ static NSString *const TOP_RIGHT = @"top_right";
123
+ static NSString *const CENTERED = @"centered";
124
+ static NSString *const CENTER_LEFT = @"center_left";
125
+ static NSString *const CENTER_RIGHT = @"center_right";
126
+ static NSString *const BOTTOM_LEFT = @"bottom_left";
127
+ static NSString *const BOTTOM_CENTER = @"bottom_center";
128
+ static NSString *const BOTTOM_RIGHT = @"bottom_right";
129
+
81
130
  static AppLovinMAX *AppLovinMAXShared; // Shared instance of this bridge module.
82
131
 
83
132
  // To export a module named AppLovinMAX ("RCT" automatically removed)
@@ -130,12 +179,12 @@ RCT_EXPORT_MODULE()
130
179
  return self;
131
180
  }
132
181
 
133
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isInitialized)
182
+ RCT_EXPORT_METHOD(isInitialized:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
134
183
  {
135
- return @([self isPluginInitialized] && [self isSDKInitialized]);
184
+ resolve(@([self isPluginInitialized] && [self isSDKInitialized]));
136
185
  }
137
186
 
138
- RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(RCTResponseSenderBlock)callback)
187
+ RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
139
188
  {
140
189
  // Guard against running init logic multiple times
141
190
  if ( [self isPluginInitialized] ) return;
@@ -153,8 +202,8 @@ RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(RCT
153
202
  }
154
203
  else
155
204
  {
156
- [NSException raise: NSInternalInconsistencyException
157
- format: @"Unable to initialize AppLovin SDK - no SDK key provided and not found in Info.plist!"];
205
+ reject(RCTErrorUnspecified, @"Unable to initialize AppLovin SDK - no SDK key provided and not found in Info.plist!", nil);
206
+ return;
158
207
  }
159
208
  }
160
209
 
@@ -249,16 +298,15 @@ RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(RCT
249
298
  self.sdkConfiguration = configuration;
250
299
  self.sdkInitialized = YES;
251
300
 
252
- callback(@[@{@"consentDialogState" : @(configuration.consentDialogState),
253
- @"countryCode" : self.sdk.configuration.countryCode}]);
301
+ resolve(@{@"countryCode" : self.sdk.configuration.countryCode});
254
302
  }];
255
303
  }
256
304
 
257
305
  #pragma mark - General Public API
258
306
 
259
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isTablet)
307
+ RCT_EXPORT_METHOD(isTablet:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
260
308
  {
261
- return @([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad);
309
+ resolve(@([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad));
262
310
  }
263
311
 
264
312
  RCT_EXPORT_METHOD(showMediationDebugger)
@@ -277,9 +325,9 @@ RCT_EXPORT_METHOD(setHasUserConsent:(BOOL)hasUserConsent)
277
325
  [ALPrivacySettings setHasUserConsent: hasUserConsent];
278
326
  }
279
327
 
280
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(hasUserConsent)
328
+ RCT_EXPORT_METHOD(hasUserConsent:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
281
329
  {
282
- return @([ALPrivacySettings hasUserConsent]);
330
+ resolve(@([ALPrivacySettings hasUserConsent]));
283
331
  }
284
332
 
285
333
  RCT_EXPORT_METHOD(setIsAgeRestrictedUser:(BOOL)isAgeRestrictedUser)
@@ -287,9 +335,9 @@ RCT_EXPORT_METHOD(setIsAgeRestrictedUser:(BOOL)isAgeRestrictedUser)
287
335
  [ALPrivacySettings setIsAgeRestrictedUser: isAgeRestrictedUser];
288
336
  }
289
337
 
290
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isAgeRestrictedUser)
338
+ RCT_EXPORT_METHOD(isAgeRestrictedUser:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
291
339
  {
292
- return @([ALPrivacySettings isAgeRestrictedUser]);
340
+ resolve(@([ALPrivacySettings isAgeRestrictedUser]));
293
341
  }
294
342
 
295
343
  RCT_EXPORT_METHOD(setDoNotSell:(BOOL)doNotSell)
@@ -297,9 +345,9 @@ RCT_EXPORT_METHOD(setDoNotSell:(BOOL)doNotSell)
297
345
  [ALPrivacySettings setDoNotSell: doNotSell];
298
346
  }
299
347
 
300
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isDoNotSell)
348
+ RCT_EXPORT_METHOD(isDoNotSell:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
301
349
  {
302
- return @([ALPrivacySettings isDoNotSell]);
350
+ resolve(@([ALPrivacySettings isDoNotSell]));
303
351
  }
304
352
 
305
353
  RCT_EXPORT_METHOD(setUserId:(NSString *)userId)
@@ -322,11 +370,9 @@ RCT_EXPORT_METHOD(setMuted:(BOOL)muted)
322
370
  self.sdk.settings.muted = muted;
323
371
  }
324
372
 
325
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isMuted)
373
+ RCT_EXPORT_METHOD(isMuted:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
326
374
  {
327
- if ( ![self isPluginInitialized] ) return @(NO);
328
-
329
- return @(self.sdk.settings.muted);
375
+ resolve([self isPluginInitialized] ? @(self.sdk.settings.muted) : @(NO) );
330
376
  }
331
377
 
332
378
  RCT_EXPORT_METHOD(setVerboseLogging:(BOOL)enabled)
@@ -401,6 +447,17 @@ RCT_EXPORT_METHOD(setTargetingDataYearOfBirth:(nonnull NSNumber *)yearOfBirth)
401
447
  self.sdk.targetingData.yearOfBirth = yearOfBirth.intValue <= 0 ? nil : yearOfBirth;
402
448
  }
403
449
 
450
+ RCT_EXPORT_METHOD(getTargetingDataYearOfBirth:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
451
+ {
452
+ if ( !self.sdk )
453
+ {
454
+ resolve(self.targetingYearOfBirthToSet ? self.targetingYearOfBirthToSet : @0);
455
+ return;
456
+ }
457
+
458
+ resolve(self.sdk.targetingData.yearOfBirth ? self.sdk.targetingData.yearOfBirth : @0);
459
+ }
460
+
404
461
  RCT_EXPORT_METHOD(setTargetingDataGender:(nullable NSString *)gender)
405
462
  {
406
463
  if ( !self.sdk )
@@ -412,6 +469,17 @@ RCT_EXPORT_METHOD(setTargetingDataGender:(nullable NSString *)gender)
412
469
  self.sdk.targetingData.gender = [self toAppLovinGender: gender];
413
470
  }
414
471
 
472
+ RCT_EXPORT_METHOD(getTargetingDataGender:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
473
+ {
474
+ if ( !self.sdk )
475
+ {
476
+ resolve(self.targetingGenderToSet ? self.targetingGenderToSet : @"U");
477
+ return;
478
+ }
479
+
480
+ resolve([self fromAppLovinGender: self.sdk.targetingData.gender]);
481
+ }
482
+
415
483
  RCT_EXPORT_METHOD(setTargetingDataMaximumAdContentRating:(nonnull NSNumber *)maximumAdContentRating)
416
484
  {
417
485
  if ( !self.sdk )
@@ -423,6 +491,17 @@ RCT_EXPORT_METHOD(setTargetingDataMaximumAdContentRating:(nonnull NSNumber *)max
423
491
  self.sdk.targetingData.maximumAdContentRating = [self toAppLovinAdContentRating: maximumAdContentRating];
424
492
  }
425
493
 
494
+ RCT_EXPORT_METHOD(getTargetingDataMaximumAdContentRating:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
495
+ {
496
+ if ( !self.sdk )
497
+ {
498
+ resolve(self.targetingMaximumAdContentRatingToSet ? self.targetingMaximumAdContentRatingToSet : @0);
499
+ return;
500
+ }
501
+
502
+ resolve(@(self.sdk.targetingData.maximumAdContentRating));
503
+ }
504
+
426
505
  RCT_EXPORT_METHOD(setTargetingDataEmail:(nullable NSString *)email)
427
506
  {
428
507
  if ( !self.sdk )
@@ -434,6 +513,17 @@ RCT_EXPORT_METHOD(setTargetingDataEmail:(nullable NSString *)email)
434
513
  self.sdk.targetingData.email = email;
435
514
  }
436
515
 
516
+ RCT_EXPORT_METHOD(getTargetingDataEmail:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
517
+ {
518
+ if ( !self.sdk )
519
+ {
520
+ resolve(self.targetingEmailToSet);
521
+ return;
522
+ }
523
+
524
+ resolve(self.sdk.targetingData.email);
525
+ }
526
+
437
527
  RCT_EXPORT_METHOD(setTargetingDataPhoneNumber:(nullable NSString *)phoneNumber)
438
528
  {
439
529
  if ( !self.sdk )
@@ -445,6 +535,17 @@ RCT_EXPORT_METHOD(setTargetingDataPhoneNumber:(nullable NSString *)phoneNumber)
445
535
  self.sdk.targetingData.phoneNumber = phoneNumber;
446
536
  }
447
537
 
538
+ RCT_EXPORT_METHOD(getTargetingDataPhoneNumber:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
539
+ {
540
+ if ( !self.sdk )
541
+ {
542
+ resolve(self.targetingPhoneNumberToSet);
543
+ return;
544
+ }
545
+
546
+ resolve(self.sdk.targetingData.phoneNumber);
547
+ }
548
+
448
549
  RCT_EXPORT_METHOD(setTargetingDataKeywords:(nullable NSArray<NSString *> *)keywords)
449
550
  {
450
551
  if ( !self.sdk )
@@ -456,6 +557,17 @@ RCT_EXPORT_METHOD(setTargetingDataKeywords:(nullable NSArray<NSString *> *)keywo
456
557
  self.sdk.targetingData.keywords = keywords;
457
558
  }
458
559
 
560
+ RCT_EXPORT_METHOD(getTargetingDataKeywords:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
561
+ {
562
+ if ( !self.sdk )
563
+ {
564
+ resolve(self.targetingKeywordsToSet);
565
+ return;
566
+ }
567
+
568
+ resolve(self.sdk.targetingData.keywords);
569
+ }
570
+
459
571
  RCT_EXPORT_METHOD(setTargetingDataInterests:(nullable NSArray<NSString *> *)interests)
460
572
  {
461
573
  if ( !self.sdk )
@@ -467,6 +579,17 @@ RCT_EXPORT_METHOD(setTargetingDataInterests:(nullable NSArray<NSString *> *)inte
467
579
  self.sdk.targetingData.interests = interests;
468
580
  }
469
581
 
582
+ RCT_EXPORT_METHOD(getTargetingDataInterests:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
583
+ {
584
+ if ( !self.sdk )
585
+ {
586
+ resolve(self.targetingInterestsToSet);
587
+ return;
588
+ }
589
+
590
+ resolve(self.sdk.targetingData.interests);
591
+ }
592
+
470
593
  RCT_EXPORT_METHOD(clearAllTargetingData)
471
594
  {
472
595
  if ( !self.sdk )
@@ -508,124 +631,277 @@ RCT_EXPORT_METHOD(trackEvent:(NSString *)event :(NSDictionary<NSString *, id> *)
508
631
 
509
632
  RCT_EXPORT_METHOD(createBanner:(NSString *)adUnitIdentifier :(NSString *)bannerPosition)
510
633
  {
634
+ if ( !self.sdk )
635
+ {
636
+ [self logUninitializedAccessError: @"createBanner"];
637
+ return;
638
+ }
639
+
511
640
  [self createAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT atPosition: bannerPosition withOffset: CGPointZero];
512
641
  }
513
642
 
514
643
  // NOTE: No function overloading in JS so we need new method signature
515
644
  RCT_EXPORT_METHOD(createBannerWithOffsets:(NSString *)adUnitIdentifier :(NSString *)bannerPosition :(CGFloat)xOffset :(CGFloat)yOffset)
516
645
  {
646
+ if ( !self.sdk )
647
+ {
648
+ [self logUninitializedAccessError: @"createBannerWithOffsets"];
649
+ return;
650
+ }
651
+
517
652
  [self createAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT atPosition: bannerPosition withOffset: CGPointMake(xOffset, yOffset)];
518
653
  }
519
654
 
520
655
  RCT_EXPORT_METHOD(setBannerBackgroundColor:(NSString *)adUnitIdentifier :(NSString *)hexColorCode)
521
656
  {
657
+ if ( !self.sdk )
658
+ {
659
+ [self logUninitializedAccessError: @"setBannerBackgroundColor"];
660
+ return;
661
+ }
662
+
522
663
  [self setAdViewBackgroundColorForAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT hexColorCode: hexColorCode];
523
664
  }
524
665
 
525
666
  RCT_EXPORT_METHOD(setBannerPlacement:(NSString *)adUnitIdentifier :(nullable NSString *)placement)
526
667
  {
668
+ if ( !self.sdk )
669
+ {
670
+ [self logUninitializedAccessError: @"setBannerPlacement"];
671
+ return;
672
+ }
673
+
527
674
  [self setAdViewPlacement: placement forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
528
675
  }
529
676
 
530
677
  RCT_EXPORT_METHOD(setBannerCustomData:(NSString *)adUnitIdentifier :(nullable NSString *)customData)
531
678
  {
679
+ if ( !self.sdk )
680
+ {
681
+ [self logUninitializedAccessError: @"setBannerCustomData"];
682
+ return;
683
+ }
684
+
532
685
  [self setAdViewCustomData: customData forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
533
686
  }
534
687
 
535
688
  RCT_EXPORT_METHOD(updateBannerPosition:(NSString *)adUnitIdentifier :(NSString *)bannerPosition)
536
689
  {
690
+ if ( !self.sdk )
691
+ {
692
+ [self logUninitializedAccessError: @"updateBannerPosition"];
693
+ return;
694
+ }
695
+
537
696
  [self updateAdViewPosition: bannerPosition withOffset: CGPointZero forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
538
697
  }
539
698
 
540
699
  RCT_EXPORT_METHOD(updateBannerOffsets:(NSString *)adUnitIdentifier :(CGFloat)xOffset :(CGFloat)yOffset)
541
700
  {
701
+ if ( !self.sdk )
702
+ {
703
+ [self logUninitializedAccessError: @"updateBannerOffsets"];
704
+ return;
705
+ }
706
+
542
707
  [self updateAdViewPosition: self.adViewPositions[adUnitIdentifier] withOffset: CGPointMake(xOffset, yOffset) forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
543
708
  }
544
709
 
545
710
  RCT_EXPORT_METHOD(setBannerWidth:(NSString *)adUnitIdentifier :(CGFloat)width)
546
711
  {
712
+ if ( !self.sdk )
713
+ {
714
+ [self logUninitializedAccessError: @"setBannerWidth"];
715
+ return;
716
+ }
717
+
547
718
  [self setAdViewWidth: width forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
548
719
  }
549
720
 
550
721
  RCT_EXPORT_METHOD(setBannerExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
551
722
  {
723
+ if ( !self.sdk )
724
+ {
725
+ [self logUninitializedAccessError: @"setBannerExtraParameter"];
726
+ return;
727
+ }
728
+
552
729
  [self setAdViewExtraParameterForAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT key: key value: value];
553
730
  }
554
731
 
732
+ RCT_EXPORT_METHOD(setBannerLocalExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
733
+ {
734
+ [self setAdViewLocalExtraParameterForAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT key: key value: value];
735
+ }
736
+
555
737
  RCT_EXPORT_METHOD(startBannerAutoRefresh:(NSString *)adUnitIdentifier)
556
738
  {
739
+ if ( !self.sdk )
740
+ {
741
+ [self logUninitializedAccessError: @"startBannerAutoRefresh"];
742
+ return;
743
+ }
744
+
557
745
  [self startAutoRefresh: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
558
746
  }
559
747
 
560
748
  RCT_EXPORT_METHOD(stopBannerAutoRefresh:(NSString *)adUnitIdentifier)
561
749
  {
750
+ if ( !self.sdk )
751
+ {
752
+ [self logUninitializedAccessError: @"stopBannerAutoRefresh"];
753
+ return;
754
+ }
755
+
562
756
  [self stopAutoRefresh: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
563
757
  }
564
758
 
565
759
  RCT_EXPORT_METHOD(showBanner:(NSString *)adUnitIdentifier)
566
760
  {
761
+ if ( !self.sdk )
762
+ {
763
+ [self logUninitializedAccessError: @"showBanner"];
764
+ return;
765
+ }
766
+
567
767
  [self showAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
568
768
  }
569
769
 
570
770
  RCT_EXPORT_METHOD(hideBanner:(NSString *)adUnitIdentifier)
571
771
  {
772
+ if ( !self.sdk )
773
+ {
774
+ [self logUninitializedAccessError: @"hideBanner"];
775
+ return;
776
+ }
777
+
572
778
  [self hideAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
573
779
  }
574
780
 
575
781
  RCT_EXPORT_METHOD(destroyBanner:(NSString *)adUnitIdentifier)
576
782
  {
783
+ if ( !self.sdk )
784
+ {
785
+ [self logUninitializedAccessError: @"destroyBanner"];
786
+ return;
787
+ }
788
+
577
789
  [self destroyAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
578
790
  }
579
791
 
580
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getAdaptiveBannerHeightForWidth:(CGFloat)width)
792
+ RCT_EXPORT_METHOD(getAdaptiveBannerHeightForWidth:(CGFloat)width :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
581
793
  {
582
- return @([DEVICE_SPECIFIC_ADVIEW_AD_FORMAT adaptiveSizeForWidth: width].height);
794
+ resolve(@([DEVICE_SPECIFIC_ADVIEW_AD_FORMAT adaptiveSizeForWidth: width].height));
583
795
  }
584
796
 
585
797
  #pragma mark - MRECs
586
798
 
587
799
  RCT_EXPORT_METHOD(createMRec:(NSString *)adUnitIdentifier :(NSString *)mrecPosition)
588
800
  {
801
+ if ( !self.sdk )
802
+ {
803
+ [self logUninitializedAccessError: @"createMRec"];
804
+ return;
805
+ }
806
+
589
807
  [self createAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec atPosition: mrecPosition withOffset: CGPointZero];
590
808
  }
591
809
 
592
810
  RCT_EXPORT_METHOD(setMRecPlacement:(NSString *)adUnitIdentifier :(nullable NSString *)placement)
593
811
  {
812
+ if ( !self.sdk )
813
+ {
814
+ [self logUninitializedAccessError: @"setMRecPlacement"];
815
+ return;
816
+ }
817
+
594
818
  [self setAdViewPlacement: placement forAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
595
819
  }
596
820
 
597
821
  RCT_EXPORT_METHOD(setMRecCustomData:(NSString *)adUnitIdentifier :(nullable NSString *)customData)
598
822
  {
823
+ if ( !self.sdk )
824
+ {
825
+ [self logUninitializedAccessError: @"setMRecCustomData"];
826
+ return;
827
+ }
828
+
599
829
  [self setAdViewCustomData: customData forAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
600
830
  }
601
831
 
602
832
  RCT_EXPORT_METHOD(updateMRecPosition:(NSString *)mrecPosition :(NSString *)adUnitIdentifier)
603
833
  {
834
+ if ( !self.sdk )
835
+ {
836
+ [self logUninitializedAccessError: @"updateMRecPosition"];
837
+ return;
838
+ }
839
+
604
840
  [self updateAdViewPosition: mrecPosition withOffset: CGPointZero forAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
605
841
  }
606
842
 
843
+ RCT_EXPORT_METHOD(setMRecExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
844
+ {
845
+ [self setAdViewExtraParameterForAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec key: key value: value];
846
+ }
847
+
848
+ RCT_EXPORT_METHOD(setMRecLocalExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
849
+ {
850
+ [self setAdViewLocalExtraParameterForAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec key: key value: value];
851
+ }
852
+
607
853
  RCT_EXPORT_METHOD(startMRecAutoRefresh:(NSString *)adUnitIdentifier)
608
854
  {
855
+ if ( !self.sdk )
856
+ {
857
+ [self logUninitializedAccessError: @"startMRecAutoRefresh"];
858
+ return;
859
+ }
860
+
609
861
  [self startAutoRefresh: adUnitIdentifier adFormat: MAAdFormat.mrec];
610
862
  }
611
863
 
612
864
  RCT_EXPORT_METHOD(stopMRecAutoRefresh:(NSString *)adUnitIdentifier)
613
865
  {
866
+ if ( !self.sdk )
867
+ {
868
+ [self logUninitializedAccessError: @"stopMRecAutoRefresh"];
869
+ return;
870
+ }
871
+
614
872
  [self stopAutoRefresh: adUnitIdentifier adFormat: MAAdFormat.mrec];
615
873
  }
616
874
 
617
875
  RCT_EXPORT_METHOD(showMRec:(NSString *)adUnitIdentifier)
618
876
  {
877
+ if ( !self.sdk )
878
+ {
879
+ [self logUninitializedAccessError: @"showMRec"];
880
+ return;
881
+ }
882
+
619
883
  [self showAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
620
884
  }
621
885
 
622
886
  RCT_EXPORT_METHOD(hideMRec:(NSString *)adUnitIdentifier)
623
887
  {
888
+ if ( !self.sdk )
889
+ {
890
+ [self logUninitializedAccessError: @"hideMRec"];
891
+ return;
892
+ }
893
+
624
894
  [self hideAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
625
895
  }
626
896
 
627
897
  RCT_EXPORT_METHOD(destroyMRec:(NSString *)adUnitIdentifier)
628
898
  {
899
+ if ( !self.sdk )
900
+ {
901
+ [self logUninitializedAccessError: @"destroyMRec"];
902
+ return;
903
+ }
904
+
629
905
  [self destroyAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
630
906
  }
631
907
 
@@ -633,80 +909,173 @@ RCT_EXPORT_METHOD(destroyMRec:(NSString *)adUnitIdentifier)
633
909
 
634
910
  RCT_EXPORT_METHOD(loadInterstitial:(NSString *)adUnitIdentifier)
635
911
  {
912
+ if ( !self.sdk )
913
+ {
914
+ [self logUninitializedAccessError: @"loadInterstitial"];
915
+ return;
916
+ }
917
+
636
918
  MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
637
919
  [interstitial loadAd];
638
920
  }
639
921
 
640
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isInterstitialReady:(NSString *)adUnitIdentifier)
922
+ RCT_EXPORT_METHOD(isInterstitialReady:(NSString *)adUnitIdentifier :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
641
923
  {
924
+ if ( !self.sdk )
925
+ {
926
+ [self logUninitializedAccessError: @"isInterstitialReady"];
927
+ resolve(@(NO));
928
+ return;
929
+ }
930
+
642
931
  MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
643
- return @([interstitial isReady]);
932
+ resolve(@([interstitial isReady]));
644
933
  }
645
934
 
646
935
  RCT_EXPORT_METHOD(showInterstitial:(NSString *)adUnitIdentifier :(nullable NSString *)placement :(nullable NSString *)customData)
647
936
  {
937
+ if ( !self.sdk )
938
+ {
939
+ [self logUninitializedAccessError: @"showInterstitial"];
940
+ return;
941
+ }
942
+
648
943
  MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
649
944
  [interstitial showAdForPlacement: placement customData: customData];
650
945
  }
651
946
 
652
947
  RCT_EXPORT_METHOD(setInterstitialExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
653
948
  {
949
+ if ( !self.sdk )
950
+ {
951
+ [self logUninitializedAccessError: @"setInterstitialExtraParameter"];
952
+ return;
953
+ }
954
+
654
955
  MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
655
956
  [interstitial setExtraParameterForKey: key value: value];
656
957
  }
657
958
 
959
+ RCT_EXPORT_METHOD(setInterstitialLocalExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
960
+ {
961
+ MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
962
+ [interstitial setLocalExtraParameterForKey: key value: value];
963
+ }
964
+
658
965
  #pragma mark - Rewarded
659
966
 
660
967
  RCT_EXPORT_METHOD(loadRewardedAd:(NSString *)adUnitIdentifier)
661
968
  {
969
+ if ( !self.sdk )
970
+ {
971
+ [self logUninitializedAccessError: @"loadRewardedAd"];
972
+ return;
973
+ }
974
+
662
975
  MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
663
976
  [rewardedAd loadAd];
664
977
  }
665
978
 
666
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isRewardedAdReady:(NSString *)adUnitIdentifier)
979
+ RCT_EXPORT_METHOD(isRewardedAdReady:(NSString *)adUnitIdentifier :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
667
980
  {
981
+ if ( !self.sdk )
982
+ {
983
+ [self logUninitializedAccessError: @"isRewardedAdReady"];
984
+ resolve(@(NO));
985
+ return;
986
+ }
987
+
668
988
  MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
669
- return @([rewardedAd isReady]);
989
+ resolve(@([rewardedAd isReady]));
670
990
  }
671
991
 
672
992
  RCT_EXPORT_METHOD(showRewardedAd:(NSString *)adUnitIdentifier :(nullable NSString *)placement :(nullable NSString *)customData)
673
993
  {
994
+ if ( !self.sdk )
995
+ {
996
+ [self logUninitializedAccessError: @"showRewardedAd"];
997
+ return;
998
+ }
999
+
674
1000
  MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
675
1001
  [rewardedAd showAdForPlacement: placement customData: customData];
676
1002
  }
677
1003
 
678
1004
  RCT_EXPORT_METHOD(setRewardedAdExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
679
1005
  {
1006
+ if ( !self.sdk )
1007
+ {
1008
+ [self logUninitializedAccessError: @"setRewardedAdExtraParameter"];
1009
+ return;
1010
+ }
1011
+
680
1012
  MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
681
1013
  [rewardedAd setExtraParameterForKey: key value: value];
682
1014
  }
683
1015
 
1016
+ RCT_EXPORT_METHOD(setRewardedAdLocalExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
1017
+ {
1018
+ MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
1019
+ [rewardedAd setLocalExtraParameterForKey: key value: value];
1020
+ }
1021
+
684
1022
  #pragma mark - App Open Ad
685
1023
 
686
1024
  RCT_EXPORT_METHOD(loadAppOpenAd:(NSString *)adUnitIdentifier)
687
1025
  {
1026
+ if ( !self.sdk )
1027
+ {
1028
+ [self logUninitializedAccessError: @"loadAppOpenAd"];
1029
+ return;
1030
+ }
1031
+
688
1032
  MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
689
1033
  [appOpenAd loadAd];
690
1034
  }
691
1035
 
692
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isAppOpenAdReady:(NSString *)adUnitIdentifier)
1036
+ RCT_EXPORT_METHOD(isAppOpenAdReady:(NSString *)adUnitIdentifier :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
693
1037
  {
1038
+ if ( !self.sdk )
1039
+ {
1040
+ [self logUninitializedAccessError: @"isAppOpenAdReady"];
1041
+ resolve(@(NO));
1042
+ return;
1043
+ }
1044
+
694
1045
  MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
695
- return @([appOpenAd isReady]);
1046
+ resolve(@([appOpenAd isReady]));
696
1047
  }
697
1048
 
698
1049
  RCT_EXPORT_METHOD(showAppOpenAd:(NSString *)adUnitIdentifier placement:(nullable NSString *)placement customData:(nullable NSString *)customData)
699
1050
  {
1051
+ if ( !self.sdk )
1052
+ {
1053
+ [self logUninitializedAccessError: @"showAppOpenAd"];
1054
+ return;
1055
+ }
1056
+
700
1057
  MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
701
1058
  [appOpenAd showAdForPlacement: placement customData: customData];
702
1059
  }
703
1060
 
704
1061
  RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(NSString *)key value:(nullable NSString *)value)
705
1062
  {
1063
+ if ( !self.sdk )
1064
+ {
1065
+ [self logUninitializedAccessError: @"setAppOpenAdExtraParameter"];
1066
+ return;
1067
+ }
1068
+
706
1069
  MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
707
1070
  [appOpenAd setExtraParameterForKey: key value: value];
708
1071
  }
709
1072
 
1073
+ RCT_EXPORT_METHOD(setAppOpenAdLocalExtraParameter:(NSString *)adUnitIdentifier key:(NSString *)key value:(nullable NSString *)value)
1074
+ {
1075
+ MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
1076
+ [appOpenAd setLocalExtraParameterForKey: key value: value];
1077
+ }
1078
+
710
1079
  #pragma mark - Ad Callbacks
711
1080
 
712
1081
  - (void)didLoadAd:(MAAd *)ad
@@ -719,7 +1088,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
719
1088
  // An ad is now being shown, enable user interaction.
720
1089
  adView.userInteractionEnabled = YES;
721
1090
 
722
- name = ( MAAdFormat.mrec == adFormat ) ? @"OnMRecAdLoadedEvent" : @"OnBannerAdLoadedEvent";
1091
+ name = ( MAAdFormat.mrec == adFormat ) ? ON_MREC_AD_LOADED_EVENT : ON_BANNER_AD_LOADED_EVENT;
723
1092
  [self positionAdViewForAd: ad];
724
1093
 
725
1094
  // Do not auto-refresh by default if the ad view is not showing yet (e.g. first load during app launch and publisher does not automatically show banner upon load success)
@@ -731,19 +1100,15 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
731
1100
  }
732
1101
  else if ( MAAdFormat.interstitial == adFormat )
733
1102
  {
734
- name = @"OnInterstitialLoadedEvent";
1103
+ name = ON_INTERSTITIAL_LOADED_EVENT;
735
1104
  }
736
1105
  else if ( MAAdFormat.rewarded == adFormat )
737
1106
  {
738
- name = @"OnRewardedAdLoadedEvent";
739
- }
740
- else if ( MAAdFormat.native == adFormat )
741
- {
742
- name = @"OnNativeAdLoadedEvent";
1107
+ name = ON_REWARDED_AD_LOADED_EVENT;
743
1108
  }
744
1109
  else if ( MAAdFormat.appOpen == adFormat )
745
1110
  {
746
- name = @"OnAppOpenAdLoadedEvent";
1111
+ name = ON_APPOPEN_AD_LOADED_EVENT;
747
1112
  }
748
1113
  else
749
1114
  {
@@ -754,21 +1119,6 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
754
1119
  [self sendReactNativeEventWithName: name body: [self adInfoForAd: ad]];
755
1120
  }
756
1121
 
757
- - (void)sendReactNativeEventForAdLoadFailed:(NSString *)name forAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(nullable MAError *)error
758
- {
759
- NSDictionary *body = ( error ) ?
760
- @{@"adUnitId": adUnitIdentifier,
761
- @"code" : @(error.code),
762
- @"message" : error.message,
763
- @"adLoadFailureInfo" : error.adLoadFailureInfo ?: @"",
764
- @"waterfall": [self createAdWaterfallInfo: error.waterfall]}
765
- :
766
- @{@"adUnitId": adUnitIdentifier,
767
- @"code" : @(MAErrorCodeUnspecified)};
768
-
769
- [self sendReactNativeEventWithName: name body: body];
770
- }
771
-
772
1122
  - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error
773
1123
  {
774
1124
  if ( !adUnitIdentifier )
@@ -784,15 +1134,15 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
784
1134
  }
785
1135
  else if ( self.interstitials[adUnitIdentifier] )
786
1136
  {
787
- name = @"OnInterstitialLoadFailedEvent";
1137
+ name = ON_INTERSTITIAL_LOAD_FAILED_EVENT;
788
1138
  }
789
1139
  else if ( self.rewardedAds[adUnitIdentifier] )
790
1140
  {
791
- name = @"OnRewardedAdLoadFailedEvent";
1141
+ name = ON_REWARDED_AD_LOAD_FAILED_EVENT;
792
1142
  }
793
1143
  else if ( self.appOpenAds[adUnitIdentifier] )
794
1144
  {
795
- name = @"OnAppOpenAdLoadFailedEvent";
1145
+ name = ON_APPOPEN_AD_LOAD_FAILED_EVENT;
796
1146
  }
797
1147
  else
798
1148
  {
@@ -800,7 +1150,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
800
1150
  return;
801
1151
  }
802
1152
 
803
- [self sendReactNativeEventForAdLoadFailed: name forAdUnitIdentifier: adUnitIdentifier withError: error];
1153
+ [self sendReactNativeEventWithName: name body: [self adLoadFailedInfoForAd: adUnitIdentifier withError: error]];
804
1154
  }
805
1155
 
806
1156
  - (void)didClickAd:(MAAd *)ad
@@ -809,27 +1159,23 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
809
1159
  MAAdFormat *adFormat = ad.format;
810
1160
  if ( MAAdFormat.banner == adFormat || MAAdFormat.leader == adFormat )
811
1161
  {
812
- name = @"OnBannerAdClickedEvent";
1162
+ name = ON_BANNER_AD_CLICKED_EVENT;
813
1163
  }
814
1164
  else if ( MAAdFormat.mrec == adFormat )
815
1165
  {
816
- name = @"OnMRecAdClickedEvent";
1166
+ name = ON_MREC_AD_CLICKED_EVENT;
817
1167
  }
818
1168
  else if ( MAAdFormat.interstitial == adFormat )
819
1169
  {
820
- name = @"OnInterstitialClickedEvent";
1170
+ name = ON_INTERSTITIAL_CLICKED_EVENT;
821
1171
  }
822
1172
  else if ( MAAdFormat.rewarded == adFormat )
823
1173
  {
824
- name = @"OnRewardedAdClickedEvent";
825
- }
826
- else if ( MAAdFormat.native == adFormat )
827
- {
828
- name = @"OnNativeAdClickedEvent";
1174
+ name = ON_REWARDED_AD_CLICKED_EVENT;
829
1175
  }
830
1176
  else if ( MAAdFormat.appOpen == adFormat )
831
1177
  {
832
- name = @"OnAppOpenAdClickedEvent";
1178
+ name = ON_APPOPEN_AD_CLICKED_EVENT;
833
1179
  }
834
1180
  else
835
1181
  {
@@ -849,15 +1195,15 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
849
1195
  NSString *name;
850
1196
  if ( MAAdFormat.interstitial == adFormat )
851
1197
  {
852
- name = @"OnInterstitialDisplayedEvent";
1198
+ name = ON_INTERSTITIAL_DISPLAYED_EVENT;
853
1199
  }
854
1200
  else if ( MAAdFormat.rewarded == adFormat )
855
1201
  {
856
- name = @"OnRewardedAdDisplayedEvent";
1202
+ name = ON_REWARDED_AD_DISPLAYED_EVENT;
857
1203
  }
858
1204
  else // APP OPEN
859
1205
  {
860
- name = @"OnAppOpenAdDisplayedEvent";
1206
+ name = ON_APPOPEN_AD_DISPLAYED_EVENT;
861
1207
  }
862
1208
 
863
1209
  [self sendReactNativeEventWithName: name body: [self adInfoForAd: ad]];
@@ -872,22 +1218,18 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
872
1218
  NSString *name;
873
1219
  if ( MAAdFormat.interstitial == adFormat )
874
1220
  {
875
- name = @"OnInterstitialAdFailedToDisplayEvent";
1221
+ name = ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT;
876
1222
  }
877
1223
  else if ( MAAdFormat.rewarded == adFormat )
878
1224
  {
879
- name = @"OnRewardedAdFailedToDisplayEvent";
1225
+ name = ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT;
880
1226
  }
881
1227
  else // APP OPEN
882
1228
  {
883
- name = @"OnAppOpenAdFailedToDisplayEvent";
1229
+ name = ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT;
884
1230
  }
885
1231
 
886
- NSMutableDictionary *body = [@{@"code" : @(error.code),
887
- @"message" : error.message} mutableCopy];
888
- [body addEntriesFromDictionary: [self adInfoForAd: ad]];
889
-
890
- [self sendReactNativeEventWithName: name body: body];
1232
+ [self sendReactNativeEventWithName: name body: [self adDisplayFailedInfoForAd: ad withError: error]];
891
1233
  }
892
1234
 
893
1235
  - (void)didHideAd:(MAAd *)ad
@@ -899,15 +1241,15 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
899
1241
  NSString *name;
900
1242
  if ( MAAdFormat.interstitial == adFormat )
901
1243
  {
902
- name = @"OnInterstitialHiddenEvent";
1244
+ name = ON_INTERSTITIAL_HIDDEN_EVENT;
903
1245
  }
904
1246
  else if ( MAAdFormat.rewarded == adFormat )
905
1247
  {
906
- name = @"OnRewardedAdHiddenEvent";
1248
+ name = ON_REWARDED_AD_HIDDEN_EVENT;
907
1249
  }
908
1250
  else // APP OPEN
909
1251
  {
910
- name = @"OnAppOpenAdHiddenEvent";
1252
+ name = ON_APPOPEN_AD_HIDDEN_EVENT;
911
1253
  }
912
1254
 
913
1255
  [self sendReactNativeEventWithName: name body: [self adInfoForAd: ad]];
@@ -922,7 +1264,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
922
1264
  return;
923
1265
  }
924
1266
 
925
- [self sendReactNativeEventWithName: ( MAAdFormat.mrec == adFormat ) ? @"OnMRecAdExpandedEvent" : @"OnBannerAdExpandedEvent"
1267
+ [self sendReactNativeEventWithName: ( MAAdFormat.mrec == adFormat ) ? ON_MREC_AD_EXPANDED_EVENT : ON_BANNER_AD_EXPANDED_EVENT
926
1268
  body: [self adInfoForAd: ad]];
927
1269
  }
928
1270
 
@@ -935,7 +1277,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
935
1277
  return;
936
1278
  }
937
1279
 
938
- [self sendReactNativeEventWithName: ( MAAdFormat.mrec == adFormat ) ? @"OnMRecAdCollapsedEvent" : @"OnBannerAdCollapsedEvent"
1280
+ [self sendReactNativeEventWithName: ( MAAdFormat.mrec == adFormat ) ? ON_MREC_AD_COLLAPSED_EVENT : ON_BANNER_AD_COLLAPSED_EVENT
939
1281
  body: [self adInfoForAd: ad]];
940
1282
  }
941
1283
 
@@ -945,40 +1287,31 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
945
1287
  MAAdFormat *adFormat = ad.format;
946
1288
  if ( MAAdFormat.banner == adFormat || MAAdFormat.leader == adFormat )
947
1289
  {
948
- name = @"OnBannerAdRevenuePaid";
1290
+ name = ON_BANNER_AD_REVENUE_PAID;
949
1291
  }
950
1292
  else if ( MAAdFormat.mrec == adFormat )
951
1293
  {
952
- name = @"OnMRecAdRevenuePaid";
1294
+ name = ON_MREC_AD_REVENUE_PAID;
953
1295
  }
954
1296
  else if ( MAAdFormat.interstitial == adFormat )
955
1297
  {
956
- name = @"OnInterstitialAdRevenuePaid";
1298
+ name = ON_INTERSTITIAL_AD_REVENUE_PAID;
957
1299
  }
958
1300
  else if ( MAAdFormat.rewarded == adFormat )
959
1301
  {
960
- name = @"OnRewardedAdRevenuePaid";
961
- }
962
- else if ( MAAdFormat.native == adFormat )
963
- {
964
- name = @"OnNativeAdRevenuePaid";
1302
+ name = ON_REWARDED_AD_REVENUE_PAID;
965
1303
  }
966
1304
  else if ( MAAdFormat.appOpen == adFormat )
967
1305
  {
968
- name = @"OnAppOpenAdRevenuePaid";
1306
+ name = ON_APPOPEN_AD_REVENUE_PAID;
969
1307
  }
970
1308
  else
971
1309
  {
972
1310
  [self logInvalidAdFormat: adFormat];
973
1311
  return;
974
1312
  }
975
-
976
- NSMutableDictionary *body = [self adInfoForAd: ad].mutableCopy;
977
- body[@"networkPlacement"] = ad.networkPlacement;
978
- body[@"revenuePrecision"] = ad.revenuePrecision;
979
- body[@"countryCode"] = self.sdk.configuration.countryCode;
980
-
981
- [self sendReactNativeEventWithName: name body: body];
1313
+
1314
+ [self sendReactNativeEventWithName: name body: [self adRevenueInfoForAd: ad]];
982
1315
  }
983
1316
 
984
1317
  - (void)didCompleteRewardedVideoForAd:(MAAd *)ad
@@ -1008,7 +1341,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1008
1341
  @"rewardAmount": rewardAmount} mutableCopy];
1009
1342
  [body addEntriesFromDictionary: [self adInfoForAd: ad]];
1010
1343
 
1011
- [self sendReactNativeEventWithName: @"OnRewardedAdReceivedRewardEvent" body: body];
1344
+ [self sendReactNativeEventWithName: ON_REWARDED_AD_RECEIVED_REWARD_EVENT body: body];
1012
1345
  }
1013
1346
 
1014
1347
  #pragma mark - Internal Methods
@@ -1153,6 +1486,17 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1153
1486
  });
1154
1487
  }
1155
1488
 
1489
+ - (void)setAdViewLocalExtraParameterForAdUnitIdentifier:(NSString *)adUnitIdentifier adFormat:(MAAdFormat *)adFormat key:(NSString *)key value:(nullable NSString *)value
1490
+ {
1491
+ dispatch_async(dispatch_get_main_queue(), ^{
1492
+
1493
+ [self log: @"Setting %@ local extra with key: \"%@\" value: \"%@\"", adFormat, key, value];
1494
+
1495
+ MAAdView *adView = [self retrieveAdViewForAdUnitIdentifier: adUnitIdentifier adFormat: adFormat];
1496
+ [adView setLocalExtraParameterForKey: key value: value];
1497
+ });
1498
+ }
1499
+
1156
1500
  - (void)startAutoRefresh:(NSString *)adUnitIdentifier adFormat:(MAAdFormat *)adFormat
1157
1501
  {
1158
1502
  dispatch_async(dispatch_get_main_queue(), ^{
@@ -1363,7 +1707,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1363
1707
  adViewWidth = self.adViewWidths[adUnitIdentifier].floatValue;
1364
1708
  }
1365
1709
  // Top center / bottom center stretches full screen
1366
- else if ( [adViewPosition isEqual: @"top_center"] || [adViewPosition isEqual: @"bottom_center"] )
1710
+ else if ( [adViewPosition isEqual: TOP_CENTER] || [adViewPosition isEqual: BOTTOM_CENTER] )
1367
1711
  {
1368
1712
  adViewWidth = CGRectGetWidth(KEY_WINDOW.bounds);
1369
1713
  }
@@ -1403,14 +1747,14 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1403
1747
  }
1404
1748
 
1405
1749
  // If top of bottom center, stretch width of screen
1406
- if ( [adViewPosition isEqual: @"top_center"] || [adViewPosition isEqual: @"bottom_center"] )
1750
+ if ( [adViewPosition isEqual: TOP_CENTER] || [adViewPosition isEqual: BOTTOM_CENTER] )
1407
1751
  {
1408
1752
  // Non AdMob banners will still be of 50/90 points tall. Set the auto sizing mask such that the inner ad view is pinned to the bottom or top according to the ad view position.
1409
1753
  if ( !isAdaptiveBannerDisabled )
1410
1754
  {
1411
1755
  adView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
1412
1756
 
1413
- if ( [@"top_center" isEqual: adViewPosition] )
1757
+ if ( [TOP_CENTER isEqual: adViewPosition] )
1414
1758
  {
1415
1759
  adView.autoresizingMask |= UIViewAutoresizingFlexibleBottomMargin;
1416
1760
  }
@@ -1428,7 +1772,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1428
1772
  [self.safeAreaBackground.widthAnchor constraintEqualToConstant: adViewWidth],
1429
1773
  [self.safeAreaBackground.centerXAnchor constraintEqualToAnchor: layoutGuide.centerXAnchor]]];
1430
1774
 
1431
- if ( [adViewPosition isEqual: @"top_center"] )
1775
+ if ( [adViewPosition isEqual: TOP_CENTER] )
1432
1776
  {
1433
1777
  [constraints addObjectsFromArray: @[[adView.topAnchor constraintEqualToAnchor: layoutGuide.topAnchor],
1434
1778
  [self.safeAreaBackground.topAnchor constraintEqualToAnchor: superview.topAnchor],
@@ -1450,7 +1794,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1450
1794
  [constraints addObjectsFromArray: @[[adView.widthAnchor constraintEqualToConstant: adViewWidth],
1451
1795
  [adView.centerXAnchor constraintEqualToAnchor: layoutGuide.centerXAnchor]]];
1452
1796
 
1453
- if ( [adViewPosition isEqual: @"top_center"] )
1797
+ if ( [adViewPosition isEqual: TOP_CENTER] )
1454
1798
  {
1455
1799
  [constraints addObject: [adView.topAnchor constraintEqualToAnchor: layoutGuide.topAnchor constant: yOffset]];
1456
1800
  }
@@ -1468,27 +1812,27 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1468
1812
  // Assign constant width of 320 or 728
1469
1813
  [constraints addObject: [adView.widthAnchor constraintEqualToConstant: adViewWidth]];
1470
1814
 
1471
- if ( [adViewPosition isEqual: @"top_left"] )
1815
+ if ( [adViewPosition isEqual: TOP_LEFT] )
1472
1816
  {
1473
1817
  [constraints addObjectsFromArray: @[[adView.topAnchor constraintEqualToAnchor: layoutGuide.topAnchor constant: yOffset],
1474
1818
  [adView.leftAnchor constraintEqualToAnchor: superview.leftAnchor constant: xOffset]]];
1475
1819
  }
1476
- else if ( [adViewPosition isEqual: @"top_right"] )
1820
+ else if ( [adViewPosition isEqual: TOP_RIGHT] )
1477
1821
  {
1478
1822
  [constraints addObjectsFromArray: @[[adView.topAnchor constraintEqualToAnchor: layoutGuide.topAnchor constant: yOffset],
1479
1823
  [adView.rightAnchor constraintEqualToAnchor: superview.rightAnchor constant: xOffset]]];
1480
1824
  }
1481
- else if ( [adViewPosition isEqual: @"centered"] )
1825
+ else if ( [adViewPosition isEqual: CENTERED] )
1482
1826
  {
1483
1827
  [constraints addObjectsFromArray: @[[adView.centerXAnchor constraintEqualToAnchor: layoutGuide.centerXAnchor],
1484
1828
  [adView.centerYAnchor constraintEqualToAnchor: layoutGuide.centerYAnchor]]];
1485
1829
  }
1486
- else if ( [adViewPosition isEqual: @"bottom_left"] )
1830
+ else if ( [adViewPosition isEqual: BOTTOM_LEFT] )
1487
1831
  {
1488
1832
  [constraints addObjectsFromArray: @[[adView.bottomAnchor constraintEqualToAnchor: layoutGuide.bottomAnchor constant: yOffset],
1489
1833
  [adView.leftAnchor constraintEqualToAnchor: superview.leftAnchor constant: xOffset]]];
1490
1834
  }
1491
- else if ( [adViewPosition isEqual: @"bottom_right"] )
1835
+ else if ( [adViewPosition isEqual: BOTTOM_RIGHT] )
1492
1836
  {
1493
1837
  [constraints addObjectsFromArray: @[[adView.bottomAnchor constraintEqualToAnchor: layoutGuide.bottomAnchor constant: yOffset],
1494
1838
  [adView.rightAnchor constraintEqualToAnchor: superview.rightAnchor constant: xOffset]]];
@@ -1553,6 +1897,24 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1553
1897
  return ALGenderUnknown;
1554
1898
  }
1555
1899
 
1900
+ - (NSString *)fromAppLovinGender:(ALGender)gender
1901
+ {
1902
+ if ( gender == ALGenderFemale )
1903
+ {
1904
+ return @"F";
1905
+ }
1906
+ else if ( gender == ALGenderMale )
1907
+ {
1908
+ return @"M";
1909
+ }
1910
+ else if ( gender == ALGenderOther )
1911
+ {
1912
+ return @"O";
1913
+ }
1914
+
1915
+ return @"U";
1916
+ }
1917
+
1556
1918
  - (ALAdContentRating)toAppLovinAdContentRating:(nullable NSNumber *)maximumAdContentRating
1557
1919
  {
1558
1920
  if ( maximumAdContentRating )
@@ -1589,6 +1951,36 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1589
1951
  @"dspName" : ad.DSPName ?: @""};
1590
1952
  }
1591
1953
 
1954
+ - (NSDictionary<NSString *, id> *)adLoadFailedInfoForAd:(NSString *)adUnitIdentifier withError:(MAError *)error
1955
+ {
1956
+ return ( error ) ?
1957
+ @{@"adUnitId": adUnitIdentifier,
1958
+ @"code" : @(error.code),
1959
+ @"message" : error.message,
1960
+ @"adLoadFailureInfo" : error.adLoadFailureInfo ?: @"",
1961
+ @"waterfall": [self createAdWaterfallInfo: error.waterfall]}
1962
+ :
1963
+ @{@"adUnitId": adUnitIdentifier,
1964
+ @"code" : @(MAErrorCodeUnspecified)};
1965
+ }
1966
+
1967
+ - (NSDictionary<NSString *, id> *)adDisplayFailedInfoForAd:(MAAd *)ad withError:(MAError *)error
1968
+ {
1969
+ NSMutableDictionary *body = [@{@"code" : @(error.code),
1970
+ @"message" : error.message} mutableCopy];
1971
+ [body addEntriesFromDictionary: [self adInfoForAd: ad]];
1972
+ return body;
1973
+ }
1974
+
1975
+ - (NSDictionary<NSString *, id> *)adRevenueInfoForAd:(MAAd *)ad
1976
+ {
1977
+ NSMutableDictionary *body = [self adInfoForAd: ad].mutableCopy;
1978
+ body[@"networkPlacement"] = ad.networkPlacement;
1979
+ body[@"revenuePrecision"] = ad.revenuePrecision;
1980
+ body[@"countryCode"] = self.sdk.configuration.countryCode;
1981
+ return body;
1982
+ }
1983
+
1592
1984
  #pragma mark - Waterfall Information
1593
1985
 
1594
1986
  - (NSDictionary<NSString *, id> *)createAdWaterfallInfo:(MAAdWaterfallInfo *)waterfallInfo
@@ -1661,49 +2053,99 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1661
2053
  // From RCTBridgeModule protocol
1662
2054
  - (NSArray<NSString *> *)supportedEvents
1663
2055
  {
1664
- return @[@"OnMRecAdLoadedEvent",
1665
- @"OnMRecAdLoadFailedEvent",
1666
- @"OnMRecAdClickedEvent",
1667
- @"OnMRecAdCollapsedEvent",
1668
- @"OnMRecAdExpandedEvent",
1669
- @"OnMRecAdRevenuePaid",
2056
+ return @[ON_MREC_AD_LOADED_EVENT,
2057
+ ON_MREC_AD_LOAD_FAILED_EVENT,
2058
+ ON_MREC_AD_CLICKED_EVENT,
2059
+ ON_MREC_AD_COLLAPSED_EVENT,
2060
+ ON_MREC_AD_EXPANDED_EVENT,
2061
+ ON_MREC_AD_REVENUE_PAID,
2062
+
2063
+ ON_BANNER_AD_LOADED_EVENT,
2064
+ ON_BANNER_AD_LOAD_FAILED_EVENT,
2065
+ ON_BANNER_AD_CLICKED_EVENT,
2066
+ ON_BANNER_AD_COLLAPSED_EVENT,
2067
+ ON_BANNER_AD_EXPANDED_EVENT,
2068
+ ON_BANNER_AD_REVENUE_PAID,
2069
+
2070
+ ON_INTERSTITIAL_LOADED_EVENT,
2071
+ ON_INTERSTITIAL_LOAD_FAILED_EVENT,
2072
+ ON_INTERSTITIAL_CLICKED_EVENT,
2073
+ ON_INTERSTITIAL_DISPLAYED_EVENT,
2074
+ ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
2075
+ ON_INTERSTITIAL_HIDDEN_EVENT,
2076
+ ON_INTERSTITIAL_AD_REVENUE_PAID,
2077
+
2078
+ ON_REWARDED_AD_LOADED_EVENT,
2079
+ ON_REWARDED_AD_LOAD_FAILED_EVENT,
2080
+ ON_REWARDED_AD_CLICKED_EVENT,
2081
+ ON_REWARDED_AD_DISPLAYED_EVENT,
2082
+ ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
2083
+ ON_REWARDED_AD_HIDDEN_EVENT,
2084
+ ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
2085
+ ON_REWARDED_AD_REVENUE_PAID,
2086
+
2087
+ ON_APPOPEN_AD_LOADED_EVENT,
2088
+ ON_APPOPEN_AD_LOAD_FAILED_EVENT,
2089
+ ON_APPOPEN_AD_CLICKED_EVENT,
2090
+ ON_APPOPEN_AD_DISPLAYED_EVENT,
2091
+ ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT,
2092
+ ON_APPOPEN_AD_HIDDEN_EVENT,
2093
+ ON_APPOPEN_AD_REVENUE_PAID];
2094
+ }
2095
+
2096
+ - (NSDictionary *)constantsToExport
2097
+ {
2098
+ return @{@"ON_MREC_AD_LOADED_EVENT": ON_MREC_AD_LOADED_EVENT,
2099
+ @"ON_MREC_AD_LOAD_FAILED_EVENT" : ON_MREC_AD_LOAD_FAILED_EVENT,
2100
+ @"ON_MREC_AD_CLICKED_EVENT" : ON_MREC_AD_CLICKED_EVENT,
2101
+ @"ON_MREC_AD_COLLAPSED_EVENT" : ON_MREC_AD_COLLAPSED_EVENT,
2102
+ @"ON_MREC_AD_EXPANDED_EVENT" : ON_MREC_AD_EXPANDED_EVENT,
2103
+ @"ON_MREC_AD_REVENUE_PAID" : ON_MREC_AD_REVENUE_PAID,
2104
+
2105
+ @"ON_BANNER_AD_LOADED_EVENT" : ON_BANNER_AD_LOADED_EVENT,
2106
+ @"ON_BANNER_AD_LOAD_FAILED_EVENT" : ON_BANNER_AD_LOAD_FAILED_EVENT,
2107
+ @"ON_BANNER_AD_CLICKED_EVENT" : ON_BANNER_AD_CLICKED_EVENT,
2108
+ @"ON_BANNER_AD_COLLAPSED_EVENT" : ON_BANNER_AD_COLLAPSED_EVENT,
2109
+ @"ON_BANNER_AD_EXPANDED_EVENT" : ON_BANNER_AD_EXPANDED_EVENT,
2110
+ @"ON_BANNER_AD_REVENUE_PAID" : ON_BANNER_AD_REVENUE_PAID,
1670
2111
 
1671
- @"OnBannerAdLoadedEvent",
1672
- @"OnBannerAdLoadFailedEvent",
1673
- @"OnBannerAdClickedEvent",
1674
- @"OnBannerAdCollapsedEvent",
1675
- @"OnBannerAdExpandedEvent",
1676
- @"OnBannerAdRevenuePaid",
2112
+ @"ON_INTERSTITIAL_LOADED_EVENT" : ON_INTERSTITIAL_LOADED_EVENT,
2113
+ @"ON_INTERSTITIAL_LOAD_FAILED_EVENT" : ON_INTERSTITIAL_LOAD_FAILED_EVENT,
2114
+ @"ON_INTERSTITIAL_CLICKED_EVENT" : ON_INTERSTITIAL_CLICKED_EVENT,
2115
+ @"ON_INTERSTITIAL_DISPLAYED_EVENT" : ON_INTERSTITIAL_DISPLAYED_EVENT,
2116
+ @"ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT" : ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT,
2117
+ @"ON_INTERSTITIAL_HIDDEN_EVENT" : ON_INTERSTITIAL_HIDDEN_EVENT,
2118
+ @"ON_INTERSTITIAL_AD_REVENUE_PAID" : ON_INTERSTITIAL_AD_REVENUE_PAID,
1677
2119
 
1678
- @"OnInterstitialLoadedEvent",
1679
- @"OnInterstitialLoadFailedEvent",
1680
- @"OnInterstitialClickedEvent",
1681
- @"OnInterstitialDisplayedEvent",
1682
- @"OnInterstitialAdFailedToDisplayEvent",
1683
- @"OnInterstitialHiddenEvent",
1684
- @"OnInterstitialAdRevenuePaid",
2120
+ @"ON_REWARDED_AD_LOADED_EVENT" : ON_REWARDED_AD_LOADED_EVENT,
2121
+ @"ON_REWARDED_AD_LOAD_FAILED_EVENT" : ON_REWARDED_AD_LOAD_FAILED_EVENT,
2122
+ @"ON_REWARDED_AD_CLICKED_EVENT" : ON_REWARDED_AD_CLICKED_EVENT,
2123
+ @"ON_REWARDED_AD_DISPLAYED_EVENT" : ON_REWARDED_AD_DISPLAYED_EVENT,
2124
+ @"ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT" : ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT,
2125
+ @"ON_REWARDED_AD_HIDDEN_EVENT" : ON_REWARDED_AD_HIDDEN_EVENT,
2126
+ @"ON_REWARDED_AD_RECEIVED_REWARD_EVENT" : ON_REWARDED_AD_RECEIVED_REWARD_EVENT,
2127
+ @"ON_REWARDED_AD_REVENUE_PAID" : ON_REWARDED_AD_REVENUE_PAID,
1685
2128
 
1686
- @"OnRewardedAdLoadedEvent",
1687
- @"OnRewardedAdLoadFailedEvent",
1688
- @"OnRewardedAdClickedEvent",
1689
- @"OnRewardedAdDisplayedEvent",
1690
- @"OnRewardedAdFailedToDisplayEvent",
1691
- @"OnRewardedAdHiddenEvent",
1692
- @"OnRewardedAdReceivedRewardEvent",
1693
- @"OnRewardedAdRevenuePaid",
2129
+ @"ON_APPOPEN_AD_LOADED_EVENT" : ON_APPOPEN_AD_LOADED_EVENT,
2130
+ @"ON_APPOPEN_AD_LOAD_FAILED_EVENT" : ON_APPOPEN_AD_LOAD_FAILED_EVENT,
2131
+ @"ON_APPOPEN_AD_CLICKED_EVENT" : ON_APPOPEN_AD_CLICKED_EVENT,
2132
+ @"ON_APPOPEN_AD_DISPLAYED_EVENT" : ON_APPOPEN_AD_DISPLAYED_EVENT,
2133
+ @"ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT" : ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT,
2134
+ @"ON_APPOPEN_AD_HIDDEN_EVENT" : ON_APPOPEN_AD_HIDDEN_EVENT,
2135
+ @"ON_APPOPEN_AD_REVENUE_PAID" : ON_APPOPEN_AD_REVENUE_PAID,
1694
2136
 
1695
- @"OnAppOpenAdLoadedEvent",
1696
- @"OnAppOpenAdLoadFailedEvent",
1697
- @"OnAppOpenAdClickedEvent",
1698
- @"OnAppOpenAdDisplayedEvent",
1699
- @"OnAppOpenAdFailedToDisplayEvent",
1700
- @"OnAppOpenAdHiddenEvent",
1701
- @"OnAppOpenAdRevenuePaid",
2137
+ @"TOP_CENTER_POSITION" : TOP_CENTER,
2138
+ @"TOP_LEFT_POSITION" : TOP_LEFT,
2139
+ @"TOP_RIGHT_POSITION" : TOP_RIGHT,
2140
+ @"CENTERED_POSITION" : CENTERED,
2141
+ @"CENTER_LEFT_POSITION" : CENTER_LEFT,
2142
+ @"CENTER_RIGHT_POSITION" : CENTER_RIGHT,
2143
+ @"BOTTOM_LEFT_POSITION" : BOTTOM_LEFT,
2144
+ @"BOTTOM_CENTER_POSITION" : BOTTOM_CENTER,
2145
+ @"BOTTOM_RIGHT_POSITION" : BOTTOM_RIGHT,
1702
2146
 
1703
- @"OnNativeAdLoadedEvent",
1704
- @"OnNativeAdLoadFailedEvent",
1705
- @"OnNativeAdClickedEvent",
1706
- @"OnNativeAdRevenuePaid"];
2147
+ @"BANNER_AD_FORMAT_LABEL" : MAAdFormat.banner.label,
2148
+ @"MREC_AD_FORMAT_LABEL" : MAAdFormat.mrec.label};
1707
2149
  }
1708
2150
 
1709
2151
  - (void)startObserving