react-native-applovin-max 8.1.1 → 9.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.
Files changed (165) hide show
  1. package/android/build.gradle +14 -3
  2. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdView.java +33 -26
  3. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewManagerImpl.java +110 -0
  4. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewUiComponent.java +17 -15
  5. package/android/src/main/java/com/applovin/reactnative/{AppLovinMAXModule.java → AppLovinMAXModuleImpl.java} +115 -179
  6. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdView.java +84 -56
  7. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdViewManagerImpl.java +101 -0
  8. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXPackage.java +44 -11
  9. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXUtils.java +56 -0
  10. package/android/src/newarch/com/applovin/reactnative/AppLovinMAXAdViewManager.java +151 -0
  11. package/android/src/newarch/com/applovin/reactnative/AppLovinMAXModule.java +453 -0
  12. package/android/src/newarch/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +130 -0
  13. package/android/src/oldarch/com/applovin/reactnative/AppLovinMAXAdViewManager.java +128 -0
  14. package/android/src/oldarch/com/applovin/reactnative/AppLovinMAXModule.java +453 -0
  15. package/android/src/oldarch/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +93 -0
  16. package/ios/AppLovinMAX.h +8 -8
  17. package/ios/{AppLovinMAX.m → AppLovinMAX.mm} +73 -64
  18. package/ios/AppLovinMAXAdView.h +7 -2
  19. package/ios/AppLovinMAXAdView.mm +747 -0
  20. package/ios/{AppLovinMAXAdViewManager.m → AppLovinMAXAdViewManager.mm} +3 -2
  21. package/ios/{AppLovinMAXAdViewUIComponent.m → AppLovinMAXAdViewUIComponent.mm} +2 -1
  22. package/ios/AppLovinMAXNativeAdView.h +15 -4
  23. package/ios/AppLovinMAXNativeAdView.mm +745 -0
  24. package/ios/AppLovinMAXNativeAdViewManager.mm +116 -0
  25. package/lib/commonjs/AdView.js +67 -85
  26. package/lib/commonjs/AdView.js.map +1 -1
  27. package/lib/commonjs/AppLovinMAX.js +51 -10
  28. package/lib/commonjs/AppLovinMAX.js.map +1 -1
  29. package/lib/commonjs/AppOpenAd.js +8 -10
  30. package/lib/commonjs/AppOpenAd.js.map +1 -1
  31. package/lib/commonjs/BannerAd.js +19 -21
  32. package/lib/commonjs/BannerAd.js.map +1 -1
  33. package/lib/commonjs/ErrorCode.js +57 -5
  34. package/lib/commonjs/ErrorCode.js.map +1 -1
  35. package/lib/commonjs/EventEmitter.js +3 -5
  36. package/lib/commonjs/EventEmitter.js.map +1 -1
  37. package/lib/commonjs/InterstitialAd.js +8 -10
  38. package/lib/commonjs/InterstitialAd.js.map +1 -1
  39. package/lib/commonjs/MRecAd.js +14 -16
  40. package/lib/commonjs/MRecAd.js.map +1 -1
  41. package/lib/commonjs/Privacy.js +3 -5
  42. package/lib/commonjs/Privacy.js.map +1 -1
  43. package/lib/commonjs/RewardedAd.js +8 -10
  44. package/lib/commonjs/RewardedAd.js.map +1 -1
  45. package/lib/commonjs/Utils.js +25 -0
  46. package/lib/commonjs/Utils.js.map +1 -0
  47. package/lib/commonjs/nativeAd/NativeAdView.js +65 -42
  48. package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -1
  49. package/lib/commonjs/nativeAd/NativeAdViewComponents.js +51 -47
  50. package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -1
  51. package/lib/commonjs/nativeAd/NativeAdViewProvider.js +38 -8
  52. package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -1
  53. package/lib/commonjs/nativeAd/img/blank_icon.png +0 -0
  54. package/lib/commonjs/specs/AppLovinMAXAdViewNativeComponent.js +14 -0
  55. package/lib/commonjs/specs/AppLovinMAXAdViewNativeComponent.js.map +1 -0
  56. package/lib/commonjs/specs/AppLovinMAXNativeAdViewNativeComponent.js +14 -0
  57. package/lib/commonjs/specs/AppLovinMAXNativeAdViewNativeComponent.js.map +1 -0
  58. package/lib/commonjs/specs/NativeAppLovinMAXModule.js +9 -0
  59. package/lib/commonjs/specs/NativeAppLovinMAXModule.js.map +1 -0
  60. package/lib/commonjs/types/AdInfo.js +10 -3
  61. package/lib/commonjs/types/AdInfo.js.map +1 -1
  62. package/lib/module/AdView.js +62 -81
  63. package/lib/module/AdView.js.map +1 -1
  64. package/lib/module/AppLovinMAX.js +47 -7
  65. package/lib/module/AppLovinMAX.js.map +1 -1
  66. package/lib/module/AppOpenAd.js +1 -4
  67. package/lib/module/AppOpenAd.js.map +1 -1
  68. package/lib/module/BannerAd.js +1 -4
  69. package/lib/module/BannerAd.js.map +1 -1
  70. package/lib/module/ErrorCode.js +55 -4
  71. package/lib/module/ErrorCode.js.map +1 -1
  72. package/lib/module/EventEmitter.js +2 -4
  73. package/lib/module/EventEmitter.js.map +1 -1
  74. package/lib/module/InterstitialAd.js +2 -5
  75. package/lib/module/InterstitialAd.js.map +1 -1
  76. package/lib/module/MRecAd.js +1 -4
  77. package/lib/module/MRecAd.js.map +1 -1
  78. package/lib/module/Privacy.js +1 -4
  79. package/lib/module/Privacy.js.map +1 -1
  80. package/lib/module/RewardedAd.js +2 -5
  81. package/lib/module/RewardedAd.js.map +1 -1
  82. package/lib/module/Utils.js +17 -0
  83. package/lib/module/Utils.js.map +1 -0
  84. package/lib/module/nativeAd/NativeAdView.js +63 -40
  85. package/lib/module/nativeAd/NativeAdView.js.map +1 -1
  86. package/lib/module/nativeAd/NativeAdViewComponents.js +53 -49
  87. package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -1
  88. package/lib/module/nativeAd/NativeAdViewProvider.js +39 -9
  89. package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -1
  90. package/lib/module/nativeAd/img/blank_icon.png +0 -0
  91. package/lib/module/specs/AppLovinMAXAdViewNativeComponent.js +7 -0
  92. package/lib/module/specs/AppLovinMAXAdViewNativeComponent.js.map +1 -0
  93. package/lib/module/specs/AppLovinMAXNativeAdViewNativeComponent.js +7 -0
  94. package/lib/module/specs/AppLovinMAXNativeAdViewNativeComponent.js.map +1 -0
  95. package/lib/module/specs/NativeAppLovinMAXModule.js +3 -0
  96. package/lib/module/specs/NativeAppLovinMAXModule.js.map +1 -0
  97. package/lib/module/types/AdInfo.js +10 -4
  98. package/lib/module/types/AdInfo.js.map +1 -1
  99. package/lib/typescript/src/AdView.d.ts +16 -16
  100. package/lib/typescript/src/AdView.d.ts.map +1 -1
  101. package/lib/typescript/src/AppLovinMAX.d.ts.map +1 -1
  102. package/lib/typescript/src/AppOpenAd.d.ts.map +1 -1
  103. package/lib/typescript/src/BannerAd.d.ts.map +1 -1
  104. package/lib/typescript/src/ErrorCode.d.ts.map +1 -1
  105. package/lib/typescript/src/EventEmitter.d.ts.map +1 -1
  106. package/lib/typescript/src/InterstitialAd.d.ts.map +1 -1
  107. package/lib/typescript/src/MRecAd.d.ts.map +1 -1
  108. package/lib/typescript/src/Privacy.d.ts.map +1 -1
  109. package/lib/typescript/src/RewardedAd.d.ts.map +1 -1
  110. package/lib/typescript/src/Utils.d.ts +16 -0
  111. package/lib/typescript/src/Utils.d.ts.map +1 -0
  112. package/lib/typescript/src/nativeAd/NativeAdView.d.ts.map +1 -1
  113. package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts +1 -1
  114. package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -1
  115. package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts +14 -5
  116. package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -1
  117. package/lib/typescript/src/specs/AppLovinMAXAdViewNativeComponent.d.ts +86 -0
  118. package/lib/typescript/src/specs/AppLovinMAXAdViewNativeComponent.d.ts.map +1 -0
  119. package/lib/typescript/src/specs/AppLovinMAXNativeAdViewNativeComponent.d.ts +80 -0
  120. package/lib/typescript/src/specs/AppLovinMAXNativeAdViewNativeComponent.d.ts.map +1 -0
  121. package/lib/typescript/src/specs/NativeAppLovinMAXModule.d.ts +132 -0
  122. package/lib/typescript/src/specs/NativeAppLovinMAXModule.d.ts.map +1 -0
  123. package/lib/typescript/src/types/AdEvent.d.ts +2 -2
  124. package/lib/typescript/src/types/AdEvent.d.ts.map +1 -1
  125. package/lib/typescript/src/types/AdInfo.d.ts +24 -25
  126. package/lib/typescript/src/types/AdInfo.d.ts.map +1 -1
  127. package/lib/typescript/src/types/AdProps.d.ts +4 -4
  128. package/lib/typescript/src/types/AdProps.d.ts.map +1 -1
  129. package/lib/typescript/src/types/FullscreenAd.d.ts +4 -4
  130. package/lib/typescript/src/types/FullscreenAd.d.ts.map +1 -1
  131. package/lib/typescript/src/types/NativeAd.d.ts +4 -0
  132. package/lib/typescript/src/types/NativeAd.d.ts.map +1 -1
  133. package/lib/typescript/src/types/ViewAd.d.ts +4 -4
  134. package/lib/typescript/src/types/ViewAd.d.ts.map +1 -1
  135. package/package.json +9 -1
  136. package/react-native-applovin-max.podspec +3 -3
  137. package/src/AdView.tsx +56 -121
  138. package/src/AppLovinMAX.ts +7 -8
  139. package/src/AppOpenAd.ts +3 -5
  140. package/src/BannerAd.ts +3 -5
  141. package/src/ErrorCode.ts +1 -3
  142. package/src/EventEmitter.ts +2 -3
  143. package/src/InterstitialAd.ts +4 -6
  144. package/src/MRecAd.ts +3 -5
  145. package/src/Privacy.ts +1 -3
  146. package/src/RewardedAd.ts +4 -6
  147. package/src/Utils.ts +26 -0
  148. package/src/nativeAd/NativeAdView.tsx +65 -65
  149. package/src/nativeAd/NativeAdViewComponents.tsx +32 -60
  150. package/src/nativeAd/NativeAdViewProvider.tsx +37 -12
  151. package/src/nativeAd/img/blank_icon.png +0 -0
  152. package/src/specs/AppLovinMAXAdViewNativeComponent.ts +96 -0
  153. package/src/specs/AppLovinMAXNativeAdViewNativeComponent.ts +89 -0
  154. package/src/specs/NativeAppLovinMAXModule.ts +208 -0
  155. package/src/types/AdEvent.ts +2 -2
  156. package/src/types/AdInfo.ts +28 -28
  157. package/src/types/AdProps.ts +4 -4
  158. package/src/types/FullscreenAd.ts +4 -4
  159. package/src/types/NativeAd.ts +5 -0
  160. package/src/types/ViewAd.ts +4 -4
  161. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewManager.java +0 -149
  162. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +0 -163
  163. package/ios/AppLovinMAXAdView.m +0 -323
  164. package/ios/AppLovinMAXNativeAdView.m +0 -432
  165. package/ios/AppLovinMAXNativeAdViewManager.m +0 -64
@@ -1,163 +0,0 @@
1
- package com.applovin.reactnative;
2
-
3
- import com.facebook.react.bridge.ReadableArray;
4
- import com.facebook.react.bridge.ReadableMap;
5
- import com.facebook.react.common.MapBuilder;
6
- import com.facebook.react.uimanager.ThemedReactContext;
7
- import com.facebook.react.uimanager.ViewGroupManager;
8
- import com.facebook.react.uimanager.annotations.ReactProp;
9
-
10
- import java.util.Map;
11
-
12
- import androidx.annotation.NonNull;
13
- import androidx.annotation.Nullable;
14
-
15
- public class AppLovinMAXNativeAdViewManager
16
- extends ViewGroupManager<AppLovinMAXNativeAdView>
17
- {
18
- public static final String REACT_CLASS = "AppLovinMAXNativeAdView";
19
-
20
- public final int COMMAND_LOAD_AD = 1;
21
-
22
- public AppLovinMAXNativeAdViewManager() { }
23
-
24
- @NonNull
25
- @Override
26
- protected AppLovinMAXNativeAdView createViewInstance(@NonNull final ThemedReactContext reactContext)
27
- {
28
- return new AppLovinMAXNativeAdView( reactContext );
29
- }
30
-
31
- @NonNull
32
- @Override
33
- public String getName()
34
- {
35
- return REACT_CLASS;
36
- }
37
-
38
- /// Callback to JavaScript
39
-
40
- @Nullable
41
- @Override
42
- public Map<String, Object> getExportedCustomDirectEventTypeConstants()
43
- {
44
- // mapping Android events to JavaScript events
45
- return MapBuilder.<String, Object>builder()
46
- .put( AppLovinMAXAdEvents.ON_AD_LOADED_EVENT, MapBuilder.of( "registrationName", AppLovinMAXAdEvents.ON_AD_LOADED_EVENT ) )
47
- .put( AppLovinMAXAdEvents.ON_AD_LOAD_FAILED_EVENT, MapBuilder.of( "registrationName", AppLovinMAXAdEvents.ON_AD_LOAD_FAILED_EVENT ) )
48
- .put( AppLovinMAXAdEvents.ON_AD_CLICKED_EVENT, MapBuilder.of( "registrationName", AppLovinMAXAdEvents.ON_AD_CLICKED_EVENT ) )
49
- .put( AppLovinMAXAdEvents.ON_AD_REVENUE_PAID_EVENT, MapBuilder.of( "registrationName", AppLovinMAXAdEvents.ON_AD_REVENUE_PAID_EVENT ) )
50
- .build();
51
- }
52
-
53
- /// Call from JavaScript
54
-
55
- @Nullable
56
- @Override
57
- public Map<String, Integer> getCommandsMap()
58
- {
59
- return MapBuilder.of(
60
- "loadAd", COMMAND_LOAD_AD
61
- );
62
- }
63
-
64
- // NOTE: the method is deprecated but the new version won't work
65
- @Override
66
- public void receiveCommand(@NonNull final AppLovinMAXNativeAdView root, final int commandId, @Nullable final ReadableArray args)
67
- {
68
- if ( commandId == COMMAND_LOAD_AD )
69
- {
70
- root.loadAd();
71
- }
72
- }
73
-
74
- /// Property Setters
75
-
76
- @ReactProp(name = "adUnitId")
77
- public void setAdUnitId(final AppLovinMAXNativeAdView view, final String value)
78
- {
79
- view.setAdUnitId( value );
80
- }
81
-
82
- @ReactProp(name = "placement")
83
- public void setPlacement(final AppLovinMAXNativeAdView view, @Nullable final String value)
84
- {
85
- view.setPlacement( value );
86
- }
87
-
88
- @ReactProp(name = "customData")
89
- public void setCustomData(final AppLovinMAXNativeAdView view, @Nullable final String value)
90
- {
91
- view.setCustomData( value );
92
- }
93
-
94
- @ReactProp(name = "extraParameters")
95
- public void setExtraParameters(final AppLovinMAXNativeAdView view, @Nullable final ReadableMap value)
96
- {
97
- view.setExtraParameters( value );
98
- }
99
-
100
- @ReactProp(name = "localExtraParameters")
101
- public void setLocalExtraParameters(final AppLovinMAXNativeAdView view, @Nullable final ReadableMap value)
102
- {
103
- view.setLocalExtraParameters( value );
104
- }
105
-
106
- @ReactProp(name = "titleView")
107
- public void setTitleView(final AppLovinMAXNativeAdView view, final int value)
108
- {
109
- view.setTitleView( value );
110
- }
111
-
112
- @ReactProp(name = "advertiserView")
113
- public void setAdvertiserView(final AppLovinMAXNativeAdView view, final int value)
114
- {
115
- view.setAdvertiserView( value );
116
- }
117
-
118
- @ReactProp(name = "bodyView")
119
- public void setBodyView(final AppLovinMAXNativeAdView view, final int value)
120
- {
121
- view.setBodyView( value );
122
- }
123
-
124
- @ReactProp(name = "callToActionView")
125
- public void setCallToActionView(final AppLovinMAXNativeAdView view, final int value)
126
- {
127
- view.setCallToActionView( value );
128
- }
129
-
130
- @ReactProp(name = "iconView")
131
- public void setIconView(final AppLovinMAXNativeAdView view, final int value)
132
- {
133
- view.setIconView( value );
134
- }
135
-
136
- @ReactProp(name = "optionsView")
137
- public void setOptionsView(final AppLovinMAXNativeAdView view, final int value)
138
- {
139
- view.setOptionsView( value );
140
- }
141
-
142
- @ReactProp(name = "mediaView")
143
- public void setMediaView(final AppLovinMAXNativeAdView view, final int value)
144
- {
145
- view.setMediaView( value );
146
- }
147
-
148
- @Override
149
- public void onAfterUpdateTransaction(@NonNull final AppLovinMAXNativeAdView view)
150
- {
151
- super.onAfterUpdateTransaction( view );
152
-
153
- view.onSetProps();
154
- }
155
-
156
- @Override
157
- public void onDropViewInstance(@NonNull final AppLovinMAXNativeAdView view)
158
- {
159
- view.destroy();
160
-
161
- super.onDropViewInstance( view );
162
- }
163
- }
@@ -1,323 +0,0 @@
1
- //
2
- // AppLovinMAXAdView.m
3
- // AppLovin MAX React Native Module
4
- //
5
- // Copyright © 2022 AppLovin. All rights reserved.
6
- //
7
-
8
- #import <AppLovinSDK/AppLovinSDK.h>
9
- #import "AppLovinMAX.h"
10
- #import "AppLovinMAXAdView.h"
11
- #import "AppLovinMAXAdViewUIComponent.h"
12
-
13
- @interface AppLovinMAXAdView()
14
-
15
- @property (nonatomic, strong, nullable) AppLovinMAXAdViewUIComponent *uiComponent; // nil when unmounted
16
-
17
- // The following properties are updated from RN layer via the view manager
18
- @property (nonatomic, copy) NSString *adUnitId;
19
- @property (nonatomic, weak) MAAdFormat *adFormat;
20
- @property (nonatomic, copy) NSNumber *adViewId;
21
- @property (nonatomic, copy, nullable) NSString *placement;
22
- @property (nonatomic, copy, nullable) NSString *customData;
23
- @property (nonatomic, assign, readonly, getter=isAdaptiveBannerEnabled) BOOL adaptiveBannerEnabled;
24
- @property (nonatomic, assign, readonly, getter=isAutoRefreshEnabled) BOOL autoRefresh;
25
- @property (nonatomic, assign, readonly, getter=isLoadOnMount) BOOL loadOnMount;
26
- @property (nonatomic, copy, nullable) NSDictionary<NSString *, id> *extraParameters;
27
- @property (nonatomic, copy, nullable) NSDictionary<NSString *, id> *localExtraParameters;
28
-
29
- @end
30
-
31
- @implementation AppLovinMAXAdView
32
-
33
- static NSMutableDictionary<NSNumber *, AppLovinMAXAdViewUIComponent *> *uiComponentInstances;
34
- static NSMutableDictionary<NSNumber *, AppLovinMAXAdViewUIComponent *> *preloadedUIComponentInstances;
35
-
36
- + (void)initialize
37
- {
38
- [super initialize];
39
- uiComponentInstances = [NSMutableDictionary dictionaryWithCapacity: 2];
40
- preloadedUIComponentInstances = [NSMutableDictionary dictionaryWithCapacity: 2];
41
- }
42
-
43
-
44
- // Returns an MAAdView to support Amazon integrations. This method returns the first instance that
45
- // matches the Ad Unit ID, consistent with the behavior introduced when this feature was first
46
- // implemented.
47
- + (nullable MAAdView *)sharedWithAdUnitIdentifier:(NSString *)adUnitIdentifier
48
- {
49
- for ( id key in preloadedUIComponentInstances )
50
- {
51
- AppLovinMAXAdViewUIComponent *uiComponent = preloadedUIComponentInstances[key];
52
- if ( [uiComponent.adUnitIdentifier isEqualToString: adUnitIdentifier] )
53
- {
54
- return uiComponent.adView;
55
- }
56
- }
57
-
58
- for ( id key in uiComponentInstances )
59
- {
60
- AppLovinMAXAdViewUIComponent *uiComponent = uiComponentInstances[key];
61
- if ( [uiComponent.adUnitIdentifier isEqualToString: adUnitIdentifier] )
62
- {
63
- return uiComponent.adView;
64
- }
65
- }
66
-
67
- return nil;
68
- }
69
-
70
- + (BOOL)hasPreloadedAdViewForIdentifier:(NSNumber *)adViewId
71
- {
72
- return preloadedUIComponentInstances[adViewId];
73
- }
74
-
75
- + (void)preloadNativeUIComponentAdView:(NSString *)adUnitIdentifier
76
- adFormat:(MAAdFormat *)adFormat
77
- placement:(nullable NSString *)placement
78
- customData:(nullable NSString *)customData
79
- extraParameters:(nullable NSDictionary<NSString *, id> *)extraParameters
80
- localExtraParameters:(nullable NSDictionary<NSString *, id> *)localExtraParameters
81
- withPromiseResolver:(RCTPromiseResolveBlock)resolve
82
- withPromiseRejecter:(RCTPromiseRejectBlock)reject
83
- {
84
- AppLovinMAXAdViewUIComponent *preloadedUIComponent = [[AppLovinMAXAdViewUIComponent alloc] initWithAdUnitIdentifier: adUnitIdentifier adFormat: adFormat];
85
- preloadedUIComponentInstances[@(preloadedUIComponent.hash)] = preloadedUIComponent;
86
-
87
- preloadedUIComponent.placement = placement;
88
- preloadedUIComponent.customData = customData;
89
- preloadedUIComponent.extraParameters = extraParameters;
90
- preloadedUIComponent.localExtraParameters = localExtraParameters;
91
-
92
- [preloadedUIComponent loadAd];
93
-
94
- resolve(@(preloadedUIComponent.hash));
95
- }
96
-
97
- + (void)destroyNativeUIComponentAdView:(NSNumber *)adViewId
98
- withPromiseResolver:(RCTPromiseResolveBlock)resolve
99
- withPromiseRejecter:(RCTPromiseRejectBlock)reject
100
- {
101
- AppLovinMAXAdViewUIComponent *preloadedUIComponent = preloadedUIComponentInstances[adViewId];
102
- if ( !preloadedUIComponent )
103
- {
104
- reject(RCTErrorUnspecified, @"No preloaded AdView found to destroy", nil);
105
- return;
106
- }
107
-
108
- if ( [preloadedUIComponent hasContainerView] )
109
- {
110
- reject(RCTErrorUnspecified, @"Cannot destroy - the preloaded AdView is currently in use", nil);
111
- return;
112
- }
113
-
114
- [preloadedUIComponentInstances removeObjectForKey: adViewId];
115
-
116
- [preloadedUIComponent detachAdView];
117
- [preloadedUIComponent destroy];
118
-
119
- resolve(nil);
120
- }
121
-
122
- - (void)setAdUnitId:(NSString *)adUnitId
123
- {
124
- // Ad Unit ID must be set prior to creating MAAdView
125
- if ( self.uiComponent )
126
- {
127
- [[AppLovinMAX shared] log: @"Attempting to set Ad Unit ID %@ after the native UI component is created", adUnitId];
128
- return;
129
- }
130
-
131
- _adUnitId = adUnitId;
132
- }
133
-
134
- - (void)setAdFormat:(NSString *)adFormat
135
- {
136
- // Ad format must be set prior to creating MAAdView
137
- if ( self.uiComponent )
138
- {
139
- [[AppLovinMAX shared] log: @"Attempting to set ad format %@ after the native UI component is created", adFormat];
140
- return;
141
- }
142
-
143
- if ( [MAAdFormat.banner.label isEqualToString: adFormat] )
144
- {
145
- _adFormat = DEVICE_SPECIFIC_ADVIEW_AD_FORMAT;
146
- }
147
- else if ( [MAAdFormat.mrec.label isEqualToString: adFormat] )
148
- {
149
- _adFormat = MAAdFormat.mrec;
150
- }
151
- else
152
- {
153
- [[AppLovinMAX shared] log: @"Attempting to set an invalid ad format of \"%@\" for %@", adFormat, self.adUnitId];
154
- }
155
- }
156
-
157
- - (void)setAdViewId:(NSNumber *)adViewId
158
- {
159
- _adViewId = adViewId;
160
- }
161
-
162
- - (void)setPlacement:(NSString *)placement
163
- {
164
- _placement = placement;
165
-
166
- if ( self.uiComponent )
167
- {
168
- self.uiComponent.placement = placement;
169
- }
170
- }
171
-
172
- - (void)setCustomData:(NSString *)customData
173
- {
174
- _customData = customData;
175
-
176
- if ( self.uiComponent )
177
- {
178
- self.uiComponent.customData = customData;
179
- }
180
- }
181
-
182
- - (void)setAdaptiveBannerEnabled:(BOOL)adaptiveBannerEnabled
183
- {
184
- _adaptiveBannerEnabled = adaptiveBannerEnabled;
185
-
186
- if ( self.uiComponent )
187
- {
188
- self.uiComponent.adaptiveBannerEnabled = adaptiveBannerEnabled;
189
- }
190
- }
191
-
192
- - (void)setAutoRefresh:(BOOL)autoRefresh
193
- {
194
- _autoRefresh = autoRefresh;
195
-
196
- if ( self.uiComponent )
197
- {
198
- self.uiComponent.autoRefreshEnabled = autoRefresh;
199
- }
200
- }
201
-
202
- - (void)setLoadOnMount:(BOOL)loadOnMount
203
- {
204
- _loadOnMount = loadOnMount;
205
- }
206
-
207
- // Invoked after all the JavaScript properties are set when mounting AdView
208
- - (void)didSetProps:(NSArray<NSString *> *)changedProps
209
- {
210
- [self attachAdViewIfNeeded];
211
- }
212
-
213
- - (void)attachAdViewIfNeeded
214
- {
215
- // Re-assign in case of race condition
216
- NSString *adUnitId = self.adUnitId;
217
- MAAdFormat *adFormat = self.adFormat;
218
-
219
- dispatch_async(dispatch_get_main_queue(), ^{
220
-
221
- if ( ![AppLovinMAX shared].sdk )
222
- {
223
- [[AppLovinMAX shared] logUninitializedAccessError: @"AppLovinMAXAdView.attachAdViewIfNeeded"];
224
- return;
225
- }
226
-
227
- if ( ![adUnitId al_isValidString] )
228
- {
229
- [[AppLovinMAX shared] log: @"Attempting to attach a native UI component without Ad Unit ID"];
230
- return;
231
- }
232
-
233
- if ( !adFormat )
234
- {
235
- [[AppLovinMAX shared] log: @"Attempting to attach a native UI component without ad format"];
236
- return;
237
- }
238
-
239
- if ( self.uiComponent )
240
- {
241
- [[AppLovinMAX shared] log: @"Attempting to re-attach with existing AdView (%@) for Ad Unit ID %@", @(self.uiComponent.hash), self.adUnitId];
242
- return;
243
- }
244
-
245
- self.uiComponent = preloadedUIComponentInstances[self.adViewId];
246
- if ( self.uiComponent )
247
- {
248
- // Attach the preloaded uiComponent if possible, otherwise create a new one for the same adUnitId
249
- if ( ![self.uiComponent hasContainerView] )
250
- {
251
- [[AppLovinMAX shared] log: @"Mounting the preloaded AdView (%@) for Ad Unit ID %@", self.adViewId, self.adUnitId];
252
-
253
- self.uiComponent.adaptiveBannerEnabled = [self isAdaptiveBannerEnabled];
254
- self.uiComponent.autoRefreshEnabled = [self isAutoRefreshEnabled];
255
- [self.uiComponent attachAdView: self];
256
- return;
257
- }
258
- }
259
-
260
- self.uiComponent = [[AppLovinMAXAdViewUIComponent alloc] initWithAdUnitIdentifier: adUnitId adFormat: adFormat];
261
- self.adViewId = @(self.uiComponent.hash);
262
- uiComponentInstances[self.adViewId] = self.uiComponent;
263
-
264
- [[AppLovinMAX shared] log: @"Mounting a new AdView (%@) for Ad Unit ID %@", self.adViewId, self.adUnitId];
265
-
266
- self.uiComponent.placement = self.placement;
267
- self.uiComponent.customData = self.customData;
268
- self.uiComponent.extraParameters = self.extraParameters;
269
- self.uiComponent.localExtraParameters = self.localExtraParameters;
270
- self.uiComponent.adaptiveBannerEnabled = [self isAdaptiveBannerEnabled];
271
- self.uiComponent.autoRefreshEnabled = [self isAutoRefreshEnabled];
272
-
273
- [self.uiComponent attachAdView: self];
274
-
275
- if ( [self isLoadOnMount] )
276
- {
277
- [self.uiComponent loadAd];
278
- }
279
- });
280
- }
281
-
282
- - (void)loadAd
283
- {
284
- if ( !self.uiComponent )
285
- {
286
- [[AppLovinMAX shared] log: @"Attempting to load uninitialized native UI component for %@", self.adUnitId];
287
- return;
288
- }
289
-
290
- [self.uiComponent loadAd];
291
- }
292
-
293
- - (void)didMoveToWindow
294
- {
295
- [super didMoveToWindow];
296
-
297
- // This view is unmounted
298
- if ( !self.window && !self.superview )
299
- {
300
- if ( self.uiComponent )
301
- {
302
- [self.uiComponent detachAdView];
303
-
304
- AppLovinMAXAdViewUIComponent *preloadedUIComponent = preloadedUIComponentInstances[self.adViewId];
305
-
306
- if ( self.uiComponent == preloadedUIComponent )
307
- {
308
- [[AppLovinMAX shared] log: @"Unmounting the preloaded AdView (%@) for Ad Unit ID %@", self.adViewId, self.adUnitId];
309
-
310
- self.uiComponent.autoRefreshEnabled = NO;
311
- }
312
- else
313
- {
314
- [[AppLovinMAX shared] log: @"Unmounting the AdView (%@) to destroy for Ad Unit ID %@", self.adViewId, self.adUnitId];
315
-
316
- [uiComponentInstances removeObjectForKey: self.adViewId];
317
- [self.uiComponent destroy];
318
- }
319
- }
320
- }
321
- }
322
-
323
- @end