react-native-applovin-max 6.5.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/android/build.gradle +46 -100
  2. package/android/gradle.properties +4 -4
  3. package/android/src/main/AndroidManifest.xml +2 -2
  4. package/android/src/main/AndroidManifestNew.xml +2 -0
  5. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdView.java +123 -163
  6. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewManager.java +24 -17
  7. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXAdViewUiComponent.java +242 -0
  8. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXModule.java +297 -336
  9. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdView.java +13 -12
  10. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXNativeAdViewManager.java +11 -14
  11. package/android/src/main/java/com/applovin/reactnative/AppLovinMAXPackage.java +3 -3
  12. package/ios/AppLovinMAX.h +1 -1
  13. package/ios/AppLovinMAX.m +62 -12
  14. package/ios/AppLovinMAXAdView.h +12 -0
  15. package/ios/AppLovinMAXAdView.m +120 -142
  16. package/ios/AppLovinMAXAdViewUIComponent.h +27 -0
  17. package/ios/AppLovinMAXAdViewUIComponent.m +199 -0
  18. package/lib/commonjs/AdView.js +348 -0
  19. package/lib/commonjs/AdView.js.map +1 -0
  20. package/lib/commonjs/AppLovinMAX.js +52 -0
  21. package/lib/commonjs/AppLovinMAX.js.map +1 -0
  22. package/lib/commonjs/AppOpenAd.js +102 -0
  23. package/lib/commonjs/AppOpenAd.js.map +1 -0
  24. package/lib/commonjs/BannerAd.js +139 -0
  25. package/lib/commonjs/BannerAd.js.map +1 -0
  26. package/lib/commonjs/EventEmitter.js +32 -0
  27. package/lib/commonjs/EventEmitter.js.map +1 -0
  28. package/lib/commonjs/InterstitialAd.js +102 -0
  29. package/lib/commonjs/InterstitialAd.js.map +1 -0
  30. package/lib/commonjs/MRecAd.js +117 -0
  31. package/lib/commonjs/MRecAd.js.map +1 -0
  32. package/lib/commonjs/Privacy.js +12 -0
  33. package/lib/commonjs/Privacy.js.map +1 -0
  34. package/lib/commonjs/RewardedAd.js +116 -0
  35. package/lib/commonjs/RewardedAd.js.map +1 -0
  36. package/lib/commonjs/TargetingData.js +179 -0
  37. package/lib/commonjs/TargetingData.js.map +1 -0
  38. package/lib/commonjs/index.js +256 -0
  39. package/lib/commonjs/index.js.map +1 -0
  40. package/lib/commonjs/nativeAd/NativeAdView.js +147 -0
  41. package/lib/commonjs/nativeAd/NativeAdView.js.map +1 -0
  42. package/lib/commonjs/nativeAd/NativeAdViewComponents.js +197 -0
  43. package/lib/commonjs/nativeAd/NativeAdViewComponents.js.map +1 -0
  44. package/lib/commonjs/nativeAd/NativeAdViewProvider.js +37 -0
  45. package/lib/commonjs/nativeAd/NativeAdViewProvider.js.map +1 -0
  46. package/lib/commonjs/types/AdEvent.js +6 -0
  47. package/lib/commonjs/types/AdEvent.js.map +1 -0
  48. package/lib/commonjs/types/AdInfo.js +48 -0
  49. package/lib/commonjs/types/AdInfo.js.map +1 -0
  50. package/lib/commonjs/types/AdProps.js +6 -0
  51. package/lib/commonjs/types/AdProps.js.map +1 -0
  52. package/lib/commonjs/types/AdViewProps.js +6 -0
  53. package/lib/commonjs/types/AdViewProps.js.map +1 -0
  54. package/lib/commonjs/types/AppLovinMAX.js +6 -0
  55. package/lib/commonjs/types/AppLovinMAX.js.map +1 -0
  56. package/lib/commonjs/types/AppOpenAd.js +6 -0
  57. package/lib/commonjs/types/AppOpenAd.js.map +1 -0
  58. package/lib/commonjs/types/BannerAd.js +6 -0
  59. package/lib/commonjs/types/BannerAd.js.map +1 -0
  60. package/lib/commonjs/types/CMPError.js +6 -0
  61. package/lib/commonjs/types/CMPError.js.map +1 -0
  62. package/lib/commonjs/types/Configuration.js +6 -0
  63. package/lib/commonjs/types/Configuration.js.map +1 -0
  64. package/lib/commonjs/types/FullscreenAd.js +6 -0
  65. package/lib/commonjs/types/FullscreenAd.js.map +1 -0
  66. package/lib/commonjs/types/InterstitialAd.js +6 -0
  67. package/lib/commonjs/types/InterstitialAd.js.map +1 -0
  68. package/lib/commonjs/types/MRecAd.js +6 -0
  69. package/lib/commonjs/types/MRecAd.js.map +1 -0
  70. package/lib/commonjs/types/NativeAd.js +2 -0
  71. package/lib/commonjs/types/NativeAd.js.map +1 -0
  72. package/lib/commonjs/types/NativeAdViewProps.js +6 -0
  73. package/lib/commonjs/types/NativeAdViewProps.js.map +1 -0
  74. package/lib/commonjs/types/Privacy.js +2 -0
  75. package/lib/commonjs/types/Privacy.js.map +1 -0
  76. package/lib/commonjs/types/RewardedAd.js +6 -0
  77. package/lib/commonjs/types/RewardedAd.js.map +1 -0
  78. package/lib/commonjs/types/TargetingData.js +6 -0
  79. package/lib/commonjs/types/TargetingData.js.map +1 -0
  80. package/lib/commonjs/types/ViewAd.js +6 -0
  81. package/lib/commonjs/types/ViewAd.js.map +1 -0
  82. package/lib/commonjs/types/index.js +61 -0
  83. package/lib/commonjs/types/index.js.map +1 -0
  84. package/lib/module/AdView.js +335 -0
  85. package/lib/module/AdView.js.map +1 -0
  86. package/lib/module/AppLovinMAX.js +48 -0
  87. package/lib/module/AppLovinMAX.js.map +1 -0
  88. package/lib/module/AppOpenAd.js +96 -0
  89. package/lib/module/AppOpenAd.js.map +1 -0
  90. package/lib/module/BannerAd.js +133 -0
  91. package/lib/module/BannerAd.js.map +1 -0
  92. package/lib/module/EventEmitter.js +24 -0
  93. package/lib/module/EventEmitter.js.map +1 -0
  94. package/lib/module/InterstitialAd.js +96 -0
  95. package/lib/module/InterstitialAd.js.map +1 -0
  96. package/lib/module/MRecAd.js +111 -0
  97. package/lib/module/MRecAd.js.map +1 -0
  98. package/lib/module/Privacy.js +6 -0
  99. package/lib/module/Privacy.js.map +1 -0
  100. package/lib/module/RewardedAd.js +110 -0
  101. package/lib/module/RewardedAd.js.map +1 -0
  102. package/lib/module/TargetingData.js +175 -0
  103. package/lib/module/TargetingData.js.map +1 -0
  104. package/lib/module/index.js +14 -0
  105. package/lib/module/index.js.map +1 -0
  106. package/lib/module/nativeAd/NativeAdView.js +139 -0
  107. package/lib/module/nativeAd/NativeAdView.js.map +1 -0
  108. package/lib/module/nativeAd/NativeAdViewComponents.js +181 -0
  109. package/lib/module/nativeAd/NativeAdViewComponents.js.map +1 -0
  110. package/lib/module/nativeAd/NativeAdViewProvider.js +28 -0
  111. package/lib/module/nativeAd/NativeAdViewProvider.js.map +1 -0
  112. package/lib/module/types/AdEvent.js +2 -0
  113. package/lib/module/types/AdEvent.js.map +1 -0
  114. package/lib/module/types/AdInfo.js +52 -0
  115. package/lib/module/types/AdInfo.js.map +1 -0
  116. package/lib/module/types/AdProps.js +2 -0
  117. package/lib/module/types/AdProps.js.map +1 -0
  118. package/lib/module/types/AdViewProps.js +2 -0
  119. package/lib/module/types/AdViewProps.js.map +1 -0
  120. package/lib/module/types/AppLovinMAX.js +2 -0
  121. package/lib/module/types/AppLovinMAX.js.map +1 -0
  122. package/lib/module/types/AppOpenAd.js +2 -0
  123. package/lib/module/types/AppOpenAd.js.map +1 -0
  124. package/lib/module/types/BannerAd.js +2 -0
  125. package/lib/module/types/BannerAd.js.map +1 -0
  126. package/lib/module/types/CMPError.js +2 -0
  127. package/lib/module/types/CMPError.js.map +1 -0
  128. package/lib/module/types/Configuration.js +2 -0
  129. package/lib/module/types/Configuration.js.map +1 -0
  130. package/lib/module/types/FullscreenAd.js +2 -0
  131. package/lib/module/types/FullscreenAd.js.map +1 -0
  132. package/lib/module/types/InterstitialAd.js +2 -0
  133. package/lib/module/types/InterstitialAd.js.map +1 -0
  134. package/lib/module/types/MRecAd.js +2 -0
  135. package/lib/module/types/MRecAd.js.map +1 -0
  136. package/lib/module/types/NativeAd.js +2 -0
  137. package/lib/module/types/NativeAd.js.map +1 -0
  138. package/lib/module/types/NativeAdViewProps.js +2 -0
  139. package/lib/module/types/NativeAdViewProps.js.map +1 -0
  140. package/lib/module/types/Privacy.js +2 -0
  141. package/lib/module/types/Privacy.js.map +1 -0
  142. package/lib/module/types/RewardedAd.js +2 -0
  143. package/lib/module/types/RewardedAd.js.map +1 -0
  144. package/lib/module/types/TargetingData.js +2 -0
  145. package/lib/module/types/TargetingData.js.map +1 -0
  146. package/lib/module/types/ViewAd.js +2 -0
  147. package/lib/module/types/ViewAd.js.map +1 -0
  148. package/lib/module/types/index.js +6 -0
  149. package/lib/module/types/index.js.map +1 -0
  150. package/lib/typescript/src/AdView.d.ts +115 -0
  151. package/lib/typescript/src/AdView.d.ts.map +1 -0
  152. package/lib/typescript/src/AppLovinMAX.d.ts +73 -0
  153. package/lib/typescript/src/AppLovinMAX.d.ts.map +1 -0
  154. package/lib/typescript/src/AppOpenAd.d.ts +4 -0
  155. package/lib/typescript/src/AppOpenAd.d.ts.map +1 -0
  156. package/lib/typescript/src/BannerAd.d.ts +4 -0
  157. package/lib/typescript/src/BannerAd.d.ts.map +1 -0
  158. package/lib/typescript/src/EventEmitter.d.ts +4 -0
  159. package/lib/typescript/src/EventEmitter.d.ts.map +1 -0
  160. package/lib/typescript/src/InterstitialAd.d.ts +4 -0
  161. package/lib/typescript/src/InterstitialAd.d.ts.map +1 -0
  162. package/lib/typescript/src/MRecAd.d.ts +4 -0
  163. package/lib/typescript/src/MRecAd.d.ts.map +1 -0
  164. package/lib/typescript/src/Privacy.d.ts +3 -0
  165. package/lib/typescript/src/Privacy.d.ts.map +1 -0
  166. package/lib/typescript/src/RewardedAd.d.ts +4 -0
  167. package/lib/typescript/src/RewardedAd.d.ts.map +1 -0
  168. package/lib/typescript/src/TargetingData.d.ts +26 -0
  169. package/lib/typescript/src/TargetingData.d.ts.map +1 -0
  170. package/lib/typescript/src/index.d.ts +14 -0
  171. package/lib/typescript/src/index.d.ts.map +1 -0
  172. package/lib/typescript/src/nativeAd/NativeAdView.d.ts +42 -0
  173. package/lib/typescript/src/nativeAd/NativeAdView.d.ts.map +1 -0
  174. package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts +11 -0
  175. package/lib/typescript/src/nativeAd/NativeAdViewComponents.d.ts.map +1 -0
  176. package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts +16 -0
  177. package/lib/typescript/src/nativeAd/NativeAdViewProvider.d.ts.map +1 -0
  178. package/lib/typescript/src/types/AdEvent.d.ts +15 -0
  179. package/lib/typescript/src/types/AdEvent.d.ts.map +1 -0
  180. package/lib/typescript/src/types/AdInfo.d.ts +295 -0
  181. package/lib/typescript/src/types/AdInfo.d.ts.map +1 -0
  182. package/lib/typescript/src/types/AdProps.d.ts +58 -0
  183. package/lib/typescript/src/types/AdProps.d.ts.map +1 -0
  184. package/lib/typescript/src/types/AdViewProps.d.ts +73 -0
  185. package/lib/typescript/src/types/AdViewProps.d.ts.map +1 -0
  186. package/lib/typescript/src/types/AppLovinMAX.d.ts +133 -0
  187. package/lib/typescript/src/types/AppLovinMAX.d.ts.map +1 -0
  188. package/lib/typescript/src/types/AppOpenAd.d.ts +3 -0
  189. package/lib/typescript/src/types/AppOpenAd.d.ts.map +1 -0
  190. package/lib/typescript/src/types/BannerAd.d.ts +42 -0
  191. package/lib/typescript/src/types/BannerAd.d.ts.map +1 -0
  192. package/lib/typescript/src/types/CMPError.d.ts +20 -0
  193. package/lib/typescript/src/types/CMPError.d.ts.map +1 -0
  194. package/lib/typescript/src/types/Configuration.d.ts +33 -0
  195. package/lib/typescript/src/types/Configuration.d.ts.map +1 -0
  196. package/lib/typescript/src/types/FullscreenAd.d.ts +123 -0
  197. package/lib/typescript/src/types/FullscreenAd.d.ts.map +1 -0
  198. package/lib/typescript/src/types/InterstitialAd.d.ts +3 -0
  199. package/lib/typescript/src/types/InterstitialAd.d.ts.map +1 -0
  200. package/lib/typescript/src/types/MRecAd.d.ts +12 -0
  201. package/lib/typescript/src/types/MRecAd.d.ts.map +1 -0
  202. package/lib/typescript/src/types/NativeAd.d.ts +42 -0
  203. package/lib/typescript/src/types/NativeAd.d.ts.map +1 -0
  204. package/lib/typescript/src/types/NativeAdViewProps.d.ts +15 -0
  205. package/lib/typescript/src/types/NativeAdViewProps.d.ts.map +1 -0
  206. package/lib/typescript/src/types/Privacy.d.ts +35 -0
  207. package/lib/typescript/src/types/Privacy.d.ts.map +1 -0
  208. package/lib/typescript/src/types/RewardedAd.d.ts +18 -0
  209. package/lib/typescript/src/types/RewardedAd.d.ts.map +1 -0
  210. package/lib/typescript/src/types/TargetingData.d.ts +43 -0
  211. package/lib/typescript/src/types/TargetingData.d.ts.map +1 -0
  212. package/lib/typescript/src/types/ViewAd.d.ts +141 -0
  213. package/lib/typescript/src/types/ViewAd.d.ts.map +1 -0
  214. package/lib/typescript/src/types/index.d.ts +6 -0
  215. package/lib/typescript/src/types/index.d.ts.map +1 -0
  216. package/package.json +102 -21
  217. package/react-native-applovin-max.podspec +29 -5
  218. package/src/AdView.tsx +83 -26
  219. package/src/AppLovinMAX.ts +1 -1
  220. package/src/InterstitialAd.ts +1 -3
  221. package/src/MRecAd.ts +2 -8
  222. package/src/TargetingData.ts +2 -15
  223. package/src/index.ts +9 -10
  224. package/src/nativeAd/NativeAdView.tsx +33 -49
  225. package/src/nativeAd/NativeAdViewComponents.tsx +22 -31
  226. package/src/types/AdViewProps.ts +29 -1
  227. package/android/.project +0 -17
  228. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  229. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  230. package/android/gradle/wrapper/gradle-wrapper.properties +0 -6
  231. package/android/gradlew +0 -172
  232. package/android/gradlew.bat +0 -84
  233. package/ios/AppLovinMAX.xcodeproj/project.pbxproj +0 -368
  234. package/ios/AppLovinMAX.xcodeproj/xcshareddata/xcschemes/AppLovinMAX.xcscheme +0 -67
  235. package/ios/AppLovinMAX.xcworkspace/contents.xcworkspacedata +0 -10
  236. package/ios/AppLovinMAX.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  237. package/ios/Podfile +0 -40
  238. package/ios/Podfile.lock +0 -373
@@ -1,6 +1,5 @@
1
1
  package com.applovin.reactnative;
2
2
 
3
- import com.facebook.react.bridge.ReactApplicationContext;
4
3
  import com.facebook.react.bridge.ReadableArray;
5
4
  import com.facebook.react.bridge.ReadableMap;
6
5
  import com.facebook.react.common.MapBuilder;
@@ -17,12 +16,13 @@ import androidx.annotation.Nullable;
17
16
  * Created by Thomas So on September 26 2020
18
17
  */
19
18
  class AppLovinMAXAdViewManager
20
- extends SimpleViewManager<AppLovinMAXAdView>
19
+ extends SimpleViewManager<AppLovinMAXAdView>
21
20
  {
22
21
  private static final int COMMAND_LOAD_AD = 1;
23
22
 
24
- public AppLovinMAXAdViewManager(final ReactApplicationContext reactApplicationContext) { }
23
+ public AppLovinMAXAdViewManager() { }
25
24
 
25
+ @NonNull
26
26
  @Override
27
27
  public String getName()
28
28
  {
@@ -35,14 +35,14 @@ class AppLovinMAXAdViewManager
35
35
  {
36
36
  // mapping Android events to JavaScript events
37
37
  return MapBuilder.<String, Object>builder()
38
- .put( "onAdLoadedEvent", MapBuilder.of( "registrationName", "onAdLoadedEvent" ) )
39
- .put( "onAdLoadFailedEvent", MapBuilder.of( "registrationName", "onAdLoadFailedEvent" ) )
40
- .put( "onAdDisplayFailedEvent", MapBuilder.of( "registrationName", "onAdDisplayFailedEvent" ) )
41
- .put( "onAdClickedEvent", MapBuilder.of( "registrationName", "onAdClickedEvent" ) )
42
- .put( "onAdExpandedEvent", MapBuilder.of( "registrationName", "onAdExpandedEvent" ) )
43
- .put( "onAdCollapsedEvent", MapBuilder.of( "registrationName", "onAdCollapsedEvent" ) )
44
- .put( "onAdRevenuePaidEvent", MapBuilder.of( "registrationName", "onAdRevenuePaidEvent" ) )
45
- .build();
38
+ .put( "onAdLoadedEvent", MapBuilder.of( "registrationName", "onAdLoadedEvent" ) )
39
+ .put( "onAdLoadFailedEvent", MapBuilder.of( "registrationName", "onAdLoadFailedEvent" ) )
40
+ .put( "onAdDisplayFailedEvent", MapBuilder.of( "registrationName", "onAdDisplayFailedEvent" ) )
41
+ .put( "onAdClickedEvent", MapBuilder.of( "registrationName", "onAdClickedEvent" ) )
42
+ .put( "onAdExpandedEvent", MapBuilder.of( "registrationName", "onAdExpandedEvent" ) )
43
+ .put( "onAdCollapsedEvent", MapBuilder.of( "registrationName", "onAdCollapsedEvent" ) )
44
+ .put( "onAdRevenuePaidEvent", MapBuilder.of( "registrationName", "onAdRevenuePaidEvent" ) )
45
+ .build();
46
46
  }
47
47
 
48
48
  @Nullable
@@ -50,23 +50,22 @@ class AppLovinMAXAdViewManager
50
50
  public Map<String, Integer> getCommandsMap()
51
51
  {
52
52
  return MapBuilder.of(
53
- "loadAd", COMMAND_LOAD_AD
53
+ "loadAd", COMMAND_LOAD_AD
54
54
  );
55
55
  }
56
56
 
57
57
  @Override
58
58
  public void receiveCommand(@NonNull final AppLovinMAXAdView view, final int commandId, @Nullable final ReadableArray args)
59
59
  {
60
- switch ( commandId )
60
+ if ( commandId == COMMAND_LOAD_AD )
61
61
  {
62
- case COMMAND_LOAD_AD:
63
- view.loadAd();
64
- break;
62
+ view.loadAd();
65
63
  }
66
64
  }
67
65
 
66
+ @NonNull
68
67
  @Override
69
- protected AppLovinMAXAdView createViewInstance(final ThemedReactContext reactContext)
68
+ protected AppLovinMAXAdView createViewInstance(@NonNull final ThemedReactContext reactContext)
70
69
  {
71
70
  // NOTE: Do not set frame or backgroundColor as RN will overwrite the values set by your custom class in order to match your JavaScript component's layout props - hence wrapper
72
71
  return new AppLovinMAXAdView( reactContext );
@@ -126,6 +125,14 @@ class AppLovinMAXAdViewManager
126
125
  view.setLocalExtraParameters( value );
127
126
  }
128
127
 
128
+ @Override
129
+ public void onAfterUpdateTransaction(@NonNull final AppLovinMAXAdView view)
130
+ {
131
+ super.onAfterUpdateTransaction( view );
132
+
133
+ view.onSetProps();
134
+ }
135
+
129
136
  @Override
130
137
  public void onDropViewInstance(AppLovinMAXAdView view)
131
138
  {
@@ -0,0 +1,242 @@
1
+ package com.applovin.reactnative;
2
+
3
+ import android.view.View;
4
+
5
+ import com.applovin.mediation.MaxAd;
6
+ import com.applovin.mediation.MaxAdFormat;
7
+ import com.applovin.mediation.MaxAdListener;
8
+ import com.applovin.mediation.MaxAdRevenueListener;
9
+ import com.applovin.mediation.MaxAdViewAdListener;
10
+ import com.applovin.mediation.MaxError;
11
+ import com.applovin.mediation.ads.MaxAdView;
12
+ import com.facebook.react.bridge.ReactContext;
13
+ import com.facebook.react.bridge.WritableMap;
14
+ import com.facebook.react.uimanager.events.RCTEventEmitter;
15
+
16
+ import java.util.Map;
17
+
18
+ import androidx.annotation.NonNull;
19
+ import androidx.annotation.Nullable;
20
+
21
+ class AppLovinMAXAdViewUiComponent
22
+ implements MaxAdListener, MaxAdViewAdListener, MaxAdRevenueListener
23
+ {
24
+ private final ReactContext reactContext;
25
+ private final MaxAdView adView;
26
+
27
+ @Nullable
28
+ private AppLovinMAXAdView containerView;
29
+
30
+ public AppLovinMAXAdViewUiComponent(final String adUnitId, final MaxAdFormat adFormat, final ReactContext context)
31
+ {
32
+ reactContext = context;
33
+
34
+ adView = new MaxAdView( adUnitId, adFormat, AppLovinMAXModule.getInstance().getSdk(), context );
35
+ adView.setListener( this );
36
+ adView.setRevenueListener( this );
37
+
38
+ adView.setExtraParameter( "adaptive_banner", "true" );
39
+
40
+ // Set this extra parameter to work around a SDK bug that ignores calls to stopAutoRefresh()
41
+ adView.setExtraParameter( "allow_pause_auto_refresh_immediately", "true" );
42
+ }
43
+
44
+ public MaxAdView getAdView()
45
+ {
46
+ return adView;
47
+ }
48
+
49
+ public void setPlacement(@Nullable final String value)
50
+ {
51
+ adView.setPlacement( value );
52
+ }
53
+
54
+ public void setCustomData(@Nullable final String value)
55
+ {
56
+ adView.setCustomData( value );
57
+ }
58
+
59
+ public void setAdaptiveBannerEnabled(final boolean enabled)
60
+ {
61
+ adView.setExtraParameter( "adaptive_banner", Boolean.toString( enabled ) );
62
+ }
63
+
64
+ public void setAutoRefresh(final boolean enabled)
65
+ {
66
+ if ( enabled )
67
+ {
68
+ adView.startAutoRefresh();
69
+ }
70
+ else
71
+ {
72
+ adView.stopAutoRefresh();
73
+ }
74
+ }
75
+
76
+ public void setExtraParameters(@Nullable final Map<String, Object> extraParameters)
77
+ {
78
+ if ( extraParameters == null ) return;
79
+
80
+ for ( Map.Entry<String, Object> entry : extraParameters.entrySet() )
81
+ {
82
+ adView.setExtraParameter( entry.getKey(), (String) entry.getValue() );
83
+ }
84
+ }
85
+
86
+ public void setLocalExtraParameters(@Nullable final Map<String, Object> localExtraParameters)
87
+ {
88
+ if ( localExtraParameters == null ) return;
89
+
90
+ for ( Map.Entry<String, Object> entry : localExtraParameters.entrySet() )
91
+ {
92
+ adView.setLocalExtraParameter( entry.getKey(), entry.getValue() );
93
+ }
94
+ }
95
+
96
+ public boolean hasContainerView()
97
+ {
98
+ return containerView != null;
99
+ }
100
+
101
+ public void attachAdView(AppLovinMAXAdView view)
102
+ {
103
+ containerView = view;
104
+ containerView.addView( adView );
105
+ }
106
+
107
+ public void detachAdView()
108
+ {
109
+ if ( containerView != null )
110
+ {
111
+ containerView.removeView( adView );
112
+ containerView = null;
113
+ }
114
+ }
115
+
116
+ public void loadAd()
117
+ {
118
+ adView.loadAd();
119
+ }
120
+
121
+ public void destroy()
122
+ {
123
+ detachAdView();
124
+
125
+ adView.setListener( null );
126
+ adView.setRevenueListener( null );
127
+ adView.destroy();
128
+ }
129
+
130
+ public void measureAndLayout(int x, int y, int width, int height)
131
+ {
132
+ // https://stackoverflow.com/a/39838774/5477988
133
+ // This is required to ensure ad refreshes render correctly in RN Android due to known issue
134
+ // where `getWidth()` and `getHeight()` return 0 on attach
135
+ adView.measure(
136
+ View.MeasureSpec.makeMeasureSpec( width, View.MeasureSpec.EXACTLY ),
137
+ View.MeasureSpec.makeMeasureSpec( height, View.MeasureSpec.EXACTLY )
138
+ );
139
+
140
+ adView.layout( x, y, width, height );
141
+ }
142
+
143
+ @Override
144
+ public void onAdLoaded(@NonNull final MaxAd ad)
145
+ {
146
+ WritableMap adInfo = AppLovinMAXModule.getInstance().getAdInfo( ad );
147
+
148
+ // Copy the `adInfo` since sending the same map through the RN bridge more than once will result in `com.facebook.react.bridge.ObjectAlreadyConsumedException: Map already consumed`
149
+ AppLovinMAXModule.getInstance().sendReactNativeEvent( "OnNativeUIComponentAdViewAdLoadedEvent", adInfo.copy() );
150
+
151
+ if ( containerView != null )
152
+ {
153
+ sendReactNativeCallbackEvent( "onAdLoadedEvent", adInfo );
154
+ }
155
+ else
156
+ {
157
+ setAutoRefresh( false );
158
+ }
159
+ }
160
+
161
+ @Override
162
+ public void onAdLoadFailed(@NonNull final String adUnitId, @NonNull final MaxError error)
163
+ {
164
+ WritableMap adLoadFailedInfo = AppLovinMAXModule.getInstance().getAdLoadFailedInfo( adUnitId, error );
165
+
166
+ // Copy the `adLoadFailedInfo` since sending the same map through the RN bridge more than once will result in `com.facebook.react.bridge.ObjectAlreadyConsumedException: Map already consumed`
167
+ AppLovinMAXModule.getInstance().sendReactNativeEvent( "OnNativeUIComponentAdViewAdLoadFailedEvent", adLoadFailedInfo.copy() );
168
+
169
+ if ( containerView != null )
170
+ {
171
+ sendReactNativeCallbackEvent( "onAdLoadFailedEvent", adLoadFailedInfo );
172
+ }
173
+ }
174
+
175
+ @Override
176
+ public void onAdDisplayFailed(@NonNull final MaxAd ad, @NonNull final MaxError error)
177
+ {
178
+ if ( containerView != null )
179
+ {
180
+ WritableMap adDisplayFailedInfo = AppLovinMAXModule.getInstance().getAdDisplayFailedInfo( ad, error );
181
+ sendReactNativeCallbackEvent( "onAdDisplayFailedEvent", adDisplayFailedInfo );
182
+ }
183
+ }
184
+
185
+ @Override
186
+ public void onAdClicked(@NonNull final MaxAd ad)
187
+ {
188
+ if ( containerView != null )
189
+ {
190
+ WritableMap adInfo = AppLovinMAXModule.getInstance().getAdInfo( ad );
191
+ sendReactNativeCallbackEvent( "onAdClickedEvent", adInfo );
192
+ }
193
+ }
194
+
195
+ @Override
196
+ public void onAdExpanded(@NonNull final MaxAd ad)
197
+ {
198
+ if ( containerView != null )
199
+ {
200
+ WritableMap adInfo = AppLovinMAXModule.getInstance().getAdInfo( ad );
201
+ sendReactNativeCallbackEvent( "onAdExpandedEvent", adInfo );
202
+ }
203
+ }
204
+
205
+ @Override
206
+ public void onAdCollapsed(@NonNull final MaxAd ad)
207
+ {
208
+ if ( containerView != null )
209
+ {
210
+ WritableMap adInfo = AppLovinMAXModule.getInstance().getAdInfo( ad );
211
+ sendReactNativeCallbackEvent( "onAdCollapsedEvent", adInfo );
212
+ }
213
+ }
214
+
215
+ @Override
216
+ public void onAdRevenuePaid(@NonNull final MaxAd ad)
217
+ {
218
+ if ( containerView != null )
219
+ {
220
+ WritableMap adRevenueInfo = AppLovinMAXModule.getInstance().getAdRevenueInfo( ad );
221
+ sendReactNativeCallbackEvent( "onAdRevenuePaidEvent", adRevenueInfo );
222
+ }
223
+ }
224
+
225
+ /// Deprecated Callbacks
226
+
227
+ @Override
228
+ public void onAdDisplayed(@NonNull final MaxAd ad) { }
229
+
230
+ @Override
231
+ public void onAdHidden(@NonNull final MaxAd ad) { }
232
+
233
+ /// Utilities
234
+
235
+ private void sendReactNativeCallbackEvent(final String name, @Nullable final WritableMap params)
236
+ {
237
+ if ( containerView != null )
238
+ {
239
+ reactContext.getJSModule( RCTEventEmitter.class ).receiveEvent( containerView.getId(), name, params );
240
+ }
241
+ }
242
+ }