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/android/build.gradle +2 -12
- package/android/gradle.properties +0 -1
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdView.java +85 -23
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewManager.java +39 -11
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXModule.java +712 -229
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdView.java +107 -39
- package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +17 -7
- package/ios/AppLovinMAX.h +22 -2
- package/ios/AppLovinMAX.m +587 -187
- package/ios/AppLovinMAXAdView.m +43 -12
- package/ios/AppLovinMAXAdViewManager.m +10 -0
- package/ios/AppLovinMAXNativeAdView.m +86 -41
- package/ios/AppLovinMAXNativeAdViewManager.m +7 -3
- package/package.json +1 -1
- package/react-native-applovin-max.podspec +1 -1
- package/src/AppLovinMAXAdView.js +163 -62
- package/src/AppLovinMAXEventListeners.js +419 -0
- package/src/NativeAdComponents.js +39 -46
- package/src/NativeAdView.js +79 -34
- package/src/TargetingData.js +35 -3
- package/src/index.js +115 -336
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
|
-
|
|
182
|
+
RCT_EXPORT_METHOD(isInitialized:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
|
|
138
183
|
{
|
|
139
|
-
|
|
184
|
+
resolve(@([self isPluginInitialized] && [self isSDKInitialized]));
|
|
140
185
|
}
|
|
141
186
|
|
|
142
|
-
RCT_EXPORT_METHOD(initialize:(NSString *)pluginVersion :(NSString *)sdkKey :(
|
|
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
|
-
|
|
161
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
307
|
+
RCT_EXPORT_METHOD(isTablet:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
|
|
273
308
|
{
|
|
274
|
-
|
|
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
|
-
|
|
328
|
+
RCT_EXPORT_METHOD(hasUserConsent:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
|
|
308
329
|
{
|
|
309
|
-
|
|
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
|
-
|
|
338
|
+
RCT_EXPORT_METHOD(isAgeRestrictedUser:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
|
|
318
339
|
{
|
|
319
|
-
|
|
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
|
-
|
|
348
|
+
RCT_EXPORT_METHOD(isDoNotSell:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
|
|
328
349
|
{
|
|
329
|
-
|
|
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
|
-
|
|
373
|
+
RCT_EXPORT_METHOD(isMuted:(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
|
|
353
374
|
{
|
|
354
|
-
|
|
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
|
-
|
|
792
|
+
RCT_EXPORT_METHOD(getAdaptiveBannerHeightForWidth:(CGFloat)width :(RCTPromiseResolveBlock)resolve :(RCTPromiseRejectBlock)reject)
|
|
623
793
|
{
|
|
624
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 ) ?
|
|
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 =
|
|
1103
|
+
name = ON_INTERSTITIAL_LOADED_EVENT;
|
|
777
1104
|
}
|
|
778
1105
|
else if ( MAAdFormat.rewarded == adFormat )
|
|
779
1106
|
{
|
|
780
|
-
name =
|
|
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 =
|
|
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 =
|
|
1137
|
+
name = ON_INTERSTITIAL_LOAD_FAILED_EVENT;
|
|
830
1138
|
}
|
|
831
1139
|
else if ( self.rewardedAds[adUnitIdentifier] )
|
|
832
1140
|
{
|
|
833
|
-
name =
|
|
1141
|
+
name = ON_REWARDED_AD_LOAD_FAILED_EVENT;
|
|
834
1142
|
}
|
|
835
1143
|
else if ( self.appOpenAds[adUnitIdentifier] )
|
|
836
1144
|
{
|
|
837
|
-
name =
|
|
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
|
|
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 =
|
|
1162
|
+
name = ON_BANNER_AD_CLICKED_EVENT;
|
|
855
1163
|
}
|
|
856
1164
|
else if ( MAAdFormat.mrec == adFormat )
|
|
857
1165
|
{
|
|
858
|
-
name =
|
|
1166
|
+
name = ON_MREC_AD_CLICKED_EVENT;
|
|
859
1167
|
}
|
|
860
1168
|
else if ( MAAdFormat.interstitial == adFormat )
|
|
861
1169
|
{
|
|
862
|
-
name =
|
|
1170
|
+
name = ON_INTERSTITIAL_CLICKED_EVENT;
|
|
863
1171
|
}
|
|
864
1172
|
else if ( MAAdFormat.rewarded == adFormat )
|
|
865
1173
|
{
|
|
866
|
-
name =
|
|
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 =
|
|
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 =
|
|
1198
|
+
name = ON_INTERSTITIAL_DISPLAYED_EVENT;
|
|
895
1199
|
}
|
|
896
1200
|
else if ( MAAdFormat.rewarded == adFormat )
|
|
897
1201
|
{
|
|
898
|
-
name =
|
|
1202
|
+
name = ON_REWARDED_AD_DISPLAYED_EVENT;
|
|
899
1203
|
}
|
|
900
1204
|
else // APP OPEN
|
|
901
1205
|
{
|
|
902
|
-
name =
|
|
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 =
|
|
1221
|
+
name = ON_INTERSTITIAL_AD_FAILED_TO_DISPLAY_EVENT;
|
|
918
1222
|
}
|
|
919
1223
|
else if ( MAAdFormat.rewarded == adFormat )
|
|
920
1224
|
{
|
|
921
|
-
name =
|
|
1225
|
+
name = ON_REWARDED_AD_FAILED_TO_DISPLAY_EVENT;
|
|
922
1226
|
}
|
|
923
1227
|
else // APP OPEN
|
|
924
1228
|
{
|
|
925
|
-
name =
|
|
1229
|
+
name = ON_APPOPEN_AD_FAILED_TO_DISPLAY_EVENT;
|
|
926
1230
|
}
|
|
927
1231
|
|
|
928
|
-
|
|
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 =
|
|
1244
|
+
name = ON_INTERSTITIAL_HIDDEN_EVENT;
|
|
945
1245
|
}
|
|
946
1246
|
else if ( MAAdFormat.rewarded == adFormat )
|
|
947
1247
|
{
|
|
948
|
-
name =
|
|
1248
|
+
name = ON_REWARDED_AD_HIDDEN_EVENT;
|
|
949
1249
|
}
|
|
950
1250
|
else // APP OPEN
|
|
951
1251
|
{
|
|
952
|
-
name =
|
|
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 ) ?
|
|
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 ) ?
|
|
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 =
|
|
1290
|
+
name = ON_BANNER_AD_REVENUE_PAID;
|
|
991
1291
|
}
|
|
992
1292
|
else if ( MAAdFormat.mrec == adFormat )
|
|
993
1293
|
{
|
|
994
|
-
name =
|
|
1294
|
+
name = ON_MREC_AD_REVENUE_PAID;
|
|
995
1295
|
}
|
|
996
1296
|
else if ( MAAdFormat.interstitial == adFormat )
|
|
997
1297
|
{
|
|
998
|
-
name =
|
|
1298
|
+
name = ON_INTERSTITIAL_AD_REVENUE_PAID;
|
|
999
1299
|
}
|
|
1000
1300
|
else if ( MAAdFormat.rewarded == adFormat )
|
|
1001
1301
|
{
|
|
1002
|
-
name =
|
|
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 =
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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 ( [
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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 @[
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
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
|
-
@"
|
|
1714
|
-
@"
|
|
1715
|
-
@"
|
|
1716
|
-
@"
|
|
1717
|
-
@"
|
|
1718
|
-
@"
|
|
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
|
-
@"
|
|
1721
|
-
@"
|
|
1722
|
-
@"
|
|
1723
|
-
@"
|
|
1724
|
-
@"
|
|
1725
|
-
@"
|
|
1726
|
-
@"
|
|
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
|
-
@"
|
|
1729
|
-
@"
|
|
1730
|
-
@"
|
|
1731
|
-
@"
|
|
1732
|
-
@"
|
|
1733
|
-
@"
|
|
1734
|
-
@"
|
|
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
|
-
@"
|
|
1738
|
-
@"
|
|
1739
|
-
@"
|
|
1740
|
-
@"
|
|
1741
|
-
@"
|
|
1742
|
-
@"
|
|
1743
|
-
@"
|
|
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
|
-
@"
|
|
1746
|
-
@"
|
|
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
|