react-native-applovin-max 4.1.6 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/ios/AppLovinMAX.m CHANGED
@@ -44,10 +44,6 @@
44
44
  @property (nonatomic, strong, nullable) NSNumber *locationCollectionEnabledToSet;
45
45
  @property (nonatomic, strong) NSMutableDictionary<NSString *, NSString *> *extraParametersToSet;
46
46
 
47
- @property (nonatomic, strong, nullable) NSNumber *consentFlowEnabledToSet;
48
- @property (nonatomic, strong, nullable) NSURL *privacyPolicyURLToSet;
49
- @property (nonatomic, strong, nullable) NSURL *termsOfServiceURLToSet;
50
-
51
47
  @property (nonatomic, strong, nullable) NSNumber *targetingYearOfBirthToSet;
52
48
  @property (nonatomic, copy, nullable) NSString *targetingGenderToSet;
53
49
  @property (nonatomic, strong, nullable) NSNumber *targetingMaximumAdContentRatingToSet;
@@ -82,6 +78,55 @@
82
78
  static NSString *const SDK_TAG = @"AppLovinSdk";
83
79
  static NSString *const TAG = @"AppLovinMAX";
84
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
+
85
130
  static AppLovinMAX *AppLovinMAXShared; // Shared instance of this bridge module.
86
131
 
87
132
  // To export a module named AppLovinMAX ("RCT" automatically removed)
@@ -134,12 +179,12 @@ RCT_EXPORT_MODULE()
134
179
  return self;
135
180
  }
136
181
 
137
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isInitialized)
182
+ RCT_EXPORT_METHOD(isInitialized:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
138
183
  {
139
- return @([self isPluginInitialized] && [self isSDKInitialized]);
184
+ resolve(@([self isPluginInitialized] && [self isSDKInitialized]));
140
185
  }
141
186
 
142
- RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(RCTResponseSenderBlock)callback)
187
+ RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
143
188
  {
144
189
  // Guard against running init logic multiple times
145
190
  if ( [self isPluginInitialized] ) return;
@@ -157,22 +202,13 @@ RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(RCT
157
202
  }
158
203
  else
159
204
  {
160
- [NSException raise: NSInternalInconsistencyException
161
- 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;
162
207
  }
163
208
  }
164
209
 
165
- ALSdkSettings *settings = [[ALSdkSettings alloc] init];
166
- settings.consentFlowSettings.enabled = self.consentFlowEnabledToSet.boolValue;
167
- settings.consentFlowSettings.privacyPolicyURL = self.privacyPolicyURLToSet;
168
- settings.consentFlowSettings.termsOfServiceURL = self.termsOfServiceURLToSet;
169
-
170
- self.consentFlowEnabledToSet = nil;
171
- self.privacyPolicyURLToSet = nil;
172
- self.termsOfServiceURLToSet = nil;
173
-
174
210
  // Initialize SDK
175
- self.sdk = [ALSdk sharedWithKey: sdkKey settings: settings];
211
+ self.sdk = [ALSdk sharedWithKey: sdkKey];
176
212
  [self.sdk setPluginVersion: [@"React-Native-" stringByAppendingString: pluginVersion]];
177
213
  [self.sdk setMediationProvider: ALMediationProviderMAX];
178
214
 
@@ -262,16 +298,15 @@ RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(RCT
262
298
  self.sdkConfiguration = configuration;
263
299
  self.sdkInitialized = YES;
264
300
 
265
- callback(@[@{@"consentDialogState" : @(configuration.consentDialogState),
266
- @"countryCode" : self.sdk.configuration.countryCode}]);
301
+ resolve(@{@"countryCode" : self.sdk.configuration.countryCode});
267
302
  }];
268
303
  }
269
304
 
270
305
  #pragma mark - General Public API
271
306
 
272
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isTablet)
307
+ RCT_EXPORT_METHOD(isTablet:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
273
308
  {
274
- return @([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad);
309
+ resolve(@([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad));
275
310
  }
276
311
 
277
312
  RCT_EXPORT_METHOD(showMediationDebugger)
@@ -285,28 +320,14 @@ RCT_EXPORT_METHOD(showMediationDebugger)
285
320
  [self.sdk showMediationDebugger];
286
321
  }
287
322
 
288
- RCT_EXPORT_METHOD(showConsentDialog:(RCTResponseSenderBlock)callback)
289
- {
290
- [self log: @"Failed to show consent dialog - Unavailable on iOS, please use the consent flow: https://dash.applovin.com/documentation/mediation/react-native/getting-started/consent-flow"];
291
-
292
- callback(nil);
293
- }
294
-
295
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getConsentDialogState)
296
- {
297
- if ( ![self isInitialized] ) return @(ALConsentDialogStateUnknown);
298
-
299
- return @(self.sdkConfiguration.consentDialogState);
300
- }
301
-
302
323
  RCT_EXPORT_METHOD(setHasUserConsent:(BOOL)hasUserConsent)
303
324
  {
304
325
  [ALPrivacySettings setHasUserConsent: hasUserConsent];
305
326
  }
306
327
 
307
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(hasUserConsent)
328
+ RCT_EXPORT_METHOD(hasUserConsent:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
308
329
  {
309
- return @([ALPrivacySettings hasUserConsent]);
330
+ resolve(@([ALPrivacySettings hasUserConsent]));
310
331
  }
311
332
 
312
333
  RCT_EXPORT_METHOD(setIsAgeRestrictedUser:(BOOL)isAgeRestrictedUser)
@@ -314,9 +335,9 @@ RCT_EXPORT_METHOD(setIsAgeRestrictedUser:(BOOL)isAgeRestrictedUser)
314
335
  [ALPrivacySettings setIsAgeRestrictedUser: isAgeRestrictedUser];
315
336
  }
316
337
 
317
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isAgeRestrictedUser)
338
+ RCT_EXPORT_METHOD(isAgeRestrictedUser:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
318
339
  {
319
- return @([ALPrivacySettings isAgeRestrictedUser]);
340
+ resolve(@([ALPrivacySettings isAgeRestrictedUser]));
320
341
  }
321
342
 
322
343
  RCT_EXPORT_METHOD(setDoNotSell:(BOOL)doNotSell)
@@ -324,9 +345,9 @@ RCT_EXPORT_METHOD(setDoNotSell:(BOOL)doNotSell)
324
345
  [ALPrivacySettings setDoNotSell: doNotSell];
325
346
  }
326
347
 
327
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isDoNotSell)
348
+ RCT_EXPORT_METHOD(isDoNotSell:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
328
349
  {
329
- return @([ALPrivacySettings isDoNotSell]);
350
+ resolve(@([ALPrivacySettings isDoNotSell]));
330
351
  }
331
352
 
332
353
  RCT_EXPORT_METHOD(setUserId:(NSString *)userId)
@@ -349,11 +370,9 @@ RCT_EXPORT_METHOD(setMuted:(BOOL)muted)
349
370
  self.sdk.settings.muted = muted;
350
371
  }
351
372
 
352
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isMuted)
373
+ RCT_EXPORT_METHOD(isMuted:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
353
374
  {
354
- if ( ![self isPluginInitialized] ) return @(NO);
355
-
356
- return @(self.sdk.settings.muted);
375
+ resolve([self isPluginInitialized] ? @(self.sdk.settings.muted) : @(NO) );
357
376
  }
358
377
 
359
378
  RCT_EXPORT_METHOD(setVerboseLogging:(BOOL)enabled)
@@ -415,21 +434,6 @@ RCT_EXPORT_METHOD(setExtraParameter:(NSString *)key :(nullable NSString *)value)
415
434
  }
416
435
  }
417
436
 
418
- RCT_EXPORT_METHOD(setConsentFlowEnabled:(BOOL)enabled)
419
- {
420
- self.consentFlowEnabledToSet = @(enabled);
421
- }
422
-
423
- RCT_EXPORT_METHOD(setPrivacyPolicyUrl:(NSString *)urlString)
424
- {
425
- self.privacyPolicyURLToSet = [NSURL URLWithString: urlString];
426
- }
427
-
428
- RCT_EXPORT_METHOD(setTermsOfServiceUrl:(NSString *)urlString)
429
- {
430
- self.termsOfServiceURLToSet = [NSURL URLWithString: urlString];
431
- }
432
-
433
437
  #pragma mark - Data Passing
434
438
 
435
439
  RCT_EXPORT_METHOD(setTargetingDataYearOfBirth:(nonnull NSNumber *)yearOfBirth)
@@ -443,6 +447,17 @@ RCT_EXPORT_METHOD(setTargetingDataYearOfBirth:(nonnull NSNumber *)yearOfBirth)
443
447
  self.sdk.targetingData.yearOfBirth = yearOfBirth.intValue <= 0 ? nil : yearOfBirth;
444
448
  }
445
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
+
446
461
  RCT_EXPORT_METHOD(setTargetingDataGender:(nullable NSString *)gender)
447
462
  {
448
463
  if ( !self.sdk )
@@ -454,6 +469,17 @@ RCT_EXPORT_METHOD(setTargetingDataGender:(nullable NSString *)gender)
454
469
  self.sdk.targetingData.gender = [self toAppLovinGender: gender];
455
470
  }
456
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
+
457
483
  RCT_EXPORT_METHOD(setTargetingDataMaximumAdContentRating:(nonnull NSNumber *)maximumAdContentRating)
458
484
  {
459
485
  if ( !self.sdk )
@@ -465,6 +491,17 @@ RCT_EXPORT_METHOD(setTargetingDataMaximumAdContentRating:(nonnull NSNumber *)max
465
491
  self.sdk.targetingData.maximumAdContentRating = [self toAppLovinAdContentRating: maximumAdContentRating];
466
492
  }
467
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
+
468
505
  RCT_EXPORT_METHOD(setTargetingDataEmail:(nullable NSString *)email)
469
506
  {
470
507
  if ( !self.sdk )
@@ -476,6 +513,17 @@ RCT_EXPORT_METHOD(setTargetingDataEmail:(nullable NSString *)email)
476
513
  self.sdk.targetingData.email = email;
477
514
  }
478
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
+
479
527
  RCT_EXPORT_METHOD(setTargetingDataPhoneNumber:(nullable NSString *)phoneNumber)
480
528
  {
481
529
  if ( !self.sdk )
@@ -487,6 +535,17 @@ RCT_EXPORT_METHOD(setTargetingDataPhoneNumber:(nullable NSString *)phoneNumber)
487
535
  self.sdk.targetingData.phoneNumber = phoneNumber;
488
536
  }
489
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
+
490
549
  RCT_EXPORT_METHOD(setTargetingDataKeywords:(nullable NSArray<NSString *> *)keywords)
491
550
  {
492
551
  if ( !self.sdk )
@@ -498,6 +557,17 @@ RCT_EXPORT_METHOD(setTargetingDataKeywords:(nullable NSArray<NSString *> *)keywo
498
557
  self.sdk.targetingData.keywords = keywords;
499
558
  }
500
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
+
501
571
  RCT_EXPORT_METHOD(setTargetingDataInterests:(nullable NSArray<NSString *> *)interests)
502
572
  {
503
573
  if ( !self.sdk )
@@ -509,6 +579,17 @@ RCT_EXPORT_METHOD(setTargetingDataInterests:(nullable NSArray<NSString *> *)inte
509
579
  self.sdk.targetingData.interests = interests;
510
580
  }
511
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
+
512
593
  RCT_EXPORT_METHOD(clearAllTargetingData)
513
594
  {
514
595
  if ( !self.sdk )
@@ -550,124 +631,277 @@ RCT_EXPORT_METHOD(trackEvent:(NSString *)event :(NSDictionary<NSString *, id> *)
550
631
 
551
632
  RCT_EXPORT_METHOD(createBanner:(NSString *)adUnitIdentifier :(NSString *)bannerPosition)
552
633
  {
634
+ if ( !self.sdk )
635
+ {
636
+ [self logUninitializedAccessError: @"createBanner"];
637
+ return;
638
+ }
639
+
553
640
  [self createAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT atPosition: bannerPosition withOffset: CGPointZero];
554
641
  }
555
642
 
556
643
  // NOTE: No function overloading in JS so we need new method signature
557
644
  RCT_EXPORT_METHOD(createBannerWithOffsets:(NSString *)adUnitIdentifier :(NSString *)bannerPosition :(CGFloat)xOffset :(CGFloat)yOffset)
558
645
  {
646
+ if ( !self.sdk )
647
+ {
648
+ [self logUninitializedAccessError: @"createBannerWithOffsets"];
649
+ return;
650
+ }
651
+
559
652
  [self createAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT atPosition: bannerPosition withOffset: CGPointMake(xOffset, yOffset)];
560
653
  }
561
654
 
562
655
  RCT_EXPORT_METHOD(setBannerBackgroundColor:(NSString *)adUnitIdentifier :(NSString *)hexColorCode)
563
656
  {
657
+ if ( !self.sdk )
658
+ {
659
+ [self logUninitializedAccessError: @"setBannerBackgroundColor"];
660
+ return;
661
+ }
662
+
564
663
  [self setAdViewBackgroundColorForAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT hexColorCode: hexColorCode];
565
664
  }
566
665
 
567
666
  RCT_EXPORT_METHOD(setBannerPlacement:(NSString *)adUnitIdentifier :(nullable NSString *)placement)
568
667
  {
668
+ if ( !self.sdk )
669
+ {
670
+ [self logUninitializedAccessError: @"setBannerPlacement"];
671
+ return;
672
+ }
673
+
569
674
  [self setAdViewPlacement: placement forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
570
675
  }
571
676
 
572
677
  RCT_EXPORT_METHOD(setBannerCustomData:(NSString *)adUnitIdentifier :(nullable NSString *)customData)
573
678
  {
679
+ if ( !self.sdk )
680
+ {
681
+ [self logUninitializedAccessError: @"setBannerCustomData"];
682
+ return;
683
+ }
684
+
574
685
  [self setAdViewCustomData: customData forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
575
686
  }
576
687
 
577
688
  RCT_EXPORT_METHOD(updateBannerPosition:(NSString *)adUnitIdentifier :(NSString *)bannerPosition)
578
689
  {
690
+ if ( !self.sdk )
691
+ {
692
+ [self logUninitializedAccessError: @"updateBannerPosition"];
693
+ return;
694
+ }
695
+
579
696
  [self updateAdViewPosition: bannerPosition withOffset: CGPointZero forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
580
697
  }
581
698
 
582
699
  RCT_EXPORT_METHOD(updateBannerOffsets:(NSString *)adUnitIdentifier :(CGFloat)xOffset :(CGFloat)yOffset)
583
700
  {
701
+ if ( !self.sdk )
702
+ {
703
+ [self logUninitializedAccessError: @"updateBannerOffsets"];
704
+ return;
705
+ }
706
+
584
707
  [self updateAdViewPosition: self.adViewPositions[adUnitIdentifier] withOffset: CGPointMake(xOffset, yOffset) forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
585
708
  }
586
709
 
587
710
  RCT_EXPORT_METHOD(setBannerWidth:(NSString *)adUnitIdentifier :(CGFloat)width)
588
711
  {
712
+ if ( !self.sdk )
713
+ {
714
+ [self logUninitializedAccessError: @"setBannerWidth"];
715
+ return;
716
+ }
717
+
589
718
  [self setAdViewWidth: width forAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
590
719
  }
591
720
 
592
721
  RCT_EXPORT_METHOD(setBannerExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
593
722
  {
723
+ if ( !self.sdk )
724
+ {
725
+ [self logUninitializedAccessError: @"setBannerExtraParameter"];
726
+ return;
727
+ }
728
+
594
729
  [self setAdViewExtraParameterForAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT key: key value: value];
595
730
  }
596
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
+
597
737
  RCT_EXPORT_METHOD(startBannerAutoRefresh:(NSString *)adUnitIdentifier)
598
738
  {
739
+ if ( !self.sdk )
740
+ {
741
+ [self logUninitializedAccessError: @"startBannerAutoRefresh"];
742
+ return;
743
+ }
744
+
599
745
  [self startAutoRefresh: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
600
746
  }
601
747
 
602
748
  RCT_EXPORT_METHOD(stopBannerAutoRefresh:(NSString *)adUnitIdentifier)
603
749
  {
750
+ if ( !self.sdk )
751
+ {
752
+ [self logUninitializedAccessError: @"stopBannerAutoRefresh"];
753
+ return;
754
+ }
755
+
604
756
  [self stopAutoRefresh: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
605
757
  }
606
758
 
607
759
  RCT_EXPORT_METHOD(showBanner:(NSString *)adUnitIdentifier)
608
760
  {
761
+ if ( !self.sdk )
762
+ {
763
+ [self logUninitializedAccessError: @"showBanner"];
764
+ return;
765
+ }
766
+
609
767
  [self showAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
610
768
  }
611
769
 
612
770
  RCT_EXPORT_METHOD(hideBanner:(NSString *)adUnitIdentifier)
613
771
  {
772
+ if ( !self.sdk )
773
+ {
774
+ [self logUninitializedAccessError: @"hideBanner"];
775
+ return;
776
+ }
777
+
614
778
  [self hideAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
615
779
  }
616
780
 
617
781
  RCT_EXPORT_METHOD(destroyBanner:(NSString *)adUnitIdentifier)
618
782
  {
783
+ if ( !self.sdk )
784
+ {
785
+ [self logUninitializedAccessError: @"destroyBanner"];
786
+ return;
787
+ }
788
+
619
789
  [self destroyAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: DEVICE_SPECIFIC_ADVIEW_AD_FORMAT];
620
790
  }
621
791
 
622
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getAdaptiveBannerHeightForWidth:(CGFloat)width)
792
+ RCT_EXPORT_METHOD(getAdaptiveBannerHeightForWidth:(CGFloat)width :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
623
793
  {
624
- return @([DEVICE_SPECIFIC_ADVIEW_AD_FORMAT adaptiveSizeForWidth: width].height);
794
+ resolve(@([DEVICE_SPECIFIC_ADVIEW_AD_FORMAT adaptiveSizeForWidth: width].height));
625
795
  }
626
796
 
627
797
  #pragma mark - MRECs
628
798
 
629
799
  RCT_EXPORT_METHOD(createMRec:(NSString *)adUnitIdentifier :(NSString *)mrecPosition)
630
800
  {
801
+ if ( !self.sdk )
802
+ {
803
+ [self logUninitializedAccessError: @"createMRec"];
804
+ return;
805
+ }
806
+
631
807
  [self createAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec atPosition: mrecPosition withOffset: CGPointZero];
632
808
  }
633
809
 
634
810
  RCT_EXPORT_METHOD(setMRecPlacement:(NSString *)adUnitIdentifier :(nullable NSString *)placement)
635
811
  {
812
+ if ( !self.sdk )
813
+ {
814
+ [self logUninitializedAccessError: @"setMRecPlacement"];
815
+ return;
816
+ }
817
+
636
818
  [self setAdViewPlacement: placement forAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
637
819
  }
638
820
 
639
821
  RCT_EXPORT_METHOD(setMRecCustomData:(NSString *)adUnitIdentifier :(nullable NSString *)customData)
640
822
  {
823
+ if ( !self.sdk )
824
+ {
825
+ [self logUninitializedAccessError: @"setMRecCustomData"];
826
+ return;
827
+ }
828
+
641
829
  [self setAdViewCustomData: customData forAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
642
830
  }
643
831
 
644
832
  RCT_EXPORT_METHOD(updateMRecPosition:(NSString *)mrecPosition :(NSString *)adUnitIdentifier)
645
833
  {
834
+ if ( !self.sdk )
835
+ {
836
+ [self logUninitializedAccessError: @"updateMRecPosition"];
837
+ return;
838
+ }
839
+
646
840
  [self updateAdViewPosition: mrecPosition withOffset: CGPointZero forAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
647
841
  }
648
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
+
649
853
  RCT_EXPORT_METHOD(startMRecAutoRefresh:(NSString *)adUnitIdentifier)
650
854
  {
855
+ if ( !self.sdk )
856
+ {
857
+ [self logUninitializedAccessError: @"startMRecAutoRefresh"];
858
+ return;
859
+ }
860
+
651
861
  [self startAutoRefresh: adUnitIdentifier adFormat: MAAdFormat.mrec];
652
862
  }
653
863
 
654
864
  RCT_EXPORT_METHOD(stopMRecAutoRefresh:(NSString *)adUnitIdentifier)
655
865
  {
866
+ if ( !self.sdk )
867
+ {
868
+ [self logUninitializedAccessError: @"stopMRecAutoRefresh"];
869
+ return;
870
+ }
871
+
656
872
  [self stopAutoRefresh: adUnitIdentifier adFormat: MAAdFormat.mrec];
657
873
  }
658
874
 
659
875
  RCT_EXPORT_METHOD(showMRec:(NSString *)adUnitIdentifier)
660
876
  {
877
+ if ( !self.sdk )
878
+ {
879
+ [self logUninitializedAccessError: @"showMRec"];
880
+ return;
881
+ }
882
+
661
883
  [self showAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
662
884
  }
663
885
 
664
886
  RCT_EXPORT_METHOD(hideMRec:(NSString *)adUnitIdentifier)
665
887
  {
888
+ if ( !self.sdk )
889
+ {
890
+ [self logUninitializedAccessError: @"hideMRec"];
891
+ return;
892
+ }
893
+
666
894
  [self hideAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
667
895
  }
668
896
 
669
897
  RCT_EXPORT_METHOD(destroyMRec:(NSString *)adUnitIdentifier)
670
898
  {
899
+ if ( !self.sdk )
900
+ {
901
+ [self logUninitializedAccessError: @"destroyMRec"];
902
+ return;
903
+ }
904
+
671
905
  [self destroyAdViewWithAdUnitIdentifier: adUnitIdentifier adFormat: MAAdFormat.mrec];
672
906
  }
673
907
 
@@ -675,80 +909,173 @@ RCT_EXPORT_METHOD(destroyMRec:(NSString *)adUnitIdentifier)
675
909
 
676
910
  RCT_EXPORT_METHOD(loadInterstitial:(NSString *)adUnitIdentifier)
677
911
  {
912
+ if ( !self.sdk )
913
+ {
914
+ [self logUninitializedAccessError: @"loadInterstitial"];
915
+ return;
916
+ }
917
+
678
918
  MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
679
919
  [interstitial loadAd];
680
920
  }
681
921
 
682
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isInterstitialReady:(NSString *)adUnitIdentifier)
922
+ RCT_EXPORT_METHOD(isInterstitialReady:(NSString *)adUnitIdentifier :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
683
923
  {
924
+ if ( !self.sdk )
925
+ {
926
+ [self logUninitializedAccessError: @"isInterstitialReady"];
927
+ resolve(@(NO));
928
+ return;
929
+ }
930
+
684
931
  MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
685
- return @([interstitial isReady]);
932
+ resolve(@([interstitial isReady]));
686
933
  }
687
934
 
688
935
  RCT_EXPORT_METHOD(showInterstitial:(NSString *)adUnitIdentifier :(nullable NSString *)placement :(nullable NSString *)customData)
689
936
  {
937
+ if ( !self.sdk )
938
+ {
939
+ [self logUninitializedAccessError: @"showInterstitial"];
940
+ return;
941
+ }
942
+
690
943
  MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
691
944
  [interstitial showAdForPlacement: placement customData: customData];
692
945
  }
693
946
 
694
947
  RCT_EXPORT_METHOD(setInterstitialExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
695
948
  {
949
+ if ( !self.sdk )
950
+ {
951
+ [self logUninitializedAccessError: @"setInterstitialExtraParameter"];
952
+ return;
953
+ }
954
+
696
955
  MAInterstitialAd *interstitial = [self retrieveInterstitialForAdUnitIdentifier: adUnitIdentifier];
697
956
  [interstitial setExtraParameterForKey: key value: value];
698
957
  }
699
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
+
700
965
  #pragma mark - Rewarded
701
966
 
702
967
  RCT_EXPORT_METHOD(loadRewardedAd:(NSString *)adUnitIdentifier)
703
968
  {
969
+ if ( !self.sdk )
970
+ {
971
+ [self logUninitializedAccessError: @"loadRewardedAd"];
972
+ return;
973
+ }
974
+
704
975
  MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
705
976
  [rewardedAd loadAd];
706
977
  }
707
978
 
708
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isRewardedAdReady:(NSString *)adUnitIdentifier)
979
+ RCT_EXPORT_METHOD(isRewardedAdReady:(NSString *)adUnitIdentifier :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
709
980
  {
981
+ if ( !self.sdk )
982
+ {
983
+ [self logUninitializedAccessError: @"isRewardedAdReady"];
984
+ resolve(@(NO));
985
+ return;
986
+ }
987
+
710
988
  MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
711
- return @([rewardedAd isReady]);
989
+ resolve(@([rewardedAd isReady]));
712
990
  }
713
991
 
714
992
  RCT_EXPORT_METHOD(showRewardedAd:(NSString *)adUnitIdentifier :(nullable NSString *)placement :(nullable NSString *)customData)
715
993
  {
994
+ if ( !self.sdk )
995
+ {
996
+ [self logUninitializedAccessError: @"showRewardedAd"];
997
+ return;
998
+ }
999
+
716
1000
  MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
717
1001
  [rewardedAd showAdForPlacement: placement customData: customData];
718
1002
  }
719
1003
 
720
1004
  RCT_EXPORT_METHOD(setRewardedAdExtraParameter:(NSString *)adUnitIdentifier :(NSString *)key :(nullable NSString *)value)
721
1005
  {
1006
+ if ( !self.sdk )
1007
+ {
1008
+ [self logUninitializedAccessError: @"setRewardedAdExtraParameter"];
1009
+ return;
1010
+ }
1011
+
722
1012
  MARewardedAd *rewardedAd = [self retrieveRewardedAdForAdUnitIdentifier: adUnitIdentifier];
723
1013
  [rewardedAd setExtraParameterForKey: key value: value];
724
1014
  }
725
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
+
726
1022
  #pragma mark - App Open Ad
727
1023
 
728
1024
  RCT_EXPORT_METHOD(loadAppOpenAd:(NSString *)adUnitIdentifier)
729
1025
  {
1026
+ if ( !self.sdk )
1027
+ {
1028
+ [self logUninitializedAccessError: @"loadAppOpenAd"];
1029
+ return;
1030
+ }
1031
+
730
1032
  MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
731
1033
  [appOpenAd loadAd];
732
1034
  }
733
1035
 
734
- RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(isAppOpenAdReady:(NSString *)adUnitIdentifier)
1036
+ RCT_EXPORT_METHOD(isAppOpenAdReady:(NSString *)adUnitIdentifier :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
735
1037
  {
1038
+ if ( !self.sdk )
1039
+ {
1040
+ [self logUninitializedAccessError: @"isAppOpenAdReady"];
1041
+ resolve(@(NO));
1042
+ return;
1043
+ }
1044
+
736
1045
  MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
737
- return @([appOpenAd isReady]);
1046
+ resolve(@([appOpenAd isReady]));
738
1047
  }
739
1048
 
740
1049
  RCT_EXPORT_METHOD(showAppOpenAd:(NSString *)adUnitIdentifier placement:(nullable NSString *)placement customData:(nullable NSString *)customData)
741
1050
  {
1051
+ if ( !self.sdk )
1052
+ {
1053
+ [self logUninitializedAccessError: @"showAppOpenAd"];
1054
+ return;
1055
+ }
1056
+
742
1057
  MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
743
1058
  [appOpenAd showAdForPlacement: placement customData: customData];
744
1059
  }
745
1060
 
746
1061
  RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(NSString *)key value:(nullable NSString *)value)
747
1062
  {
1063
+ if ( !self.sdk )
1064
+ {
1065
+ [self logUninitializedAccessError: @"setAppOpenAdExtraParameter"];
1066
+ return;
1067
+ }
1068
+
748
1069
  MAAppOpenAd *appOpenAd = [self retrieveAppOpenAdForAdUnitIdentifier: adUnitIdentifier];
749
1070
  [appOpenAd setExtraParameterForKey: key value: value];
750
1071
  }
751
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
+
752
1079
  #pragma mark - Ad Callbacks
753
1080
 
754
1081
  - (void)didLoadAd:(MAAd *)ad
@@ -761,7 +1088,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
761
1088
  // An ad is now being shown, enable user interaction.
762
1089
  adView.userInteractionEnabled = YES;
763
1090
 
764
- name = ( MAAdFormat.mrec == adFormat ) ? @"OnMRecAdLoadedEvent" : @"OnBannerAdLoadedEvent";
1091
+ name = ( MAAdFormat.mrec == adFormat ) ? ON_MREC_AD_LOADED_EVENT : ON_BANNER_AD_LOADED_EVENT;
765
1092
  [self positionAdViewForAd: ad];
766
1093
 
767
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)
@@ -773,19 +1100,15 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
773
1100
  }
774
1101
  else if ( MAAdFormat.interstitial == adFormat )
775
1102
  {
776
- name = @"OnInterstitialLoadedEvent";
1103
+ name = ON_INTERSTITIAL_LOADED_EVENT;
777
1104
  }
778
1105
  else if ( MAAdFormat.rewarded == adFormat )
779
1106
  {
780
- name = @"OnRewardedAdLoadedEvent";
781
- }
782
- else if ( MAAdFormat.native == adFormat )
783
- {
784
- name = @"OnNativeAdLoadedEvent";
1107
+ name = ON_REWARDED_AD_LOADED_EVENT;
785
1108
  }
786
1109
  else if ( MAAdFormat.appOpen == adFormat )
787
1110
  {
788
- name = @"OnAppOpenAdLoadedEvent";
1111
+ name = ON_APPOPEN_AD_LOADED_EVENT;
789
1112
  }
790
1113
  else
791
1114
  {
@@ -796,21 +1119,6 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
796
1119
  [self sendReactNativeEventWithName: name body: [self adInfoForAd: ad]];
797
1120
  }
798
1121
 
799
- - (void)sendReactNativeEventForAdLoadFailed:(NSString *)name forAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(nullable MAError *)error
800
- {
801
- NSDictionary *body = ( error ) ?
802
- @{@"adUnitId": adUnitIdentifier,
803
- @"code" : @(error.code),
804
- @"message" : error.message,
805
- @"adLoadFailureInfo" : error.adLoadFailureInfo ?: @"",
806
- @"waterfall": [self createAdWaterfallInfo: error.waterfall]}
807
- :
808
- @{@"adUnitId": adUnitIdentifier,
809
- @"code" : @(MAErrorCodeUnspecified)};
810
-
811
- [self sendReactNativeEventWithName: name body: body];
812
- }
813
-
814
1122
  - (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error
815
1123
  {
816
1124
  if ( !adUnitIdentifier )
@@ -826,15 +1134,15 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
826
1134
  }
827
1135
  else if ( self.interstitials[adUnitIdentifier] )
828
1136
  {
829
- name = @"OnInterstitialLoadFailedEvent";
1137
+ name = ON_INTERSTITIAL_LOAD_FAILED_EVENT;
830
1138
  }
831
1139
  else if ( self.rewardedAds[adUnitIdentifier] )
832
1140
  {
833
- name = @"OnRewardedAdLoadFailedEvent";
1141
+ name = ON_REWARDED_AD_LOAD_FAILED_EVENT;
834
1142
  }
835
1143
  else if ( self.appOpenAds[adUnitIdentifier] )
836
1144
  {
837
- name = @"OnAppOpenAdLoadFailedEvent";
1145
+ name = ON_APPOPEN_AD_LOAD_FAILED_EVENT;
838
1146
  }
839
1147
  else
840
1148
  {
@@ -842,7 +1150,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
842
1150
  return;
843
1151
  }
844
1152
 
845
- [self sendReactNativeEventForAdLoadFailed: name forAdUnitIdentifier: adUnitIdentifier withError: error];
1153
+ [self sendReactNativeEventWithName: name body: [self adLoadFailedInfoForAd: adUnitIdentifier withError: error]];
846
1154
  }
847
1155
 
848
1156
  - (void)didClickAd:(MAAd *)ad
@@ -851,27 +1159,23 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
851
1159
  MAAdFormat *adFormat = ad.format;
852
1160
  if ( MAAdFormat.banner == adFormat || MAAdFormat.leader == adFormat )
853
1161
  {
854
- name = @"OnBannerAdClickedEvent";
1162
+ name = ON_BANNER_AD_CLICKED_EVENT;
855
1163
  }
856
1164
  else if ( MAAdFormat.mrec == adFormat )
857
1165
  {
858
- name = @"OnMRecAdClickedEvent";
1166
+ name = ON_MREC_AD_CLICKED_EVENT;
859
1167
  }
860
1168
  else if ( MAAdFormat.interstitial == adFormat )
861
1169
  {
862
- name = @"OnInterstitialClickedEvent";
1170
+ name = ON_INTERSTITIAL_CLICKED_EVENT;
863
1171
  }
864
1172
  else if ( MAAdFormat.rewarded == adFormat )
865
1173
  {
866
- name = @"OnRewardedAdClickedEvent";
867
- }
868
- else if ( MAAdFormat.native == adFormat )
869
- {
870
- name = @"OnNativeAdClickedEvent";
1174
+ name = ON_REWARDED_AD_CLICKED_EVENT;
871
1175
  }
872
1176
  else if ( MAAdFormat.appOpen == adFormat )
873
1177
  {
874
- name = @"OnAppOpenAdClickedEvent";
1178
+ name = ON_APPOPEN_AD_CLICKED_EVENT;
875
1179
  }
876
1180
  else
877
1181
  {
@@ -891,15 +1195,15 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
891
1195
  NSString *name;
892
1196
  if ( MAAdFormat.interstitial == adFormat )
893
1197
  {
894
- name = @"OnInterstitialDisplayedEvent";
1198
+ name = ON_INTERSTITIAL_DISPLAYED_EVENT;
895
1199
  }
896
1200
  else if ( MAAdFormat.rewarded == adFormat )
897
1201
  {
898
- name = @"OnRewardedAdDisplayedEvent";
1202
+ name = ON_REWARDED_AD_DISPLAYED_EVENT;
899
1203
  }
900
1204
  else // APP OPEN
901
1205
  {
902
- name = @"OnAppOpenAdDisplayedEvent";
1206
+ name = ON_APPOPEN_AD_DISPLAYED_EVENT;
903
1207
  }
904
1208
 
905
1209
  [self sendReactNativeEventWithName: name body: [self adInfoForAd: ad]];
@@ -914,22 +1218,18 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
914
1218
  NSString *name;
915
1219
  if ( MAAdFormat.interstitial == adFormat )
916
1220
  {
917
- name = @"OnInterstitialAdFailedToDisplayEvent";
1221
+ name = ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT;
918
1222
  }
919
1223
  else if ( MAAdFormat.rewarded == adFormat )
920
1224
  {
921
- name = @"OnRewardedAdFailedToDisplayEvent";
1225
+ name = ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT;
922
1226
  }
923
1227
  else // APP OPEN
924
1228
  {
925
- name = @"OnAppOpenAdFailedToDisplayEvent";
1229
+ name = ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT;
926
1230
  }
927
1231
 
928
- NSMutableDictionary *body = [@{@"code" : @(error.code),
929
- @"message" : error.message} mutableCopy];
930
- [body addEntriesFromDictionary: [self adInfoForAd: ad]];
931
-
932
- [self sendReactNativeEventWithName: name body: body];
1232
+ [self sendReactNativeEventWithName: name body: [self adDisplayFailedInfoForAd: ad withError: error]];
933
1233
  }
934
1234
 
935
1235
  - (void)didHideAd:(MAAd *)ad
@@ -941,15 +1241,15 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
941
1241
  NSString *name;
942
1242
  if ( MAAdFormat.interstitial == adFormat )
943
1243
  {
944
- name = @"OnInterstitialHiddenEvent";
1244
+ name = ON_INTERSTITIAL_HIDDEN_EVENT;
945
1245
  }
946
1246
  else if ( MAAdFormat.rewarded == adFormat )
947
1247
  {
948
- name = @"OnRewardedAdHiddenEvent";
1248
+ name = ON_REWARDED_AD_HIDDEN_EVENT;
949
1249
  }
950
1250
  else // APP OPEN
951
1251
  {
952
- name = @"OnAppOpenAdHiddenEvent";
1252
+ name = ON_APPOPEN_AD_HIDDEN_EVENT;
953
1253
  }
954
1254
 
955
1255
  [self sendReactNativeEventWithName: name body: [self adInfoForAd: ad]];
@@ -964,7 +1264,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
964
1264
  return;
965
1265
  }
966
1266
 
967
- [self sendReactNativeEventWithName: ( MAAdFormat.mrec == adFormat ) ? @"OnMRecAdExpandedEvent" : @"OnBannerAdExpandedEvent"
1267
+ [self sendReactNativeEventWithName: ( MAAdFormat.mrec == adFormat ) ? ON_MREC_AD_EXPANDED_EVENT : ON_BANNER_AD_EXPANDED_EVENT
968
1268
  body: [self adInfoForAd: ad]];
969
1269
  }
970
1270
 
@@ -977,7 +1277,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
977
1277
  return;
978
1278
  }
979
1279
 
980
- [self sendReactNativeEventWithName: ( MAAdFormat.mrec == adFormat ) ? @"OnMRecAdCollapsedEvent" : @"OnBannerAdCollapsedEvent"
1280
+ [self sendReactNativeEventWithName: ( MAAdFormat.mrec == adFormat ) ? ON_MREC_AD_COLLAPSED_EVENT : ON_BANNER_AD_COLLAPSED_EVENT
981
1281
  body: [self adInfoForAd: ad]];
982
1282
  }
983
1283
 
@@ -987,40 +1287,31 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
987
1287
  MAAdFormat *adFormat = ad.format;
988
1288
  if ( MAAdFormat.banner == adFormat || MAAdFormat.leader == adFormat )
989
1289
  {
990
- name = @"OnBannerAdRevenuePaid";
1290
+ name = ON_BANNER_AD_REVENUE_PAID;
991
1291
  }
992
1292
  else if ( MAAdFormat.mrec == adFormat )
993
1293
  {
994
- name = @"OnMRecAdRevenuePaid";
1294
+ name = ON_MREC_AD_REVENUE_PAID;
995
1295
  }
996
1296
  else if ( MAAdFormat.interstitial == adFormat )
997
1297
  {
998
- name = @"OnInterstitialAdRevenuePaid";
1298
+ name = ON_INTERSTITIAL_AD_REVENUE_PAID;
999
1299
  }
1000
1300
  else if ( MAAdFormat.rewarded == adFormat )
1001
1301
  {
1002
- name = @"OnRewardedAdRevenuePaid";
1003
- }
1004
- else if ( MAAdFormat.native == adFormat )
1005
- {
1006
- name = @"OnNativeAdRevenuePaid";
1302
+ name = ON_REWARDED_AD_REVENUE_PAID;
1007
1303
  }
1008
1304
  else if ( MAAdFormat.appOpen == adFormat )
1009
1305
  {
1010
- name = @"OnAppOpenAdRevenuePaid";
1306
+ name = ON_APPOPEN_AD_REVENUE_PAID;
1011
1307
  }
1012
1308
  else
1013
1309
  {
1014
1310
  [self logInvalidAdFormat: adFormat];
1015
1311
  return;
1016
1312
  }
1017
-
1018
- NSMutableDictionary *body = [self adInfoForAd: ad].mutableCopy;
1019
- body[@"networkPlacement"] = ad.networkPlacement;
1020
- body[@"revenuePrecision"] = ad.revenuePrecision;
1021
- body[@"countryCode"] = self.sdk.configuration.countryCode;
1022
-
1023
- [self sendReactNativeEventWithName: name body: body];
1313
+
1314
+ [self sendReactNativeEventWithName: name body: [self adRevenueInfoForAd: ad]];
1024
1315
  }
1025
1316
 
1026
1317
  - (void)didCompleteRewardedVideoForAd:(MAAd *)ad
@@ -1050,7 +1341,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1050
1341
  @"rewardAmount": rewardAmount} mutableCopy];
1051
1342
  [body addEntriesFromDictionary: [self adInfoForAd: ad]];
1052
1343
 
1053
- [self sendReactNativeEventWithName: @"OnRewardedAdReceivedRewardEvent" body: body];
1344
+ [self sendReactNativeEventWithName: ON_REWARDED_AD_RECEIVED_REWARD_EVENT body: body];
1054
1345
  }
1055
1346
 
1056
1347
  #pragma mark - Internal Methods
@@ -1195,6 +1486,17 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1195
1486
  });
1196
1487
  }
1197
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
+
1198
1500
  - (void)startAutoRefresh:(NSString *)adUnitIdentifier adFormat:(MAAdFormat *)adFormat
1199
1501
  {
1200
1502
  dispatch_async(dispatch_get_main_queue(), ^{
@@ -1405,7 +1707,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1405
1707
  adViewWidth = self.adViewWidths[adUnitIdentifier].floatValue;
1406
1708
  }
1407
1709
  // Top center / bottom center stretches full screen
1408
- else if ( [adViewPosition isEqual: @"top_center"] || [adViewPosition isEqual: @"bottom_center"] )
1710
+ else if ( [adViewPosition isEqual: TOP_CENTER] || [adViewPosition isEqual: BOTTOM_CENTER] )
1409
1711
  {
1410
1712
  adViewWidth = CGRectGetWidth(KEY_WINDOW.bounds);
1411
1713
  }
@@ -1445,14 +1747,14 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1445
1747
  }
1446
1748
 
1447
1749
  // If top of bottom center, stretch width of screen
1448
- if ( [adViewPosition isEqual: @"top_center"] || [adViewPosition isEqual: @"bottom_center"] )
1750
+ if ( [adViewPosition isEqual: TOP_CENTER] || [adViewPosition isEqual: BOTTOM_CENTER] )
1449
1751
  {
1450
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.
1451
1753
  if ( !isAdaptiveBannerDisabled )
1452
1754
  {
1453
1755
  adView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
1454
1756
 
1455
- if ( [@"top_center" isEqual: adViewPosition] )
1757
+ if ( [TOP_CENTER isEqual: adViewPosition] )
1456
1758
  {
1457
1759
  adView.autoresizingMask |= UIViewAutoresizingFlexibleBottomMargin;
1458
1760
  }
@@ -1470,7 +1772,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1470
1772
  [self.safeAreaBackground.widthAnchor constraintEqualToConstant: adViewWidth],
1471
1773
  [self.safeAreaBackground.centerXAnchor constraintEqualToAnchor: layoutGuide.centerXAnchor]]];
1472
1774
 
1473
- if ( [adViewPosition isEqual: @"top_center"] )
1775
+ if ( [adViewPosition isEqual: TOP_CENTER] )
1474
1776
  {
1475
1777
  [constraints addObjectsFromArray: @[[adView.topAnchor constraintEqualToAnchor: layoutGuide.topAnchor],
1476
1778
  [self.safeAreaBackground.topAnchor constraintEqualToAnchor: superview.topAnchor],
@@ -1492,7 +1794,7 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1492
1794
  [constraints addObjectsFromArray: @[[adView.widthAnchor constraintEqualToConstant: adViewWidth],
1493
1795
  [adView.centerXAnchor constraintEqualToAnchor: layoutGuide.centerXAnchor]]];
1494
1796
 
1495
- if ( [adViewPosition isEqual: @"top_center"] )
1797
+ if ( [adViewPosition isEqual: TOP_CENTER] )
1496
1798
  {
1497
1799
  [constraints addObject: [adView.topAnchor constraintEqualToAnchor: layoutGuide.topAnchor constant: yOffset]];
1498
1800
  }
@@ -1510,27 +1812,27 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1510
1812
  // Assign constant width of 320 or 728
1511
1813
  [constraints addObject: [adView.widthAnchor constraintEqualToConstant: adViewWidth]];
1512
1814
 
1513
- if ( [adViewPosition isEqual: @"top_left"] )
1815
+ if ( [adViewPosition isEqual: TOP_LEFT] )
1514
1816
  {
1515
1817
  [constraints addObjectsFromArray: @[[adView.topAnchor constraintEqualToAnchor: layoutGuide.topAnchor constant: yOffset],
1516
1818
  [adView.leftAnchor constraintEqualToAnchor: superview.leftAnchor constant: xOffset]]];
1517
1819
  }
1518
- else if ( [adViewPosition isEqual: @"top_right"] )
1820
+ else if ( [adViewPosition isEqual: TOP_RIGHT] )
1519
1821
  {
1520
1822
  [constraints addObjectsFromArray: @[[adView.topAnchor constraintEqualToAnchor: layoutGuide.topAnchor constant: yOffset],
1521
1823
  [adView.rightAnchor constraintEqualToAnchor: superview.rightAnchor constant: xOffset]]];
1522
1824
  }
1523
- else if ( [adViewPosition isEqual: @"centered"] )
1825
+ else if ( [adViewPosition isEqual: CENTERED] )
1524
1826
  {
1525
1827
  [constraints addObjectsFromArray: @[[adView.centerXAnchor constraintEqualToAnchor: layoutGuide.centerXAnchor],
1526
1828
  [adView.centerYAnchor constraintEqualToAnchor: layoutGuide.centerYAnchor]]];
1527
1829
  }
1528
- else if ( [adViewPosition isEqual: @"bottom_left"] )
1830
+ else if ( [adViewPosition isEqual: BOTTOM_LEFT] )
1529
1831
  {
1530
1832
  [constraints addObjectsFromArray: @[[adView.bottomAnchor constraintEqualToAnchor: layoutGuide.bottomAnchor constant: yOffset],
1531
1833
  [adView.leftAnchor constraintEqualToAnchor: superview.leftAnchor constant: xOffset]]];
1532
1834
  }
1533
- else if ( [adViewPosition isEqual: @"bottom_right"] )
1835
+ else if ( [adViewPosition isEqual: BOTTOM_RIGHT] )
1534
1836
  {
1535
1837
  [constraints addObjectsFromArray: @[[adView.bottomAnchor constraintEqualToAnchor: layoutGuide.bottomAnchor constant: yOffset],
1536
1838
  [adView.rightAnchor constraintEqualToAnchor: superview.rightAnchor constant: xOffset]]];
@@ -1595,6 +1897,24 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1595
1897
  return ALGenderUnknown;
1596
1898
  }
1597
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
+
1598
1918
  - (ALAdContentRating)toAppLovinAdContentRating:(nullable NSNumber *)maximumAdContentRating
1599
1919
  {
1600
1920
  if ( maximumAdContentRating )
@@ -1631,6 +1951,36 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1631
1951
  @"dspName" : ad.DSPName ?: @""};
1632
1952
  }
1633
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
+
1634
1984
  #pragma mark - Waterfall Information
1635
1985
 
1636
1986
  - (NSDictionary<NSString *, id> *)createAdWaterfallInfo:(MAAdWaterfallInfo *)waterfallInfo
@@ -1703,49 +2053,99 @@ RCT_EXPORT_METHOD(setAppOpenAdExtraParameter:(NSString *)adUnitIdentifier key:(N
1703
2053
  // From RCTBridgeModule protocol
1704
2054
  - (NSArray<NSString *> *)supportedEvents
1705
2055
  {
1706
- return @[@"OnMRecAdLoadedEvent",
1707
- @"OnMRecAdLoadFailedEvent",
1708
- @"OnMRecAdClickedEvent",
1709
- @"OnMRecAdCollapsedEvent",
1710
- @"OnMRecAdExpandedEvent",
1711
- @"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,
1712
2111
 
1713
- @"OnBannerAdLoadedEvent",
1714
- @"OnBannerAdLoadFailedEvent",
1715
- @"OnBannerAdClickedEvent",
1716
- @"OnBannerAdCollapsedEvent",
1717
- @"OnBannerAdExpandedEvent",
1718
- @"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,
1719
2119
 
1720
- @"OnInterstitialLoadedEvent",
1721
- @"OnInterstitialLoadFailedEvent",
1722
- @"OnInterstitialClickedEvent",
1723
- @"OnInterstitialDisplayedEvent",
1724
- @"OnInterstitialAdFailedToDisplayEvent",
1725
- @"OnInterstitialHiddenEvent",
1726
- @"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,
1727
2128
 
1728
- @"OnRewardedAdLoadedEvent",
1729
- @"OnRewardedAdLoadFailedEvent",
1730
- @"OnRewardedAdClickedEvent",
1731
- @"OnRewardedAdDisplayedEvent",
1732
- @"OnRewardedAdFailedToDisplayEvent",
1733
- @"OnRewardedAdHiddenEvent",
1734
- @"OnRewardedAdReceivedRewardEvent",
1735
- @"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,
1736
2136
 
1737
- @"OnAppOpenAdLoadedEvent",
1738
- @"OnAppOpenAdLoadFailedEvent",
1739
- @"OnAppOpenAdClickedEvent",
1740
- @"OnAppOpenAdDisplayedEvent",
1741
- @"OnAppOpenAdFailedToDisplayEvent",
1742
- @"OnAppOpenAdHiddenEvent",
1743
- @"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,
1744
2146
 
1745
- @"OnNativeAdLoadedEvent",
1746
- @"OnNativeAdLoadFailedEvent",
1747
- @"OnNativeAdClickedEvent",
1748
- @"OnNativeAdRevenuePaid"];
2147
+ @"BANNER_AD_FORMAT_LABEL" : MAAdFormat.banner.label,
2148
+ @"MREC_AD_FORMAT_LABEL" : MAAdFormat.mrec.label};
1749
2149
  }
1750
2150
 
1751
2151
  - (void)startObserving