@javascriptcommon/react-native-google-mobile-ads 16.3.3

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 (626) hide show
  1. package/LICENSE +32 -0
  2. package/README.md +181 -0
  3. package/RNGoogleMobileAds.podspec +74 -0
  4. package/__tests__/banner.test.tsx +53 -0
  5. package/__tests__/consent.test.ts +33 -0
  6. package/__tests__/googleMobileAds.test.ts +108 -0
  7. package/__tests__/interstitial.test.ts +140 -0
  8. package/__tests__/nativeEventEmitter.test.ts +72 -0
  9. package/__tests__/requestOptions.test.tsx +82 -0
  10. package/__tests__/rewarded.test.tsx +4 -0
  11. package/__tests__/showOptions.test.tsx +4 -0
  12. package/android/.editorconfig +10 -0
  13. package/android/app-json.gradle +69 -0
  14. package/android/build.gradle +149 -0
  15. package/android/lint.xml +5 -0
  16. package/android/settings.gradle +1 -0
  17. package/android/src/main/AndroidManifest.xml +23 -0
  18. package/android/src/main/java/io/invertase/googlemobileads/OnNativeEvent.kt +23 -0
  19. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeAppModule.java +152 -0
  20. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsAppOpenModule.kt +92 -0
  21. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java +303 -0
  22. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsCommon.java +277 -0
  23. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsConsentModule.java +293 -0
  24. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsEvent.java +76 -0
  25. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsFullScreenAdModule.kt +201 -0
  26. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsInterstitialModule.kt +92 -0
  27. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsMediaViewManager.java +79 -0
  28. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsModule.kt +178 -0
  29. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsNativeAdViewManager.java +164 -0
  30. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsNativeModule.kt +172 -0
  31. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsPackage.kt +113 -0
  32. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedInterstitialModule.kt +127 -0
  33. package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedModule.kt +121 -0
  34. package/android/src/main/java/io/invertase/googlemobileads/common/RCTConvert.java +111 -0
  35. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeAdView.java +128 -0
  36. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeApp.java +34 -0
  37. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeEvent.java +41 -0
  38. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeEventEmitter.java +150 -0
  39. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeInitProvider.java +77 -0
  40. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeJSON.java +107 -0
  41. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeMeta.java +92 -0
  42. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeModule.java +96 -0
  43. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativePreferences.java +86 -0
  44. package/android/src/main/java/io/invertase/googlemobileads/common/SharedUtils.java +429 -0
  45. package/android/src/main/java/io/invertase/googlemobileads/common/TaskExecutorService.java +124 -0
  46. package/android/src/main/java/io/invertase/googlemobileads/interfaces/ContextProvider.java +30 -0
  47. package/android/src/main/java/io/invertase/googlemobileads/interfaces/NativeError.java +28 -0
  48. package/android/src/main/java/io/invertase/googlemobileads/interfaces/NativeEvent.java +26 -0
  49. package/android/src/oldarch/com/facebook/react/viewmanagers/RNGoogleMobileAdsMediaViewManagerDelegate.java +32 -0
  50. package/android/src/oldarch/com/facebook/react/viewmanagers/RNGoogleMobileAdsMediaViewManagerInterface.java +10 -0
  51. package/android/src/oldarch/com/facebook/react/viewmanagers/RNGoogleMobileAdsNativeViewManagerDelegate.java +36 -0
  52. package/android/src/oldarch/com/facebook/react/viewmanagers/RNGoogleMobileAdsNativeViewManagerInterface.java +10 -0
  53. package/android/src/oldarch/io/invertase/googlemobileads/NativeGoogleMobileAdsNativeModuleSpec.kt +18 -0
  54. package/app.plugin.js +1 -0
  55. package/babel.config.js +8 -0
  56. package/docs/ad-inspector.mdx +47 -0
  57. package/docs/common-reasons-for-ads-not-showing.mdx +111 -0
  58. package/docs/displaying-ads-hook.mdx +103 -0
  59. package/docs/displaying-ads.mdx +512 -0
  60. package/docs/european-user-consent.mdx +315 -0
  61. package/docs/img/logo_admob_192px.svg +19 -0
  62. package/docs/impression-level-ad-revenue.mdx +41 -0
  63. package/docs/index.mdx +508 -0
  64. package/docs/mediation.mdx +323 -0
  65. package/docs/migrating-to-v15.mdx +7 -0
  66. package/docs/migrating-to-v5.mdx +63 -0
  67. package/docs/migrating-to-v6.mdx +111 -0
  68. package/docs/native-ads.mdx +385 -0
  69. package/docs/testing.mdx +17 -0
  70. package/docs/video-ad_volume-control.mdx +49 -0
  71. package/docs.json +36 -0
  72. package/ios/RNGoogleMobileAds/RNGoogleMobileAds-Bridging-Header.h +5 -0
  73. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.h +36 -0
  74. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.mm +104 -0
  75. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerComponent.h +44 -0
  76. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerComponent.m +221 -0
  77. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerView.h +34 -0
  78. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerView.mm +282 -0
  79. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerViewManager.mm +87 -0
  80. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsCommon.h +72 -0
  81. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsCommon.mm +248 -0
  82. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsConsentModule.h +36 -0
  83. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsConsentModule.mm +356 -0
  84. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenAd.h +53 -0
  85. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenAd.mm +220 -0
  86. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.h +36 -0
  87. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.mm +80 -0
  88. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.h +36 -0
  89. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.mm +106 -0
  90. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsMediaView.h +52 -0
  91. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsMediaView.mm +155 -0
  92. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsModule.h +32 -0
  93. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsModule.mm +180 -0
  94. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsNativeModule.h +35 -0
  95. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsNativeModule.mm +321 -0
  96. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsNativeView.h +51 -0
  97. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsNativeView.mm +251 -0
  98. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedInterstitialModule.h +37 -0
  99. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedInterstitialModule.mm +106 -0
  100. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.h +36 -0
  101. package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.mm +104 -0
  102. package/ios/RNGoogleMobileAds/common/RNAppModule.h +24 -0
  103. package/ios/RNGoogleMobileAds/common/RNAppModule.mm +95 -0
  104. package/ios/RNGoogleMobileAds/common/RNRCTEventEmitter.h +73 -0
  105. package/ios/RNGoogleMobileAds/common/RNRCTEventEmitter.mm +150 -0
  106. package/ios/RNGoogleMobileAds/common/RNSharedUtils.h +43 -0
  107. package/ios/RNGoogleMobileAds/common/RNSharedUtils.mm +34 -0
  108. package/ios/RNGoogleMobileAds.xcodeproj/project.pbxproj +377 -0
  109. package/ios/RNGoogleMobileAds.xcodeproj/xcshareddata/IDETemplateMacros.plist +24 -0
  110. package/ios_config.sh +192 -0
  111. package/jest.config.js +7 -0
  112. package/jest.setup.ts +92 -0
  113. package/lib/commonjs/AdEventType.js +72 -0
  114. package/lib/commonjs/AdEventType.js.map +1 -0
  115. package/lib/commonjs/AdsConsent.js +117 -0
  116. package/lib/commonjs/AdsConsent.js.map +1 -0
  117. package/lib/commonjs/AdsConsentPurposes.js +180 -0
  118. package/lib/commonjs/AdsConsentPurposes.js.map +1 -0
  119. package/lib/commonjs/AdsConsentSpecialFeatures.js +54 -0
  120. package/lib/commonjs/AdsConsentSpecialFeatures.js.map +1 -0
  121. package/lib/commonjs/BannerAdSize.js +75 -0
  122. package/lib/commonjs/BannerAdSize.js.map +1 -0
  123. package/lib/commonjs/GAMAdEventType.js +44 -0
  124. package/lib/commonjs/GAMAdEventType.js.map +1 -0
  125. package/lib/commonjs/MaxAdContentRating.js +42 -0
  126. package/lib/commonjs/MaxAdContentRating.js.map +1 -0
  127. package/lib/commonjs/MobileAds.js +63 -0
  128. package/lib/commonjs/MobileAds.js.map +1 -0
  129. package/lib/commonjs/NativeAdEventType.js +50 -0
  130. package/lib/commonjs/NativeAdEventType.js.map +1 -0
  131. package/lib/commonjs/RewardedAdEventType.js +66 -0
  132. package/lib/commonjs/RewardedAdEventType.js.map +1 -0
  133. package/lib/commonjs/TestIds.js +66 -0
  134. package/lib/commonjs/TestIds.js.map +1 -0
  135. package/lib/commonjs/ads/AppOpenAd.js +54 -0
  136. package/lib/commonjs/ads/AppOpenAd.js.map +1 -0
  137. package/lib/commonjs/ads/BannerAd.js +45 -0
  138. package/lib/commonjs/ads/BannerAd.js.map +1 -0
  139. package/lib/commonjs/ads/BaseAd.js +155 -0
  140. package/lib/commonjs/ads/BaseAd.js.map +1 -0
  141. package/lib/commonjs/ads/GAMBannerAd.js +49 -0
  142. package/lib/commonjs/ads/GAMBannerAd.js.map +1 -0
  143. package/lib/commonjs/ads/GAMInterstitialAd.js +42 -0
  144. package/lib/commonjs/ads/GAMInterstitialAd.js.map +1 -0
  145. package/lib/commonjs/ads/InterstitialAd.js +115 -0
  146. package/lib/commonjs/ads/InterstitialAd.js.map +1 -0
  147. package/lib/commonjs/ads/MobileAd.js +153 -0
  148. package/lib/commonjs/ads/MobileAd.js.map +1 -0
  149. package/lib/commonjs/ads/RewardedAd.js +128 -0
  150. package/lib/commonjs/ads/RewardedAd.js.map +1 -0
  151. package/lib/commonjs/ads/RewardedInterstitialAd.js +128 -0
  152. package/lib/commonjs/ads/RewardedInterstitialAd.js.map +1 -0
  153. package/lib/commonjs/ads/native-ad/NativeAd.js +123 -0
  154. package/lib/commonjs/ads/native-ad/NativeAd.js.map +1 -0
  155. package/lib/commonjs/ads/native-ad/NativeAdContext.js +26 -0
  156. package/lib/commonjs/ads/native-ad/NativeAdContext.js.map +1 -0
  157. package/lib/commonjs/ads/native-ad/NativeAdView.js +52 -0
  158. package/lib/commonjs/ads/native-ad/NativeAdView.js.map +1 -0
  159. package/lib/commonjs/ads/native-ad/NativeAsset.js +70 -0
  160. package/lib/commonjs/ads/native-ad/NativeAsset.js.map +1 -0
  161. package/lib/commonjs/ads/native-ad/NativeMediaView.js +61 -0
  162. package/lib/commonjs/ads/native-ad/NativeMediaView.js.map +1 -0
  163. package/lib/commonjs/common/constants.js +17 -0
  164. package/lib/commonjs/common/constants.js.map +1 -0
  165. package/lib/commonjs/common/debounce.js +18 -0
  166. package/lib/commonjs/common/debounce.js.map +1 -0
  167. package/lib/commonjs/common/index.js +47 -0
  168. package/lib/commonjs/common/index.js.map +1 -0
  169. package/lib/commonjs/common/ref.js +46 -0
  170. package/lib/commonjs/common/ref.js.map +1 -0
  171. package/lib/commonjs/common/validate.js +132 -0
  172. package/lib/commonjs/common/validate.js.map +1 -0
  173. package/lib/commonjs/declarations.d.js +2 -0
  174. package/lib/commonjs/declarations.d.js.map +1 -0
  175. package/lib/commonjs/hooks/useAppOpenAd.js +44 -0
  176. package/lib/commonjs/hooks/useAppOpenAd.js.map +1 -0
  177. package/lib/commonjs/hooks/useForeground.js +45 -0
  178. package/lib/commonjs/hooks/useForeground.js.map +1 -0
  179. package/lib/commonjs/hooks/useFullScreenAd.js +121 -0
  180. package/lib/commonjs/hooks/useFullScreenAd.js.map +1 -0
  181. package/lib/commonjs/hooks/useInterstitialAd.js +44 -0
  182. package/lib/commonjs/hooks/useInterstitialAd.js.map +1 -0
  183. package/lib/commonjs/hooks/useRewardedAd.js +44 -0
  184. package/lib/commonjs/hooks/useRewardedAd.js.map +1 -0
  185. package/lib/commonjs/hooks/useRewardedInterstitialAd.js +44 -0
  186. package/lib/commonjs/hooks/useRewardedInterstitialAd.js.map +1 -0
  187. package/lib/commonjs/index.js +337 -0
  188. package/lib/commonjs/index.js.map +1 -0
  189. package/lib/commonjs/internal/GoogleMobileAdsNativeEventEmitter.js +54 -0
  190. package/lib/commonjs/internal/GoogleMobileAdsNativeEventEmitter.js.map +1 -0
  191. package/lib/commonjs/internal/NativeError.js +53 -0
  192. package/lib/commonjs/internal/NativeError.js.map +1 -0
  193. package/lib/commonjs/internal/SharedEventEmitter.js +27 -0
  194. package/lib/commonjs/internal/SharedEventEmitter.js.map +1 -0
  195. package/lib/commonjs/package.json +1 -0
  196. package/lib/commonjs/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts +62 -0
  197. package/lib/commonjs/specs/components/GoogleMobileAdsMediaViewNativeComponent.ts +30 -0
  198. package/lib/commonjs/specs/components/GoogleMobileAdsNativeViewNativeComponent.ts +45 -0
  199. package/lib/commonjs/specs/modules/NativeAppModule.js +24 -0
  200. package/lib/commonjs/specs/modules/NativeAppModule.js.map +1 -0
  201. package/lib/commonjs/specs/modules/NativeAppOpenModule.js +25 -0
  202. package/lib/commonjs/specs/modules/NativeAppOpenModule.js.map +1 -0
  203. package/lib/commonjs/specs/modules/NativeConsentModule.js +105 -0
  204. package/lib/commonjs/specs/modules/NativeConsentModule.js.map +1 -0
  205. package/lib/commonjs/specs/modules/NativeGoogleMobileAdsModule.js +25 -0
  206. package/lib/commonjs/specs/modules/NativeGoogleMobileAdsModule.js.map +1 -0
  207. package/lib/commonjs/specs/modules/NativeGoogleMobileAdsNativeModule.js +25 -0
  208. package/lib/commonjs/specs/modules/NativeGoogleMobileAdsNativeModule.js.map +1 -0
  209. package/lib/commonjs/specs/modules/NativeInterstitialModule.js +25 -0
  210. package/lib/commonjs/specs/modules/NativeInterstitialModule.js.map +1 -0
  211. package/lib/commonjs/specs/modules/NativeRewardedInterstitialModule.js +25 -0
  212. package/lib/commonjs/specs/modules/NativeRewardedInterstitialModule.js.map +1 -0
  213. package/lib/commonjs/specs/modules/NativeRewardedModule.js +25 -0
  214. package/lib/commonjs/specs/modules/NativeRewardedModule.js.map +1 -0
  215. package/lib/commonjs/types/AdEventListener.js +6 -0
  216. package/lib/commonjs/types/AdEventListener.js.map +1 -0
  217. package/lib/commonjs/types/AdEventsListener.js +6 -0
  218. package/lib/commonjs/types/AdEventsListener.js.map +1 -0
  219. package/lib/commonjs/types/AdShowOptions.js +2 -0
  220. package/lib/commonjs/types/AdShowOptions.js.map +1 -0
  221. package/lib/commonjs/types/AdStates.js +6 -0
  222. package/lib/commonjs/types/AdStates.js.map +1 -0
  223. package/lib/commonjs/types/AdapterStatus.js +21 -0
  224. package/lib/commonjs/types/AdapterStatus.js.map +1 -0
  225. package/lib/commonjs/types/AppEvent.js +2 -0
  226. package/lib/commonjs/types/AppEvent.js.map +1 -0
  227. package/lib/commonjs/types/BannerAdProps.js +6 -0
  228. package/lib/commonjs/types/BannerAdProps.js.map +1 -0
  229. package/lib/commonjs/types/MobileAd.interface.js +6 -0
  230. package/lib/commonjs/types/MobileAd.interface.js.map +1 -0
  231. package/lib/commonjs/types/MobileAdsModule.interface.js +6 -0
  232. package/lib/commonjs/types/MobileAdsModule.interface.js.map +1 -0
  233. package/lib/commonjs/types/NativeAdRequestOptions.js +37 -0
  234. package/lib/commonjs/types/NativeAdRequestOptions.js.map +1 -0
  235. package/lib/commonjs/types/PaidEventListener.js +6 -0
  236. package/lib/commonjs/types/PaidEventListener.js.map +1 -0
  237. package/lib/commonjs/types/RequestConfiguration.js +6 -0
  238. package/lib/commonjs/types/RequestConfiguration.js.map +1 -0
  239. package/lib/commonjs/types/RequestOptions.js +2 -0
  240. package/lib/commonjs/types/RequestOptions.js.map +1 -0
  241. package/lib/commonjs/types/RewardedAdReward.js +2 -0
  242. package/lib/commonjs/types/RewardedAdReward.js.map +1 -0
  243. package/lib/commonjs/types/index.js +138 -0
  244. package/lib/commonjs/types/index.js.map +1 -0
  245. package/lib/commonjs/validateAdRequestConfiguration.js +57 -0
  246. package/lib/commonjs/validateAdRequestConfiguration.js.map +1 -0
  247. package/lib/commonjs/validateAdRequestOptions.js +121 -0
  248. package/lib/commonjs/validateAdRequestOptions.js.map +1 -0
  249. package/lib/commonjs/validateAdShowOptions.js +41 -0
  250. package/lib/commonjs/validateAdShowOptions.js.map +1 -0
  251. package/lib/commonjs/validateNativeAdRequestOptions.js +51 -0
  252. package/lib/commonjs/validateNativeAdRequestOptions.js.map +1 -0
  253. package/lib/commonjs/version.js +9 -0
  254. package/lib/commonjs/version.js.map +1 -0
  255. package/lib/module/AdEventType.js +69 -0
  256. package/lib/module/AdEventType.js.map +1 -0
  257. package/lib/module/AdsConsent.js +113 -0
  258. package/lib/module/AdsConsent.js.map +1 -0
  259. package/lib/module/AdsConsentPurposes.js +177 -0
  260. package/lib/module/AdsConsentPurposes.js.map +1 -0
  261. package/lib/module/AdsConsentSpecialFeatures.js +51 -0
  262. package/lib/module/AdsConsentSpecialFeatures.js.map +1 -0
  263. package/lib/module/BannerAdSize.js +72 -0
  264. package/lib/module/BannerAdSize.js.map +1 -0
  265. package/lib/module/GAMAdEventType.js +41 -0
  266. package/lib/module/GAMAdEventType.js.map +1 -0
  267. package/lib/module/MaxAdContentRating.js +39 -0
  268. package/lib/module/MaxAdContentRating.js.map +1 -0
  269. package/lib/module/MobileAds.js +57 -0
  270. package/lib/module/MobileAds.js.map +1 -0
  271. package/lib/module/NativeAdEventType.js +46 -0
  272. package/lib/module/NativeAdEventType.js.map +1 -0
  273. package/lib/module/RewardedAdEventType.js +63 -0
  274. package/lib/module/RewardedAdEventType.js.map +1 -0
  275. package/lib/module/TestIds.js +62 -0
  276. package/lib/module/TestIds.js.map +1 -0
  277. package/lib/module/ads/AppOpenAd.js +48 -0
  278. package/lib/module/ads/AppOpenAd.js.map +1 -0
  279. package/lib/module/ads/BannerAd.js +39 -0
  280. package/lib/module/ads/BannerAd.js.map +1 -0
  281. package/lib/module/ads/BaseAd.js +149 -0
  282. package/lib/module/ads/BaseAd.js.map +1 -0
  283. package/lib/module/ads/GAMBannerAd.js +43 -0
  284. package/lib/module/ads/GAMBannerAd.js.map +1 -0
  285. package/lib/module/ads/GAMInterstitialAd.js +37 -0
  286. package/lib/module/ads/GAMInterstitialAd.js.map +1 -0
  287. package/lib/module/ads/InterstitialAd.js +110 -0
  288. package/lib/module/ads/InterstitialAd.js.map +1 -0
  289. package/lib/module/ads/MobileAd.js +148 -0
  290. package/lib/module/ads/MobileAd.js.map +1 -0
  291. package/lib/module/ads/RewardedAd.js +123 -0
  292. package/lib/module/ads/RewardedAd.js.map +1 -0
  293. package/lib/module/ads/RewardedInterstitialAd.js +123 -0
  294. package/lib/module/ads/RewardedInterstitialAd.js.map +1 -0
  295. package/lib/module/ads/native-ad/NativeAd.js +117 -0
  296. package/lib/module/ads/native-ad/NativeAd.js.map +1 -0
  297. package/lib/module/ads/native-ad/NativeAdContext.js +22 -0
  298. package/lib/module/ads/native-ad/NativeAdContext.js.map +1 -0
  299. package/lib/module/ads/native-ad/NativeAdView.js +45 -0
  300. package/lib/module/ads/native-ad/NativeAdView.js.map +1 -0
  301. package/lib/module/ads/native-ad/NativeAsset.js +65 -0
  302. package/lib/module/ads/native-ad/NativeAsset.js.map +1 -0
  303. package/lib/module/ads/native-ad/NativeMediaView.js +54 -0
  304. package/lib/module/ads/native-ad/NativeMediaView.js.map +1 -0
  305. package/lib/module/common/constants.js +13 -0
  306. package/lib/module/common/constants.js.map +1 -0
  307. package/lib/module/common/debounce.js +13 -0
  308. package/lib/module/common/debounce.js.map +1 -0
  309. package/lib/module/common/index.js +28 -0
  310. package/lib/module/common/index.js.map +1 -0
  311. package/lib/module/common/ref.js +41 -0
  312. package/lib/module/common/ref.js.map +1 -0
  313. package/lib/module/common/validate.js +119 -0
  314. package/lib/module/common/validate.js.map +1 -0
  315. package/lib/module/declarations.d.js +2 -0
  316. package/lib/module/declarations.d.js.map +1 -0
  317. package/lib/module/hooks/useAppOpenAd.js +40 -0
  318. package/lib/module/hooks/useAppOpenAd.js.map +1 -0
  319. package/lib/module/hooks/useForeground.js +42 -0
  320. package/lib/module/hooks/useForeground.js.map +1 -0
  321. package/lib/module/hooks/useFullScreenAd.js +117 -0
  322. package/lib/module/hooks/useFullScreenAd.js.map +1 -0
  323. package/lib/module/hooks/useInterstitialAd.js +40 -0
  324. package/lib/module/hooks/useInterstitialAd.js.map +1 -0
  325. package/lib/module/hooks/useRewardedAd.js +40 -0
  326. package/lib/module/hooks/useRewardedAd.js.map +1 -0
  327. package/lib/module/hooks/useRewardedInterstitialAd.js +40 -0
  328. package/lib/module/hooks/useRewardedInterstitialAd.js.map +1 -0
  329. package/lib/module/index.js +54 -0
  330. package/lib/module/index.js.map +1 -0
  331. package/lib/module/internal/GoogleMobileAdsNativeEventEmitter.js +49 -0
  332. package/lib/module/internal/GoogleMobileAdsNativeEventEmitter.js.map +1 -0
  333. package/lib/module/internal/NativeError.js +48 -0
  334. package/lib/module/internal/NativeError.js.map +1 -0
  335. package/lib/module/internal/SharedEventEmitter.js +22 -0
  336. package/lib/module/internal/SharedEventEmitter.js.map +1 -0
  337. package/lib/module/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts +62 -0
  338. package/lib/module/specs/components/GoogleMobileAdsMediaViewNativeComponent.ts +30 -0
  339. package/lib/module/specs/components/GoogleMobileAdsNativeViewNativeComponent.ts +45 -0
  340. package/lib/module/specs/modules/NativeAppModule.js +21 -0
  341. package/lib/module/specs/modules/NativeAppModule.js.map +1 -0
  342. package/lib/module/specs/modules/NativeAppOpenModule.js +22 -0
  343. package/lib/module/specs/modules/NativeAppOpenModule.js.map +1 -0
  344. package/lib/module/specs/modules/NativeConsentModule.js +108 -0
  345. package/lib/module/specs/modules/NativeConsentModule.js.map +1 -0
  346. package/lib/module/specs/modules/NativeGoogleMobileAdsModule.js +22 -0
  347. package/lib/module/specs/modules/NativeGoogleMobileAdsModule.js.map +1 -0
  348. package/lib/module/specs/modules/NativeGoogleMobileAdsNativeModule.js +22 -0
  349. package/lib/module/specs/modules/NativeGoogleMobileAdsNativeModule.js.map +1 -0
  350. package/lib/module/specs/modules/NativeInterstitialModule.js +22 -0
  351. package/lib/module/specs/modules/NativeInterstitialModule.js.map +1 -0
  352. package/lib/module/specs/modules/NativeRewardedInterstitialModule.js +22 -0
  353. package/lib/module/specs/modules/NativeRewardedInterstitialModule.js.map +1 -0
  354. package/lib/module/specs/modules/NativeRewardedModule.js +22 -0
  355. package/lib/module/specs/modules/NativeRewardedModule.js.map +1 -0
  356. package/lib/module/types/AdEventListener.js +4 -0
  357. package/lib/module/types/AdEventListener.js.map +1 -0
  358. package/lib/module/types/AdEventsListener.js +4 -0
  359. package/lib/module/types/AdEventsListener.js.map +1 -0
  360. package/lib/module/types/AdShowOptions.js +2 -0
  361. package/lib/module/types/AdShowOptions.js.map +1 -0
  362. package/lib/module/types/AdStates.js +4 -0
  363. package/lib/module/types/AdStates.js.map +1 -0
  364. package/lib/module/types/AdapterStatus.js +18 -0
  365. package/lib/module/types/AdapterStatus.js.map +1 -0
  366. package/lib/module/types/AppEvent.js +2 -0
  367. package/lib/module/types/AppEvent.js.map +1 -0
  368. package/lib/module/types/BannerAdProps.js +4 -0
  369. package/lib/module/types/BannerAdProps.js.map +1 -0
  370. package/lib/module/types/MobileAd.interface.js +4 -0
  371. package/lib/module/types/MobileAd.interface.js.map +1 -0
  372. package/lib/module/types/MobileAdsModule.interface.js +4 -0
  373. package/lib/module/types/MobileAdsModule.interface.js.map +1 -0
  374. package/lib/module/types/NativeAdRequestOptions.js +34 -0
  375. package/lib/module/types/NativeAdRequestOptions.js.map +1 -0
  376. package/lib/module/types/PaidEventListener.js +4 -0
  377. package/lib/module/types/PaidEventListener.js.map +1 -0
  378. package/lib/module/types/RequestConfiguration.js +4 -0
  379. package/lib/module/types/RequestConfiguration.js.map +1 -0
  380. package/lib/module/types/RequestOptions.js +2 -0
  381. package/lib/module/types/RequestOptions.js.map +1 -0
  382. package/lib/module/types/RewardedAdReward.js +2 -0
  383. package/lib/module/types/RewardedAdReward.js.map +1 -0
  384. package/lib/module/types/index.js +32 -0
  385. package/lib/module/types/index.js.map +1 -0
  386. package/lib/module/validateAdRequestConfiguration.js +53 -0
  387. package/lib/module/validateAdRequestConfiguration.js.map +1 -0
  388. package/lib/module/validateAdRequestOptions.js +117 -0
  389. package/lib/module/validateAdRequestOptions.js.map +1 -0
  390. package/lib/module/validateAdShowOptions.js +37 -0
  391. package/lib/module/validateAdShowOptions.js.map +1 -0
  392. package/lib/module/validateNativeAdRequestOptions.js +47 -0
  393. package/lib/module/validateNativeAdRequestOptions.js.map +1 -0
  394. package/lib/module/version.js +5 -0
  395. package/lib/module/version.js.map +1 -0
  396. package/lib/typescript/AdEventType.d.ts +49 -0
  397. package/lib/typescript/AdEventType.d.ts.map +1 -0
  398. package/lib/typescript/AdsConsent.d.ts +3 -0
  399. package/lib/typescript/AdsConsent.d.ts.map +1 -0
  400. package/lib/typescript/AdsConsentPurposes.d.ts +149 -0
  401. package/lib/typescript/AdsConsentPurposes.d.ts.map +1 -0
  402. package/lib/typescript/AdsConsentSpecialFeatures.d.ts +23 -0
  403. package/lib/typescript/AdsConsentSpecialFeatures.d.ts.map +1 -0
  404. package/lib/typescript/BannerAdSize.d.ts +91 -0
  405. package/lib/typescript/BannerAdSize.d.ts.map +1 -0
  406. package/lib/typescript/GAMAdEventType.d.ts +21 -0
  407. package/lib/typescript/GAMAdEventType.d.ts.map +1 -0
  408. package/lib/typescript/MaxAdContentRating.d.ts +19 -0
  409. package/lib/typescript/MaxAdContentRating.d.ts.map +1 -0
  410. package/lib/typescript/MobileAds.d.ts +15 -0
  411. package/lib/typescript/MobileAds.d.ts.map +1 -0
  412. package/lib/typescript/NativeAdEventType.d.ts +43 -0
  413. package/lib/typescript/NativeAdEventType.d.ts.map +1 -0
  414. package/lib/typescript/RewardedAdEventType.d.ts +43 -0
  415. package/lib/typescript/RewardedAdEventType.d.ts.map +1 -0
  416. package/lib/typescript/TestIds.d.ts +19 -0
  417. package/lib/typescript/TestIds.d.ts.map +1 -0
  418. package/lib/typescript/ads/AppOpenAd.d.ts +12 -0
  419. package/lib/typescript/ads/AppOpenAd.d.ts.map +1 -0
  420. package/lib/typescript/ads/BannerAd.d.ts +8 -0
  421. package/lib/typescript/ads/BannerAd.d.ts.map +1 -0
  422. package/lib/typescript/ads/BaseAd.d.ts +4 -0
  423. package/lib/typescript/ads/BaseAd.d.ts.map +1 -0
  424. package/lib/typescript/ads/GAMBannerAd.d.ts +9 -0
  425. package/lib/typescript/ads/GAMBannerAd.d.ts.map +1 -0
  426. package/lib/typescript/ads/GAMInterstitialAd.d.ts +34 -0
  427. package/lib/typescript/ads/GAMInterstitialAd.d.ts.map +1 -0
  428. package/lib/typescript/ads/InterstitialAd.d.ts +73 -0
  429. package/lib/typescript/ads/InterstitialAd.d.ts.map +1 -0
  430. package/lib/typescript/ads/MobileAd.d.ts +54 -0
  431. package/lib/typescript/ads/MobileAd.d.ts.map +1 -0
  432. package/lib/typescript/ads/RewardedAd.d.ts +83 -0
  433. package/lib/typescript/ads/RewardedAd.d.ts.map +1 -0
  434. package/lib/typescript/ads/RewardedInterstitialAd.d.ts +83 -0
  435. package/lib/typescript/ads/RewardedInterstitialAd.d.ts.map +1 -0
  436. package/lib/typescript/ads/native-ad/NativeAd.d.ts +48 -0
  437. package/lib/typescript/ads/native-ad/NativeAd.d.ts.map +1 -0
  438. package/lib/typescript/ads/native-ad/NativeAdContext.d.ts +10 -0
  439. package/lib/typescript/ads/native-ad/NativeAdContext.d.ts.map +1 -0
  440. package/lib/typescript/ads/native-ad/NativeAdView.d.ts +8 -0
  441. package/lib/typescript/ads/native-ad/NativeAdView.d.ts.map +1 -0
  442. package/lib/typescript/ads/native-ad/NativeAsset.d.ts +18 -0
  443. package/lib/typescript/ads/native-ad/NativeAsset.d.ts.map +1 -0
  444. package/lib/typescript/ads/native-ad/NativeMediaView.d.ts +7 -0
  445. package/lib/typescript/ads/native-ad/NativeMediaView.d.ts.map +1 -0
  446. package/lib/typescript/common/constants.d.ts +7 -0
  447. package/lib/typescript/common/constants.d.ts.map +1 -0
  448. package/lib/typescript/common/debounce.d.ts +2 -0
  449. package/lib/typescript/common/debounce.d.ts.map +1 -0
  450. package/lib/typescript/common/index.d.ts +4 -0
  451. package/lib/typescript/common/index.d.ts.map +1 -0
  452. package/lib/typescript/common/ref.d.ts +13 -0
  453. package/lib/typescript/common/ref.d.ts.map +1 -0
  454. package/lib/typescript/common/validate.d.ts +62 -0
  455. package/lib/typescript/common/validate.d.ts.map +1 -0
  456. package/lib/typescript/hooks/useAppOpenAd.d.ts +10 -0
  457. package/lib/typescript/hooks/useAppOpenAd.d.ts.map +1 -0
  458. package/lib/typescript/hooks/useForeground.d.ts +7 -0
  459. package/lib/typescript/hooks/useForeground.d.ts.map +1 -0
  460. package/lib/typescript/hooks/useFullScreenAd.d.ts +7 -0
  461. package/lib/typescript/hooks/useFullScreenAd.d.ts.map +1 -0
  462. package/lib/typescript/hooks/useInterstitialAd.d.ts +10 -0
  463. package/lib/typescript/hooks/useInterstitialAd.d.ts.map +1 -0
  464. package/lib/typescript/hooks/useRewardedAd.d.ts +10 -0
  465. package/lib/typescript/hooks/useRewardedAd.d.ts.map +1 -0
  466. package/lib/typescript/hooks/useRewardedInterstitialAd.d.ts +10 -0
  467. package/lib/typescript/hooks/useRewardedInterstitialAd.d.ts.map +1 -0
  468. package/lib/typescript/index.d.ts +32 -0
  469. package/lib/typescript/index.d.ts.map +1 -0
  470. package/lib/typescript/internal/GoogleMobileAdsNativeEventEmitter.d.ts +13 -0
  471. package/lib/typescript/internal/GoogleMobileAdsNativeEventEmitter.d.ts.map +1 -0
  472. package/lib/typescript/internal/NativeError.d.ts +27 -0
  473. package/lib/typescript/internal/NativeError.d.ts.map +1 -0
  474. package/lib/typescript/internal/SharedEventEmitter.d.ts +3 -0
  475. package/lib/typescript/internal/SharedEventEmitter.d.ts.map +1 -0
  476. package/lib/typescript/specs/components/GoogleMobileAdsBannerViewNativeComponent.d.ts +35 -0
  477. package/lib/typescript/specs/components/GoogleMobileAdsBannerViewNativeComponent.d.ts.map +1 -0
  478. package/lib/typescript/specs/components/GoogleMobileAdsMediaViewNativeComponent.d.ts +9 -0
  479. package/lib/typescript/specs/components/GoogleMobileAdsMediaViewNativeComponent.d.ts.map +1 -0
  480. package/lib/typescript/specs/components/GoogleMobileAdsNativeViewNativeComponent.d.ts +14 -0
  481. package/lib/typescript/specs/components/GoogleMobileAdsNativeViewNativeComponent.d.ts.map +1 -0
  482. package/lib/typescript/specs/modules/NativeAppModule.d.ts +23 -0
  483. package/lib/typescript/specs/modules/NativeAppModule.d.ts.map +1 -0
  484. package/lib/typescript/specs/modules/NativeAppOpenModule.d.ts +25 -0
  485. package/lib/typescript/specs/modules/NativeAppOpenModule.d.ts.map +1 -0
  486. package/lib/typescript/specs/modules/NativeConsentModule.d.ts +498 -0
  487. package/lib/typescript/specs/modules/NativeConsentModule.d.ts.map +1 -0
  488. package/lib/typescript/specs/modules/NativeGoogleMobileAdsModule.d.ts +14 -0
  489. package/lib/typescript/specs/modules/NativeGoogleMobileAdsModule.d.ts.map +1 -0
  490. package/lib/typescript/specs/modules/NativeGoogleMobileAdsNativeModule.d.ts +42 -0
  491. package/lib/typescript/specs/modules/NativeGoogleMobileAdsNativeModule.d.ts.map +1 -0
  492. package/lib/typescript/specs/modules/NativeInterstitialModule.d.ts +25 -0
  493. package/lib/typescript/specs/modules/NativeInterstitialModule.d.ts.map +1 -0
  494. package/lib/typescript/specs/modules/NativeRewardedInterstitialModule.d.ts +25 -0
  495. package/lib/typescript/specs/modules/NativeRewardedInterstitialModule.d.ts.map +1 -0
  496. package/lib/typescript/specs/modules/NativeRewardedModule.d.ts +25 -0
  497. package/lib/typescript/specs/modules/NativeRewardedModule.d.ts.map +1 -0
  498. package/lib/typescript/types/AdEventListener.d.ts +8 -0
  499. package/lib/typescript/types/AdEventListener.d.ts.map +1 -0
  500. package/lib/typescript/types/AdEventsListener.d.ts +9 -0
  501. package/lib/typescript/types/AdEventsListener.d.ts.map +1 -0
  502. package/lib/typescript/types/AdShowOptions.d.ts +13 -0
  503. package/lib/typescript/types/AdShowOptions.d.ts.map +1 -0
  504. package/lib/typescript/types/AdStates.d.ts +91 -0
  505. package/lib/typescript/types/AdStates.d.ts.map +1 -0
  506. package/lib/typescript/types/AdapterStatus.d.ts +19 -0
  507. package/lib/typescript/types/AdapterStatus.d.ts.map +1 -0
  508. package/lib/typescript/types/AppEvent.d.ts +14 -0
  509. package/lib/typescript/types/AppEvent.d.ts.map +1 -0
  510. package/lib/typescript/types/BannerAdProps.d.ts +175 -0
  511. package/lib/typescript/types/BannerAdProps.d.ts.map +1 -0
  512. package/lib/typescript/types/MobileAd.interface.d.ts +90 -0
  513. package/lib/typescript/types/MobileAd.interface.d.ts.map +1 -0
  514. package/lib/typescript/types/MobileAdsModule.interface.d.ts +75 -0
  515. package/lib/typescript/types/MobileAdsModule.interface.d.ts.map +1 -0
  516. package/lib/typescript/types/NativeAdRequestOptions.d.ts +36 -0
  517. package/lib/typescript/types/NativeAdRequestOptions.d.ts.map +1 -0
  518. package/lib/typescript/types/PaidEventListener.d.ts +8 -0
  519. package/lib/typescript/types/PaidEventListener.d.ts.map +1 -0
  520. package/lib/typescript/types/RequestConfiguration.d.ts +37 -0
  521. package/lib/typescript/types/RequestConfiguration.d.ts.map +1 -0
  522. package/lib/typescript/types/RequestOptions.d.ts +133 -0
  523. package/lib/typescript/types/RequestOptions.d.ts.map +1 -0
  524. package/lib/typescript/types/RewardedAdReward.d.ts +14 -0
  525. package/lib/typescript/types/RewardedAdReward.d.ts.map +1 -0
  526. package/lib/typescript/types/index.d.ts +13 -0
  527. package/lib/typescript/types/index.d.ts.map +1 -0
  528. package/lib/typescript/validateAdRequestConfiguration.d.ts +3 -0
  529. package/lib/typescript/validateAdRequestConfiguration.d.ts.map +1 -0
  530. package/lib/typescript/validateAdRequestOptions.d.ts +3 -0
  531. package/lib/typescript/validateAdRequestOptions.d.ts.map +1 -0
  532. package/lib/typescript/validateAdShowOptions.d.ts +3 -0
  533. package/lib/typescript/validateAdShowOptions.d.ts.map +1 -0
  534. package/lib/typescript/validateNativeAdRequestOptions.d.ts +3 -0
  535. package/lib/typescript/validateNativeAdRequestOptions.d.ts.map +1 -0
  536. package/lib/typescript/version.d.ts +2 -0
  537. package/lib/typescript/version.d.ts.map +1 -0
  538. package/package.json +176 -0
  539. package/plugin/__tests__/__snapshots__/plugin.test.ts.snap +739 -0
  540. package/plugin/__tests__/fixtures/app.config.js +24 -0
  541. package/plugin/__tests__/fixtures/app.config.ts +24 -0
  542. package/plugin/__tests__/fixtures/app.json +24 -0
  543. package/plugin/__tests__/fixtures/package.json +19 -0
  544. package/plugin/__tests__/fixtures/without-params/app.config.js +11 -0
  545. package/plugin/__tests__/fixtures/without-params/app.config.ts +11 -0
  546. package/plugin/__tests__/fixtures/without-params/app.json +11 -0
  547. package/plugin/__tests__/plugin.test.ts +115 -0
  548. package/plugin/build/index.d.ts +12 -0
  549. package/plugin/build/index.js +109 -0
  550. package/plugin/jest.config.js +1 -0
  551. package/plugin/src/index.ts +205 -0
  552. package/plugin/tsconfig.json +9 -0
  553. package/plugin/tsconfig.tsbuildinfo +1 -0
  554. package/react-native.config.js +19 -0
  555. package/src/AdEventType.ts +70 -0
  556. package/src/AdsConsent.ts +170 -0
  557. package/src/AdsConsentPurposes.ts +182 -0
  558. package/src/AdsConsentSpecialFeatures.ts +48 -0
  559. package/src/BannerAdSize.ts +78 -0
  560. package/src/GAMAdEventType.ts +37 -0
  561. package/src/MaxAdContentRating.ts +38 -0
  562. package/src/MobileAds.ts +77 -0
  563. package/src/NativeAdEventType.ts +51 -0
  564. package/src/RewardedAdEventType.ts +60 -0
  565. package/src/TestIds.ts +60 -0
  566. package/src/ads/AppOpenAd.ts +62 -0
  567. package/src/ads/BannerAd.tsx +37 -0
  568. package/src/ads/BaseAd.tsx +185 -0
  569. package/src/ads/GAMBannerAd.tsx +43 -0
  570. package/src/ads/GAMInterstitialAd.ts +45 -0
  571. package/src/ads/InterstitialAd.ts +122 -0
  572. package/src/ads/MobileAd.ts +227 -0
  573. package/src/ads/RewardedAd.ts +142 -0
  574. package/src/ads/RewardedInterstitialAd.ts +144 -0
  575. package/src/ads/native-ad/NativeAd.ts +159 -0
  576. package/src/ads/native-ad/NativeAdContext.ts +26 -0
  577. package/src/ads/native-ad/NativeAdView.tsx +43 -0
  578. package/src/ads/native-ad/NativeAsset.tsx +66 -0
  579. package/src/ads/native-ad/NativeMediaView.tsx +44 -0
  580. package/src/common/constants.ts +9 -0
  581. package/src/common/debounce.ts +15 -0
  582. package/src/common/index.ts +30 -0
  583. package/src/common/ref.ts +46 -0
  584. package/src/common/validate.ts +116 -0
  585. package/src/declarations.d.ts +3 -0
  586. package/src/hooks/useAppOpenAd.ts +46 -0
  587. package/src/hooks/useForeground.ts +41 -0
  588. package/src/hooks/useFullScreenAd.ts +112 -0
  589. package/src/hooks/useInterstitialAd.ts +46 -0
  590. package/src/hooks/useRewardedAd.ts +46 -0
  591. package/src/hooks/useRewardedInterstitialAd.ts +47 -0
  592. package/src/index.ts +60 -0
  593. package/src/internal/GoogleMobileAdsNativeEventEmitter.ts +58 -0
  594. package/src/internal/NativeError.ts +56 -0
  595. package/src/internal/SharedEventEmitter.ts +20 -0
  596. package/src/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts +62 -0
  597. package/src/specs/components/GoogleMobileAdsMediaViewNativeComponent.ts +30 -0
  598. package/src/specs/components/GoogleMobileAdsNativeViewNativeComponent.ts +45 -0
  599. package/src/specs/modules/NativeAppModule.ts +57 -0
  600. package/src/specs/modules/NativeAppOpenModule.ts +26 -0
  601. package/src/specs/modules/NativeConsentModule.ts +532 -0
  602. package/src/specs/modules/NativeGoogleMobileAdsModule.ts +33 -0
  603. package/src/specs/modules/NativeGoogleMobileAdsNativeModule.ts +70 -0
  604. package/src/specs/modules/NativeInterstitialModule.ts +26 -0
  605. package/src/specs/modules/NativeRewardedInterstitialModule.ts +32 -0
  606. package/src/specs/modules/NativeRewardedModule.ts +26 -0
  607. package/src/types/AdEventListener.ts +34 -0
  608. package/src/types/AdEventsListener.ts +24 -0
  609. package/src/types/AdShowOptions.ts +12 -0
  610. package/src/types/AdStates.ts +92 -0
  611. package/src/types/AdapterStatus.ts +20 -0
  612. package/src/types/AppEvent.ts +14 -0
  613. package/src/types/BannerAdProps.ts +184 -0
  614. package/src/types/MobileAd.interface.ts +113 -0
  615. package/src/types/MobileAdsModule.interface.ts +80 -0
  616. package/src/types/NativeAdRequestOptions.ts +55 -0
  617. package/src/types/PaidEventListener.ts +9 -0
  618. package/src/types/RequestConfiguration.ts +40 -0
  619. package/src/types/RequestOptions.ts +137 -0
  620. package/src/types/RewardedAdReward.ts +14 -0
  621. package/src/types/index.ts +29 -0
  622. package/src/validateAdRequestConfiguration.ts +66 -0
  623. package/src/validateAdRequestOptions.ts +154 -0
  624. package/src/validateAdShowOptions.ts +41 -0
  625. package/src/validateNativeAdRequestOptions.ts +50 -0
  626. package/src/version.ts +2 -0
@@ -0,0 +1,79 @@
1
+ package io.invertase.googlemobileads;
2
+
3
+ /*
4
+ * Copyright (c) 2016-present Invertase Limited & Contributors
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this library except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ *
18
+ */
19
+
20
+ // Migrated to the GMA Next-Gen SDK (Android). Wraps the Next-Gen MediaView and binds the media
21
+ // content of the loaded NativeAd (looked up by responseId in the shared registry).
22
+
23
+ import android.widget.ImageView;
24
+ import androidx.annotation.Nullable;
25
+ import com.facebook.react.uimanager.SimpleViewManager;
26
+ import com.facebook.react.uimanager.ThemedReactContext;
27
+ import com.facebook.react.uimanager.annotations.ReactProp;
28
+ import com.google.android.libraries.ads.mobile.sdk.nativead.MediaView;
29
+ import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd;
30
+ import javax.annotation.Nonnull;
31
+
32
+ public class ReactNativeGoogleMobileAdsMediaViewManager extends SimpleViewManager<MediaView> {
33
+ private static final String REACT_CLASS = "RNGoogleMobileAdsMediaView";
34
+
35
+ @Nonnull
36
+ @Override
37
+ public String getName() {
38
+ return REACT_CLASS;
39
+ }
40
+
41
+ @Nonnull
42
+ @Override
43
+ public MediaView createViewInstance(@Nonnull ThemedReactContext themedReactContext) {
44
+ return new MediaView(themedReactContext);
45
+ }
46
+
47
+ @ReactProp(name = "responseId")
48
+ public void setResponseId(MediaView view, @Nullable String responseId) {
49
+ if (responseId == null) {
50
+ return;
51
+ }
52
+ NativeAd nativeAd = ReactNativeGoogleMobileAdsNativeModule.getNativeAds().get(responseId);
53
+ if (nativeAd != null && nativeAd.getMediaContent() != null) {
54
+ view.setMediaContent(nativeAd.getMediaContent());
55
+ }
56
+ }
57
+
58
+ @ReactProp(name = "resizeMode")
59
+ public void setResizeMode(MediaView view, @Nullable String resizeMode) {
60
+ view.setImageScaleType(scaleType(resizeMode));
61
+ }
62
+
63
+ private ImageView.ScaleType scaleType(@Nullable String resizeMode) {
64
+ if (resizeMode == null) {
65
+ return ImageView.ScaleType.FIT_CENTER;
66
+ }
67
+ switch (resizeMode) {
68
+ case "cover":
69
+ return ImageView.ScaleType.CENTER_CROP;
70
+ case "stretch":
71
+ return ImageView.ScaleType.FIT_XY;
72
+ case "center":
73
+ return ImageView.ScaleType.CENTER;
74
+ case "contain":
75
+ default:
76
+ return ImageView.ScaleType.FIT_CENTER;
77
+ }
78
+ }
79
+ }
@@ -0,0 +1,178 @@
1
+ package io.invertase.googlemobileads
2
+
3
+ /*
4
+ * Copyright (c) 2016-present Invertase Limited & Contributors
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this library except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ *
18
+ */
19
+
20
+ // Migrated to the GMA Next-Gen SDK (Android). The Next-Gen SDK requires the AdMob App ID to be
21
+ // passed explicitly to InitializationConfig (it is no longer read automatically from the manifest),
22
+ // so we read it from the manifest meta-data ourselves and forward it. iOS is unchanged.
23
+
24
+ import android.content.pm.PackageManager
25
+ import com.facebook.react.bridge.*
26
+ import com.google.android.libraries.ads.mobile.sdk.MobileAds
27
+ import com.google.android.libraries.ads.mobile.sdk.common.OnAdInspectorClosedListener
28
+ import com.google.android.libraries.ads.mobile.sdk.common.RequestConfiguration
29
+ import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
30
+ import com.google.android.libraries.ads.mobile.sdk.initialization.OnAdapterInitializationCompleteListener
31
+
32
+ class ReactNativeGoogleMobileAdsModule(
33
+ reactContext: ReactApplicationContext
34
+ ) : ReactContextBaseJavaModule(reactContext) {
35
+
36
+ override fun getName() = NAME
37
+
38
+ private fun getAppIdFromManifest(): String? {
39
+ return try {
40
+ val context = reactApplicationContext
41
+ val ai =
42
+ context.packageManager.getApplicationInfo(
43
+ context.packageName, PackageManager.GET_META_DATA)
44
+ ai.metaData?.getString("com.google.android.gms.ads.APPLICATION_ID")
45
+ } catch (e: Exception) {
46
+ null
47
+ }
48
+ }
49
+
50
+ private fun buildRequestConfiguration(
51
+ requestConfiguration: ReadableMap
52
+ ): RequestConfiguration {
53
+ val builder = RequestConfiguration.Builder()
54
+
55
+ if (requestConfiguration.hasKey("testDeviceIdentifiers")) {
56
+ val devices =
57
+ checkNotNull(requestConfiguration.getArray("testDeviceIdentifiers")).toArrayList()
58
+ // Next-Gen auto-registers emulators as test devices; drop the legacy "EMULATOR" sentinel.
59
+ val testDeviceIds = devices.map { it as String }.filter { it != "EMULATOR" }
60
+ builder.setTestDeviceIds(testDeviceIds)
61
+ }
62
+
63
+ if (requestConfiguration.hasKey("maxAdContentRating")) {
64
+ when (requestConfiguration.getString("maxAdContentRating")) {
65
+ "G" ->
66
+ builder.setMaxAdContentRating(
67
+ RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_G)
68
+ "PG" ->
69
+ builder.setMaxAdContentRating(
70
+ RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_PG)
71
+ "T" ->
72
+ builder.setMaxAdContentRating(
73
+ RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_T)
74
+ "MA" ->
75
+ builder.setMaxAdContentRating(
76
+ RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_MA)
77
+ }
78
+ }
79
+
80
+ if (requestConfiguration.hasKey("tagForChildDirectedTreatment")) {
81
+ builder.setTagForChildDirectedTreatment(
82
+ if (requestConfiguration.getBoolean("tagForChildDirectedTreatment"))
83
+ RequestConfiguration.TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE
84
+ else
85
+ RequestConfiguration.TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_FALSE)
86
+ } else {
87
+ builder.setTagForChildDirectedTreatment(
88
+ RequestConfiguration.TagForChildDirectedTreatment
89
+ .TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED)
90
+ }
91
+
92
+ if (requestConfiguration.hasKey("tagForUnderAgeOfConsent")) {
93
+ builder.setTagForUnderAgeOfConsent(
94
+ if (requestConfiguration.getBoolean("tagForUnderAgeOfConsent"))
95
+ RequestConfiguration.TagForUnderAgeOfConsent.TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE
96
+ else RequestConfiguration.TagForUnderAgeOfConsent.TAG_FOR_UNDER_AGE_OF_CONSENT_FALSE)
97
+ } else {
98
+ builder.setTagForUnderAgeOfConsent(
99
+ RequestConfiguration.TagForUnderAgeOfConsent.TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED)
100
+ }
101
+
102
+ return builder.build()
103
+ }
104
+
105
+ @ReactMethod
106
+ fun initialize(promise: Promise) {
107
+ val appId = getAppIdFromManifest()
108
+ if (appId == null) {
109
+ promise.reject(
110
+ "null-app-id",
111
+ "GMA Next-Gen SDK could not find the AdMob App ID. Set" +
112
+ " com.google.android.gms.ads.APPLICATION_ID in AndroidManifest.xml.")
113
+ return
114
+ }
115
+ val config = InitializationConfig.Builder(appId).build()
116
+ MobileAds.initialize(
117
+ reactApplicationContext,
118
+ config,
119
+ OnAdapterInitializationCompleteListener { initializationStatus ->
120
+ val result = Arguments.createArray()
121
+ for ((key, value) in initializationStatus.adapterStatusMap) {
122
+ val info = Arguments.createMap()
123
+ info.putString("name", key)
124
+ info.putInt("state", value.initializationState.ordinal)
125
+ info.putString("description", value.description)
126
+ result.pushMap(info)
127
+ }
128
+ promise.resolve(result)
129
+ })
130
+ }
131
+
132
+ @ReactMethod
133
+ fun setRequestConfiguration(requestConfiguration: ReadableMap, promise: Promise) {
134
+ MobileAds.setRequestConfiguration(buildRequestConfiguration(requestConfiguration))
135
+ promise.resolve(null)
136
+ }
137
+
138
+ @ReactMethod
139
+ fun openAdInspector(promise: Promise) {
140
+ val activity = reactApplicationContext.currentActivity
141
+ if (activity == null) {
142
+ promise.reject(
143
+ "null-activity", "Ad Inspector attempted to open but the current Activity was null.")
144
+ return
145
+ }
146
+ activity.runOnUiThread {
147
+ MobileAds.openAdInspector(
148
+ OnAdInspectorClosedListener { adInspectorError ->
149
+ if (adInspectorError != null) {
150
+ promise.reject(adInspectorError.code.name, adInspectorError.message)
151
+ } else {
152
+ promise.resolve(null)
153
+ }
154
+ })
155
+ }
156
+ }
157
+
158
+ @ReactMethod
159
+ fun openDebugMenu(adUnit: String) {
160
+ reactApplicationContext.currentActivity?.let { activity ->
161
+ activity.runOnUiThread { MobileAds.openDebugMenu(activity, adUnit) }
162
+ }
163
+ }
164
+
165
+ @ReactMethod
166
+ fun setAppVolume(volume: Float) {
167
+ MobileAds.setUserControlledAppVolume(volume)
168
+ }
169
+
170
+ @ReactMethod
171
+ fun setAppMuted(muted: Boolean) {
172
+ MobileAds.setUserMutedApp(muted)
173
+ }
174
+
175
+ companion object {
176
+ const val NAME = "RNGoogleMobileAdsModule"
177
+ }
178
+ }
@@ -0,0 +1,164 @@
1
+ package io.invertase.googlemobileads;
2
+
3
+ /*
4
+ * Copyright (c) 2016-present Invertase Limited & Contributors
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this library except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ *
18
+ */
19
+
20
+ // Migrated to the GMA Next-Gen SDK (Android). Wraps the Next-Gen NativeAdView container, binds the
21
+ // asset child views supplied by JS via the registerAsset command, and registers the loaded NativeAd
22
+ // (looked up by responseId in the shared registry) together with any MediaView descendant.
23
+
24
+ import android.view.View;
25
+ import android.view.ViewGroup;
26
+ import androidx.annotation.NonNull;
27
+ import androidx.annotation.Nullable;
28
+ import com.facebook.react.bridge.ReadableArray;
29
+ import com.facebook.react.uimanager.SimpleViewManager;
30
+ import com.facebook.react.uimanager.ThemedReactContext;
31
+ import com.facebook.react.uimanager.annotations.ReactProp;
32
+ import com.google.android.libraries.ads.mobile.sdk.nativead.MediaView;
33
+ import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd;
34
+ import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdView;
35
+ import java.util.WeakHashMap;
36
+ import javax.annotation.Nonnull;
37
+
38
+ public class ReactNativeGoogleMobileAdsNativeAdViewManager
39
+ extends SimpleViewManager<NativeAdView> {
40
+ private static final String REACT_CLASS = "RNGoogleMobileAdsNativeView";
41
+ private static final String COMMAND_REGISTER_ASSET = "registerAsset";
42
+
43
+ private final WeakHashMap<NativeAdView, String> responseIds = new WeakHashMap<>();
44
+
45
+ @Nonnull
46
+ @Override
47
+ public String getName() {
48
+ return REACT_CLASS;
49
+ }
50
+
51
+ @Nonnull
52
+ @Override
53
+ public NativeAdView createViewInstance(@Nonnull ThemedReactContext themedReactContext) {
54
+ return new NativeAdView(themedReactContext);
55
+ }
56
+
57
+ @ReactProp(name = "responseId")
58
+ public void setResponseId(NativeAdView view, @Nullable String responseId) {
59
+ responseIds.put(view, responseId);
60
+ registerNativeAd(view);
61
+ }
62
+
63
+ @Override
64
+ public void receiveCommand(
65
+ @NonNull NativeAdView view, String commandId, @Nullable ReadableArray args) {
66
+ if (COMMAND_REGISTER_ASSET.equals(commandId) && args != null) {
67
+ String assetKey = args.getString(0);
68
+ int reactTag = args.getInt(1);
69
+ registerAsset(view, assetKey, reactTag);
70
+ }
71
+ }
72
+
73
+ private void registerAsset(NativeAdView view, String assetKey, int reactTag) {
74
+ View assetView = findViewByReactTag(view, reactTag);
75
+ if (assetView == null || assetKey == null) {
76
+ return;
77
+ }
78
+ switch (assetKey) {
79
+ case "headline":
80
+ view.setHeadlineView(assetView);
81
+ break;
82
+ case "body":
83
+ view.setBodyView(assetView);
84
+ break;
85
+ case "callToAction":
86
+ view.setCallToActionView(assetView);
87
+ break;
88
+ case "advertiser":
89
+ view.setAdvertiserView(assetView);
90
+ break;
91
+ case "price":
92
+ view.setPriceView(assetView);
93
+ break;
94
+ case "store":
95
+ view.setStoreView(assetView);
96
+ break;
97
+ case "starRating":
98
+ view.setStarRatingView(assetView);
99
+ break;
100
+ case "icon":
101
+ view.setIconView(assetView);
102
+ break;
103
+ default:
104
+ // "image" / "media" assets are presented through the MediaView descendant.
105
+ break;
106
+ }
107
+ registerNativeAd(view);
108
+ }
109
+
110
+ /** Bind the loaded NativeAd to the container once we have a responseId for it. */
111
+ private void registerNativeAd(NativeAdView view) {
112
+ String responseId = responseIds.get(view);
113
+ if (responseId == null) {
114
+ return;
115
+ }
116
+ NativeAd nativeAd = ReactNativeGoogleMobileAdsNativeModule.getNativeAds().get(responseId);
117
+ if (nativeAd == null) {
118
+ return;
119
+ }
120
+ MediaView mediaView = findMediaView(view);
121
+ view.registerNativeAd(nativeAd, mediaView);
122
+ }
123
+
124
+ @Nullable
125
+ private View findViewByReactTag(View root, int reactTag) {
126
+ if (root.getId() == reactTag) {
127
+ return root;
128
+ }
129
+ if (root instanceof ViewGroup) {
130
+ ViewGroup group = (ViewGroup) root;
131
+ for (int i = 0; i < group.getChildCount(); i++) {
132
+ View found = findViewByReactTag(group.getChildAt(i), reactTag);
133
+ if (found != null) {
134
+ return found;
135
+ }
136
+ }
137
+ }
138
+ return null;
139
+ }
140
+
141
+ @Nullable
142
+ private MediaView findMediaView(View root) {
143
+ if (root instanceof MediaView) {
144
+ return (MediaView) root;
145
+ }
146
+ if (root instanceof ViewGroup) {
147
+ ViewGroup group = (ViewGroup) root;
148
+ for (int i = 0; i < group.getChildCount(); i++) {
149
+ MediaView found = findMediaView(group.getChildAt(i));
150
+ if (found != null) {
151
+ return found;
152
+ }
153
+ }
154
+ }
155
+ return null;
156
+ }
157
+
158
+ @Override
159
+ public void onDropViewInstance(@NonNull NativeAdView view) {
160
+ responseIds.remove(view);
161
+ view.destroy();
162
+ super.onDropViewInstance(view);
163
+ }
164
+ }
@@ -0,0 +1,172 @@
1
+ package io.invertase.googlemobileads
2
+
3
+ /*
4
+ * Copyright (c) 2016-present Invertase Limited & Contributors
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this library except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ *
18
+ */
19
+
20
+ // Migrated to the GMA Next-Gen SDK (Android). Loads native ads via NativeAdLoader, serializes the
21
+ // asset payload to JS, and keeps the loaded NativeAd in a shared registry so the NativeAdView /
22
+ // MediaView managers can bind it by responseId. Events are emitted on the RNGMANativeAdEvent
23
+ // device-event channel that the JS NativeAd subscribes to on Android.
24
+
25
+ import com.facebook.react.bridge.Arguments
26
+ import com.facebook.react.bridge.Promise
27
+ import com.facebook.react.bridge.ReactApplicationContext
28
+ import com.facebook.react.bridge.ReactMethod
29
+ import com.facebook.react.bridge.ReadableMap
30
+ import com.facebook.react.bridge.WritableMap
31
+ import com.facebook.react.modules.core.DeviceEventManagerModule
32
+ import com.google.android.libraries.ads.mobile.sdk.common.AdValue
33
+ import com.google.android.libraries.ads.mobile.sdk.common.Image
34
+ import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
35
+ import com.google.android.libraries.ads.mobile.sdk.nativead.MediaContent
36
+ import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd
37
+ import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdEventCallback
38
+ import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoader
39
+ import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoaderCallback
40
+ import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest
41
+ import io.invertase.googlemobileads.common.ReactNativeModule
42
+ import java.util.concurrent.ConcurrentHashMap
43
+
44
+ class ReactNativeGoogleMobileAdsNativeModule(reactContext: ReactApplicationContext?) :
45
+ ReactNativeModule(reactContext, NAME) {
46
+
47
+ @ReactMethod
48
+ fun load(adUnitId: String, requestOptions: ReadableMap, promise: Promise) {
49
+ val builder = NativeAdRequest.Builder(adUnitId, listOf(NativeAd.NativeAdType.NATIVE))
50
+ ReactNativeGoogleMobileAdsCommon.applyRequestOptions(builder, requestOptions)
51
+ val request = builder.build()
52
+
53
+ val activity = reactApplicationContext.currentActivity
54
+ val runnable = Runnable {
55
+ NativeAdLoader.load(
56
+ request,
57
+ object : NativeAdLoaderCallback {
58
+ override fun onNativeAdLoaded(nativeAd: NativeAd) {
59
+ val responseId = nativeAd.responseInfo?.responseId ?: ""
60
+ nativeAds[responseId] = nativeAd
61
+ attachEventCallback(nativeAd, responseId)
62
+ promise.resolve(serializeNativeAd(nativeAd, responseId))
63
+ }
64
+
65
+ override fun onAdFailedToLoad(loadAdError: LoadAdError) {
66
+ val codeAndMessage =
67
+ ReactNativeGoogleMobileAdsCommon.getCodeAndMessageFromAdError(loadAdError)
68
+ rejectPromiseWithCodeAndMessage(promise, codeAndMessage[0], codeAndMessage[1])
69
+ }
70
+ })
71
+ }
72
+ if (activity != null) activity.runOnUiThread(runnable) else runnable.run()
73
+ }
74
+
75
+ @ReactMethod
76
+ fun destroy(responseId: String) {
77
+ nativeAds.remove(responseId)?.destroy()
78
+ }
79
+
80
+ // NativeEventEmitter bookkeeping (no-ops on Android; required by the TurboModule surface).
81
+ @ReactMethod fun addListener(eventName: String) {}
82
+
83
+ @ReactMethod fun removeListeners(count: Double) {}
84
+
85
+ private fun attachEventCallback(nativeAd: NativeAd, responseId: String) {
86
+ nativeAd.adEventCallback =
87
+ object : NativeAdEventCallback {
88
+ override fun onAdImpression() = emit(responseId, "impression", null)
89
+
90
+ override fun onAdClicked() = emit(responseId, "clicked", null)
91
+
92
+ override fun onAdShowedFullScreenContent() = emit(responseId, "opened", null)
93
+
94
+ override fun onAdDismissedFullScreenContent() = emit(responseId, "closed", null)
95
+
96
+ override fun onAdPaid(adValue: AdValue) {
97
+ val payload = Arguments.createMap()
98
+ payload.putDouble("value", 1e-6 * adValue.valueMicros)
99
+ payload.putDouble("precision", adValue.precisionType.ordinal.toDouble())
100
+ payload.putString("currencyCode", adValue.currencyCode)
101
+ emit(responseId, "paid", payload)
102
+ }
103
+ }
104
+ }
105
+
106
+ private fun emit(responseId: String, type: String, extra: WritableMap?) {
107
+ val event = Arguments.createMap()
108
+ event.putString("responseId", responseId)
109
+ event.putString("type", type)
110
+ if (extra != null) event.merge(extra)
111
+ reactApplicationContext
112
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
113
+ .emit("RNGMANativeAdEvent", event)
114
+ }
115
+
116
+ private fun serializeNativeAd(nativeAd: NativeAd, responseId: String): WritableMap {
117
+ val map = Arguments.createMap()
118
+ map.putString("responseId", responseId)
119
+ map.putString("headline", nativeAd.headline)
120
+ map.putString("body", nativeAd.body)
121
+ map.putString("callToAction", nativeAd.callToAction)
122
+ putStringOrNull(map, "advertiser", nativeAd.advertiser)
123
+ putStringOrNull(map, "price", nativeAd.price)
124
+ putStringOrNull(map, "store", nativeAd.store)
125
+
126
+ val starRating = nativeAd.starRating
127
+ if (starRating != null) map.putDouble("starRating", starRating) else map.putNull("starRating")
128
+
129
+ map.putMap("icon", serializeImage(nativeAd.icon))
130
+
131
+ val mainImage = serializeImage(nativeAd.image)
132
+ if (mainImage != null) {
133
+ val images = Arguments.createArray()
134
+ images.pushMap(mainImage)
135
+ map.putArray("images", images)
136
+ } else {
137
+ map.putNull("images")
138
+ }
139
+
140
+ map.putMap("mediaContent", serializeMediaContent(nativeAd.mediaContent))
141
+ map.putNull("extras")
142
+ return map
143
+ }
144
+
145
+ private fun serializeImage(image: Image?): WritableMap? {
146
+ if (image == null) return null
147
+ val uri = image.uri ?: return null
148
+ val map = Arguments.createMap()
149
+ map.putString("url", uri.toString())
150
+ map.putDouble("scale", image.scale)
151
+ return map
152
+ }
153
+
154
+ private fun serializeMediaContent(mediaContent: MediaContent?): WritableMap {
155
+ val map = Arguments.createMap()
156
+ map.putDouble("aspectRatio", (mediaContent?.aspectRatio ?: 1.0f).toDouble())
157
+ map.putBoolean("hasVideoContent", mediaContent?.hasVideoContent ?: false)
158
+ map.putDouble("duration", (mediaContent?.duration ?: 0.0f).toDouble())
159
+ return map
160
+ }
161
+
162
+ private fun putStringOrNull(map: WritableMap, key: String, value: String?) {
163
+ if (value != null) map.putString(key, value) else map.putNull(key)
164
+ }
165
+
166
+ companion object {
167
+ const val NAME = "RNGoogleMobileAdsNativeModule"
168
+
169
+ /** Shared registry of loaded native ads, keyed by responseId; read by the view managers. */
170
+ @JvmStatic val nativeAds = ConcurrentHashMap<String, NativeAd>()
171
+ }
172
+ }