@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,92 @@
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
+ import android.app.Activity
21
+ import com.facebook.react.bridge.Promise
22
+ import com.facebook.react.bridge.ReactApplicationContext
23
+ import com.facebook.react.bridge.ReactMethod
24
+ import com.facebook.react.bridge.ReadableMap
25
+ import com.google.android.libraries.ads.mobile.sdk.appopen.AppOpenAd
26
+ import com.google.android.libraries.ads.mobile.sdk.appopen.AppOpenAdEventCallback
27
+ import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
28
+ import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
29
+ import com.google.android.libraries.ads.mobile.sdk.common.AdValue
30
+
31
+ class ReactNativeGoogleMobileAdsAppOpenModule(reactContext: ReactApplicationContext?) :
32
+ ReactNativeGoogleMobileAdsFullScreenAdModule<AppOpenAd>(reactContext, NAME) {
33
+
34
+ override fun getAdEventName(): String {
35
+ return ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_APP_OPEN
36
+ }
37
+
38
+ @ReactMethod
39
+ fun appOpenLoad(requestId: Int, adUnitId: String, adRequestOptions: ReadableMap) {
40
+ load(requestId, adUnitId, adRequestOptions)
41
+ }
42
+
43
+ @ReactMethod
44
+ fun appOpenShow(
45
+ requestId: Int, adUnitId: String, showOptions: ReadableMap, promise: Promise
46
+ ) {
47
+ show(requestId, adUnitId, showOptions, promise)
48
+ }
49
+
50
+ override fun loadAd(adRequest: AdRequest, adLoadCallback: AdLoadCallback<AppOpenAd>) {
51
+ AppOpenAd.load(adRequest, adLoadCallback)
52
+ }
53
+
54
+ override fun attachAdEventCallback(ad: AppOpenAd, requestId: Int, adUnitId: String) {
55
+ ad.adEventCallback =
56
+ object : AppOpenAdEventCallback {
57
+ override fun onAdShowedFullScreenContent() {
58
+ dispatchFullScreenEvent(
59
+ ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_OPENED, requestId, adUnitId)
60
+ }
61
+
62
+ override fun onAdDismissedFullScreenContent() {
63
+ dispatchFullScreenEvent(
64
+ ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_CLOSED, requestId, adUnitId)
65
+ }
66
+
67
+ override fun onAdClicked() {
68
+ dispatchFullScreenEvent(
69
+ ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_CLICKED, requestId, adUnitId)
70
+ }
71
+
72
+ override fun onAdPaid(adValue: AdValue) {
73
+ dispatchPaidEvent(requestId, adUnitId, adValue)
74
+ }
75
+ }
76
+ }
77
+
78
+ override fun showAd(
79
+ ad: AppOpenAd,
80
+ activity: Activity,
81
+ immersiveModeEnabled: Boolean,
82
+ requestId: Int,
83
+ adUnitId: String
84
+ ) {
85
+ ad.setImmersiveMode(immersiveModeEnabled)
86
+ ad.show(activity)
87
+ }
88
+
89
+ companion object {
90
+ const val NAME = "RNGoogleMobileAdsAppOpenModule"
91
+ }
92
+ }
@@ -0,0 +1,303 @@
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 (com.google.android.libraries.ads.mobile.sdk) on Android.
21
+ // Ad Manager / GAM paths are dropped: this app serves plain AdMob banners only. iOS is unchanged.
22
+
23
+ import android.view.ViewGroup;
24
+ import androidx.annotation.NonNull;
25
+ import com.facebook.react.bridge.Arguments;
26
+ import com.facebook.react.bridge.ReadableArray;
27
+ import com.facebook.react.bridge.ReadableMap;
28
+ import com.facebook.react.bridge.ReadableType;
29
+ import com.facebook.react.bridge.WritableMap;
30
+ import com.facebook.react.common.MapBuilder;
31
+ import com.facebook.react.uimanager.SimpleViewManager;
32
+ import com.facebook.react.uimanager.ThemedReactContext;
33
+ import com.facebook.react.uimanager.UIManagerHelper;
34
+ import com.facebook.react.uimanager.annotations.ReactProp;
35
+ import com.facebook.react.uimanager.events.EventDispatcher;
36
+ import com.google.android.libraries.ads.mobile.sdk.banner.AdSize;
37
+ import com.google.android.libraries.ads.mobile.sdk.banner.AdView;
38
+ import com.google.android.libraries.ads.mobile.sdk.banner.BannerAd;
39
+ import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdEventCallback;
40
+ import com.google.android.libraries.ads.mobile.sdk.banner.BannerAdRequest;
41
+ import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback;
42
+ import com.google.android.libraries.ads.mobile.sdk.common.AdValue;
43
+ import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
44
+ import io.invertase.googlemobileads.common.ReactNativeAdView;
45
+ import io.invertase.googlemobileads.common.SharedUtils;
46
+ import java.util.ArrayList;
47
+ import java.util.List;
48
+ import java.util.Map;
49
+ import javax.annotation.Nonnull;
50
+ import javax.annotation.Nullable;
51
+ import org.json.JSONException;
52
+ import org.json.JSONObject;
53
+
54
+ public class ReactNativeGoogleMobileAdsBannerAdViewManager
55
+ extends SimpleViewManager<ReactNativeAdView> {
56
+ private static final String REACT_CLASS = "RNGoogleMobileAdsBannerView";
57
+ private final String EVENT_AD_LOADED = "onAdLoaded";
58
+ private final String EVENT_AD_IMPRESSION = "onAdImpression";
59
+ private final String EVENT_AD_CLICKED = "onAdClicked";
60
+ private final String EVENT_AD_FAILED_TO_LOAD = "onAdFailedToLoad";
61
+ private final String EVENT_AD_OPENED = "onAdOpened";
62
+ private final String EVENT_AD_CLOSED = "onAdClosed";
63
+ private final String EVENT_PAID = "onPaid";
64
+ private final String EVENT_SIZE_CHANGE = "onSizeChange";
65
+ private final String COMMAND_ID_RECORD_MANUAL_IMPRESSION = "recordManualImpression";
66
+ private final String COMMAND_ID_LOAD = "load";
67
+
68
+ @Nonnull
69
+ @Override
70
+ public String getName() {
71
+ return REACT_CLASS;
72
+ }
73
+
74
+ @Nonnull
75
+ @Override
76
+ public ReactNativeAdView createViewInstance(@Nonnull ThemedReactContext themedReactContext) {
77
+ return new ReactNativeAdView(themedReactContext);
78
+ }
79
+
80
+ @Override
81
+ public Map<String, Object> getExportedCustomDirectEventTypeConstants() {
82
+ MapBuilder.Builder<String, Object> builder = MapBuilder.builder();
83
+ builder.put(OnNativeEvent.EVENT_NAME, MapBuilder.of("registrationName", "onNativeEvent"));
84
+ return builder.build();
85
+ }
86
+
87
+ @Override
88
+ public void receiveCommand(
89
+ @NonNull ReactNativeAdView reactViewGroup, String commandId, @Nullable ReadableArray args) {
90
+ super.receiveCommand(reactViewGroup, commandId, args);
91
+
92
+ AdView adView = getAdView(reactViewGroup);
93
+
94
+ if (commandId.equals(COMMAND_ID_RECORD_MANUAL_IMPRESSION)) {
95
+ if (adView != null) {
96
+ BannerAd bannerAd = adView.getBannerAd();
97
+ if (bannerAd != null) {
98
+ bannerAd.recordManualImpression();
99
+ }
100
+ }
101
+ } else if (commandId.equals(COMMAND_ID_LOAD)) {
102
+ requestAd(reactViewGroup);
103
+ }
104
+ }
105
+
106
+ @ReactProp(name = "unitId")
107
+ public void setUnitId(ReactNativeAdView reactViewGroup, String value) {
108
+ reactViewGroup.setUnitId(value);
109
+ reactViewGroup.setPropsChanged(true);
110
+ }
111
+
112
+ @ReactProp(name = "request")
113
+ public void setRequest(ReactNativeAdView reactViewGroup, String value) {
114
+ try {
115
+ JSONObject jsonObject = new JSONObject(value);
116
+ WritableMap writableMap = SharedUtils.jsonObjectToWritableMap(jsonObject);
117
+ reactViewGroup.setRequestOptions(writableMap);
118
+ reactViewGroup.setPropsChanged(true);
119
+ } catch (JSONException e) {
120
+ e.printStackTrace();
121
+ }
122
+ }
123
+
124
+ @ReactProp(name = "sizeConfig")
125
+ public void setSizeConfig(ReactNativeAdView reactViewGroup, ReadableMap sizeConfig) {
126
+ if (sizeConfig != null) {
127
+ if (sizeConfig.hasKey("maxHeight") && !sizeConfig.isNull("maxHeight")) {
128
+ reactViewGroup.setMaxAdHeight((float) sizeConfig.getDouble("maxHeight"));
129
+ } else {
130
+ reactViewGroup.setMaxAdHeight(0);
131
+ }
132
+
133
+ if (sizeConfig.hasKey("width") && !sizeConfig.isNull("width")) {
134
+ reactViewGroup.setAdWidth((float) sizeConfig.getDouble("width"));
135
+ } else {
136
+ reactViewGroup.setAdWidth(0);
137
+ }
138
+
139
+ if (sizeConfig.hasKey("sizes") && !sizeConfig.isNull("sizes")) {
140
+ ReadableArray sizesArray = sizeConfig.getArray("sizes");
141
+ if (sizesArray != null) {
142
+ List<AdSize> sizeList = new ArrayList<>();
143
+ for (int i = 0; i < sizesArray.size(); i++) {
144
+ if (sizesArray.getType(i) == ReadableType.String) {
145
+ String sizeString = sizesArray.getString(i);
146
+ sizeList.add(ReactNativeGoogleMobileAdsCommon.getAdSize(sizeString, reactViewGroup));
147
+ }
148
+ }
149
+
150
+ if (!sizeList.isEmpty() && !sizeList.contains(AdSize.FLUID)) {
151
+ AdSize adSize = sizeList.get(0);
152
+ WritableMap payload = Arguments.createMap();
153
+ payload.putDouble("width", adSize.getWidth());
154
+ payload.putDouble("height", adSize.getHeight());
155
+ sendEvent(reactViewGroup, EVENT_SIZE_CHANGE, payload);
156
+ }
157
+
158
+ reactViewGroup.setSizes(sizeList);
159
+ }
160
+ }
161
+
162
+ reactViewGroup.setPropsChanged(true);
163
+ }
164
+ }
165
+
166
+ @ReactProp(name = "manualImpressionsEnabled")
167
+ public void setManualImpressionsEnabled(ReactNativeAdView reactViewGroup, boolean value) {
168
+ reactViewGroup.setManualImpressionsEnabled(value);
169
+ reactViewGroup.setPropsChanged(true);
170
+ }
171
+
172
+ @Override
173
+ public void onAfterUpdateTransaction(@NonNull ReactNativeAdView reactViewGroup) {
174
+ super.onAfterUpdateTransaction(reactViewGroup);
175
+ if (reactViewGroup.getPropsChanged()) {
176
+ requestAd(reactViewGroup);
177
+ }
178
+ reactViewGroup.setPropsChanged(false);
179
+ }
180
+
181
+ @Override
182
+ public void onDropViewInstance(@NonNull ReactNativeAdView reactViewGroup) {
183
+ AdView adView = getAdView(reactViewGroup);
184
+ if (adView != null) {
185
+ adView.destroy();
186
+ reactViewGroup.removeView(adView);
187
+ }
188
+ super.onDropViewInstance(reactViewGroup);
189
+ }
190
+
191
+ private AdView initAdView(ReactNativeAdView reactViewGroup) {
192
+ AdView oldAdView = getAdView(reactViewGroup);
193
+ if (oldAdView != null) {
194
+ oldAdView.destroy();
195
+ reactViewGroup.removeView(oldAdView);
196
+ }
197
+
198
+ AdView adView = new AdView(reactViewGroup.getContext());
199
+ adView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
200
+ reactViewGroup.addView(adView);
201
+ return adView;
202
+ }
203
+
204
+ @Nullable
205
+ private AdView getAdView(ViewGroup reactViewGroup) {
206
+ if (reactViewGroup.getChildCount() == 0) return null;
207
+ android.view.View child = reactViewGroup.getChildAt(0);
208
+ return child instanceof AdView ? (AdView) child : null;
209
+ }
210
+
211
+ private BannerAdEventCallback buildEventCallback(ReactNativeAdView reactViewGroup) {
212
+ return new BannerAdEventCallback() {
213
+ @Override
214
+ public void onAdImpression() {
215
+ sendEvent(reactViewGroup, EVENT_AD_IMPRESSION, null);
216
+ }
217
+
218
+ @Override
219
+ public void onAdClicked() {
220
+ sendEvent(reactViewGroup, EVENT_AD_CLICKED, null);
221
+ }
222
+
223
+ @Override
224
+ public void onAdShowedFullScreenContent() {
225
+ sendEvent(reactViewGroup, EVENT_AD_OPENED, null);
226
+ }
227
+
228
+ @Override
229
+ public void onAdDismissedFullScreenContent() {
230
+ sendEvent(reactViewGroup, EVENT_AD_CLOSED, null);
231
+ }
232
+
233
+ @Override
234
+ public void onAdPaid(@NonNull AdValue adValue) {
235
+ WritableMap payload = Arguments.createMap();
236
+ payload.putDouble("value", 1e-6 * adValue.getValueMicros());
237
+ payload.putDouble("precision", adValue.getPrecisionType().ordinal());
238
+ payload.putString("currency", adValue.getCurrencyCode());
239
+ sendEvent(reactViewGroup, EVENT_PAID, payload);
240
+ }
241
+ };
242
+ }
243
+
244
+ private void requestAd(ReactNativeAdView reactViewGroup) {
245
+ String unitId = reactViewGroup.getUnitId();
246
+ List<AdSize> sizes = reactViewGroup.getSizes();
247
+ ReadableMap requestOptions = reactViewGroup.getRequestOptions();
248
+ Boolean manualImpressionsEnabled = reactViewGroup.getManualImpressionsEnabled();
249
+
250
+ if (sizes == null || sizes.isEmpty() || unitId == null || requestOptions == null) {
251
+ return;
252
+ }
253
+
254
+ final AdSize adSize = sizes.get(0);
255
+ reactViewGroup.setIsFluid(adSize.equals(AdSize.FLUID));
256
+
257
+ BannerAdRequest.Builder builder = new BannerAdRequest.Builder(unitId, adSize);
258
+ ReactNativeGoogleMobileAdsCommon.applyRequestOptions(builder, requestOptions);
259
+ if (manualImpressionsEnabled != null && manualImpressionsEnabled) {
260
+ builder.setManualImpressionEnabled(true);
261
+ }
262
+ BannerAdRequest request = builder.build();
263
+
264
+ final AdView adView = initAdView(reactViewGroup);
265
+ adView.loadAd(
266
+ request,
267
+ new AdLoadCallback<BannerAd>() {
268
+ @Override
269
+ public void onAdLoaded(@NonNull BannerAd ad) {
270
+ ad.setAdEventCallback(buildEventCallback(reactViewGroup));
271
+
272
+ AdSize loadedSize = ad.getAdSize() != null ? ad.getAdSize() : adSize;
273
+ WritableMap payload = Arguments.createMap();
274
+ payload.putDouble("width", loadedSize.getWidth());
275
+ payload.putDouble("height", loadedSize.getHeight());
276
+ sendEvent(reactViewGroup, EVENT_AD_LOADED, payload);
277
+ }
278
+
279
+ @Override
280
+ public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) {
281
+ WritableMap payload =
282
+ ReactNativeGoogleMobileAdsCommon.errorCodeToMap(loadAdError.getCode());
283
+ sendEvent(reactViewGroup, EVENT_AD_FAILED_TO_LOAD, payload);
284
+ }
285
+ });
286
+ }
287
+
288
+ private void sendEvent(ReactNativeAdView reactViewGroup, String type, WritableMap payload) {
289
+ WritableMap event = Arguments.createMap();
290
+ event.putString("type", type);
291
+
292
+ if (payload != null) {
293
+ event.merge(payload);
294
+ }
295
+
296
+ ThemedReactContext themedReactContext = ((ThemedReactContext) reactViewGroup.getContext());
297
+ EventDispatcher eventDispatcher =
298
+ UIManagerHelper.getEventDispatcherForReactTag(themedReactContext, reactViewGroup.getId());
299
+ if (eventDispatcher != null) {
300
+ eventDispatcher.dispatchEvent(new OnNativeEvent(reactViewGroup.getId(), event));
301
+ }
302
+ }
303
+ }
@@ -0,0 +1,277 @@
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
+ import android.os.Bundle;
21
+ import android.util.DisplayMetrics;
22
+ import android.view.Display;
23
+ import android.view.ViewGroup;
24
+ import com.facebook.react.bridge.Arguments;
25
+ import com.facebook.react.bridge.ReactContext;
26
+ import com.facebook.react.bridge.ReadableArray;
27
+ import com.facebook.react.bridge.ReadableMap;
28
+ import com.facebook.react.bridge.ReadableType;
29
+ import com.facebook.react.bridge.WritableMap;
30
+ // GMA Next-Gen SDK (com.google.android.libraries.ads.mobile.sdk) — replaces the
31
+ // legacy play-services-ads (com.google.android.gms.ads) on Android. iOS is untouched.
32
+ import com.google.android.libraries.ads.mobile.sdk.banner.AdSize;
33
+ import com.google.android.libraries.ads.mobile.sdk.common.BaseError;
34
+ import com.google.android.libraries.ads.mobile.sdk.common.BaseRequestBuilder;
35
+ import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError;
36
+ import io.invertase.googlemobileads.common.ReactNativeAdView;
37
+ import io.invertase.googlemobileads.common.ReactNativeEventEmitter;
38
+ import java.util.ArrayList;
39
+ import java.util.List;
40
+ import java.util.Map;
41
+ import java.util.Objects;
42
+ import java.util.regex.Matcher;
43
+ import java.util.regex.Pattern;
44
+ import javax.annotation.Nullable;
45
+
46
+ public class ReactNativeGoogleMobileAdsCommon {
47
+
48
+ static AdSize getAdSizeForAdaptiveBanner(String preDefinedAdSize, ViewGroup reactViewGroup) {
49
+
50
+ try {
51
+ Display display =
52
+ Objects.requireNonNull(((ReactContext) reactViewGroup.getContext()).getCurrentActivity())
53
+ .getWindowManager()
54
+ .getDefaultDisplay();
55
+
56
+ DisplayMetrics outMetrics = new DisplayMetrics();
57
+ display.getMetrics(outMetrics);
58
+
59
+ // Get custom width if set, otherwise use device width
60
+ float customWidth = ((ReactNativeAdView) reactViewGroup).getAdWidth();
61
+ int screenWidth = (int) (outMetrics.widthPixels / outMetrics.density);
62
+ int adWidth = customWidth > 0 ? Math.min(Math.round(customWidth), screenWidth) : screenWidth;
63
+
64
+ float maxAdHeight = ((ReactNativeAdView) reactViewGroup).getMaxAdHeight();
65
+ if ("INLINE_ADAPTIVE_BANNER".equals(preDefinedAdSize)) {
66
+ if (maxAdHeight > 0) {
67
+ return AdSize.getInlineAdaptiveBannerAdSize(
68
+ adWidth, Math.round(Math.max(maxAdHeight, 32)));
69
+ }
70
+ return AdSize.getCurrentOrientationInlineAdaptiveBannerAdSize(
71
+ reactViewGroup.getContext(), adWidth);
72
+ }
73
+ if ("LARGE_ANCHORED_ADAPTIVE_BANNER".equals(preDefinedAdSize)) {
74
+ return AdSize.getLargeAnchoredAdaptiveBannerAdSize(reactViewGroup.getContext(), adWidth);
75
+ }
76
+ return AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(
77
+ reactViewGroup.getContext(), adWidth);
78
+ } catch (Exception e) {
79
+ return AdSize.BANNER;
80
+ }
81
+ }
82
+
83
+ static AdSize getAdSize(String preDefinedAdSize, ViewGroup reactViewGroup) {
84
+ if (preDefinedAdSize.matches(
85
+ "ANCHORED_ADAPTIVE_BANNER|LARGE_ANCHORED_ADAPTIVE_BANNER|INLINE_ADAPTIVE_BANNER")) {
86
+ return ReactNativeGoogleMobileAdsCommon.getAdSizeForAdaptiveBanner(
87
+ preDefinedAdSize, reactViewGroup);
88
+ } else {
89
+ return ReactNativeGoogleMobileAdsCommon.stringToAdSize(preDefinedAdSize);
90
+ }
91
+ }
92
+
93
+ static AdSize stringToAdSize(String value) {
94
+ Pattern pattern = Pattern.compile("([0-9]+)x([0-9]+)");
95
+ Matcher matcher = pattern.matcher(value);
96
+
97
+ // If size is "valXval"
98
+ if (matcher.find()) {
99
+ int width = Integer.parseInt(matcher.group(1));
100
+ int height = Integer.parseInt(matcher.group(2));
101
+ return new AdSize(width, height);
102
+ }
103
+
104
+ switch (value.toUpperCase()) {
105
+ case "FLUID":
106
+ return AdSize.FLUID;
107
+ case "WIDE_SKYSCRAPER":
108
+ // Next-Gen AdSize has no WIDE_SKYSCRAPER constant; use the same 160x600 dimensions.
109
+ return new AdSize(160, 600);
110
+ case "LARGE_BANNER":
111
+ return AdSize.LARGE_BANNER;
112
+ case "MEDIUM_RECTANGLE":
113
+ return AdSize.MEDIUM_RECTANGLE;
114
+ case "FULL_BANNER":
115
+ return AdSize.FULL_BANNER;
116
+ case "LEADERBOARD":
117
+ return AdSize.LEADERBOARD;
118
+ default:
119
+ case "BANNER":
120
+ return AdSize.BANNER;
121
+ }
122
+ }
123
+
124
+ /** Convert a Next-Gen load-error code into the JS-facing error code/message pair. */
125
+ static WritableMap errorCodeToMap(LoadAdError.ErrorCode errorCode) {
126
+ WritableMap map = Arguments.createMap();
127
+
128
+ switch (errorCode) {
129
+ case INTERNAL_ERROR:
130
+ map.putString("code", "error-code-internal-error");
131
+ map.putString(
132
+ "message",
133
+ "Something happened internally; for instance, an invalid response was received from the"
134
+ + " ad server.");
135
+ break;
136
+ case INVALID_REQUEST:
137
+ map.putString("code", "error-code-invalid-request");
138
+ map.putString(
139
+ "message", "The ad request was invalid; for instance, the ad unit ID was incorrect.");
140
+ break;
141
+ case NETWORK_ERROR:
142
+ map.putString("code", "error-code-network-error");
143
+ map.putString("message", "The ad request was unsuccessful due to network connectivity.");
144
+ break;
145
+ case NO_FILL:
146
+ map.putString("code", "error-code-no-fill");
147
+ map.putString(
148
+ "message",
149
+ "The ad request was successful, but no ad was returned due to lack of ad inventory.");
150
+ break;
151
+ default:
152
+ map.putString("code", "error-code-internal-error");
153
+ map.putString("message", "Ad failed to load: " + errorCode.name());
154
+ break;
155
+ }
156
+
157
+ return map;
158
+ }
159
+
160
+ /**
161
+ * Apply the JS-supplied request options (keywords, content URL, non-personalized, etc.) onto any
162
+ * Next-Gen request builder. Works for both BannerAdRequest.Builder and AdRequest.Builder since
163
+ * both extend BaseRequestBuilder. AdMob-only: Ad Manager / GAM-specific options are not used by
164
+ * this app and are intentionally omitted.
165
+ */
166
+ public static void applyRequestOptions(
167
+ BaseRequestBuilder<?> builder, ReadableMap adRequestOptions) {
168
+ if (adRequestOptions == null) {
169
+ return;
170
+ }
171
+
172
+ if (adRequestOptions.hasKey("requestNonPersonalizedAdsOnly")
173
+ && adRequestOptions.getBoolean("requestNonPersonalizedAdsOnly")) {
174
+ Bundle extras = new Bundle();
175
+ extras.putString("npa", "1");
176
+ builder.setGoogleExtrasBundle(extras);
177
+ }
178
+
179
+ if (adRequestOptions.hasKey("keywords")) {
180
+ ArrayList<Object> keywords =
181
+ Objects.requireNonNull(adRequestOptions.getArray("keywords")).toArrayList();
182
+ for (Object keyword : keywords) {
183
+ builder.addKeyword((String) keyword);
184
+ }
185
+ }
186
+
187
+ if (adRequestOptions.hasKey("contentUrl")) {
188
+ builder.setContentUrl(Objects.requireNonNull(adRequestOptions.getString("contentUrl")));
189
+ }
190
+
191
+ if (adRequestOptions.hasKey("requestAgent")) {
192
+ builder.setRequestAgent(Objects.requireNonNull(adRequestOptions.getString("requestAgent")));
193
+ }
194
+
195
+ if (adRequestOptions.hasKey("customTargeting")) {
196
+ Map<String, Object> customTargeting = adRequestOptions.getMap("customTargeting").toHashMap();
197
+ for (Map.Entry<String, Object> entry : customTargeting.entrySet()) {
198
+ String key = entry.getKey();
199
+ Object value = entry.getValue();
200
+ if (value instanceof String) {
201
+ builder.putCustomTargeting(key, (String) value);
202
+ } else if (value instanceof List) {
203
+ ArrayList<String> values = new ArrayList<>();
204
+ for (Object item : (List<?>) value) {
205
+ values.add(String.valueOf(item));
206
+ }
207
+ builder.putCustomTargeting(key, values);
208
+ }
209
+ }
210
+ }
211
+
212
+ if (adRequestOptions.hasKey("publisherProvidedId")) {
213
+ builder.setPublisherProvidedId(
214
+ Objects.requireNonNull(adRequestOptions.getString("publisherProvidedId")));
215
+ }
216
+ }
217
+
218
+ public static void sendAdEvent(
219
+ String event, int requestId, String type, String adUnitId, @Nullable WritableMap error) {
220
+ ReactNativeEventEmitter emitter = ReactNativeEventEmitter.getSharedInstance();
221
+
222
+ WritableMap eventBody = Arguments.createMap();
223
+ eventBody.putString("type", type);
224
+
225
+ if (error != null) {
226
+ eventBody.putMap("error", error);
227
+ }
228
+
229
+ emitter.sendEvent(new ReactNativeGoogleMobileAdsEvent(event, requestId, adUnitId, eventBody));
230
+ }
231
+
232
+ public static void sendAdEvent(
233
+ String event,
234
+ int requestId,
235
+ String type,
236
+ String adUnitId,
237
+ @Nullable WritableMap error,
238
+ @Nullable WritableMap data) {
239
+ ReactNativeEventEmitter emitter = ReactNativeEventEmitter.getSharedInstance();
240
+
241
+ WritableMap eventBody = Arguments.createMap();
242
+ eventBody.putString("type", type);
243
+
244
+ if (error != null) {
245
+ eventBody.putMap("error", error);
246
+ }
247
+
248
+ if (data != null) {
249
+ eventBody.putMap("data", data);
250
+ }
251
+
252
+ emitter.sendEvent(new ReactNativeGoogleMobileAdsEvent(event, requestId, adUnitId, eventBody));
253
+ }
254
+
255
+ /** Extract a [code, message] pair from any Next-Gen error (LoadAdError, FullScreenContentError). */
256
+ public static String[] getCodeAndMessageFromAdError(BaseError<?> adError) {
257
+ String code = "unknown";
258
+ String message = adError.getMessage();
259
+
260
+ Object rawCode = adError.getCode();
261
+ if (rawCode instanceof Enum) {
262
+ code = ((Enum<?>) rawCode).name().toLowerCase().replace('_', '-');
263
+ } else if (rawCode != null) {
264
+ code = String.valueOf(rawCode);
265
+ }
266
+
267
+ String[] codeAndMessage = new String[2];
268
+ codeAndMessage[0] = code;
269
+ codeAndMessage[1] = message;
270
+ return codeAndMessage;
271
+ }
272
+
273
+ public static boolean isAdManagerUnit(String unitId) {
274
+ if (unitId == null) return false;
275
+ return unitId.startsWith("/");
276
+ }
277
+ }