@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,512 @@
1
+ # Displaying Ads
2
+
3
+ The Google Mobile Ads package allows you to display five types of adverts; App Open, Interstitial, Rewarded, Rewarded Interstitial, and Banner.
4
+
5
+ ## App Open Ads
6
+
7
+ App open ads are a special ad format intended for publishers wishing to monetize their app load screens.
8
+ App open ads can be closed by your users at any time. App open ads can be shown when users bring your app to the foreground.
9
+
10
+ App open ads are shown when your application launches or when users bring your application to the foreground.
11
+ To make sure you have an ad ready to display when a user opens your app, you'll want to have a reference to an ad ready to use.
12
+
13
+ That means you must preload an app open ad before you need to show the ad. That way, your app open ad is ready to show the next time the app is opened.
14
+
15
+ To create a new app open ad, call the `createForAdRequest` method from the `AppOpenAd` class. The first argument
16
+ of the method is the "Ad Unit ID". For testing, we can use a Test ID, however for production the ID from the
17
+ Google AdMob dashboard under "Ad units" should be used:
18
+
19
+ ```js
20
+ import { AppOpenAd, TestIds, AdEventType } from 'react-native-google-mobile-ads';
21
+
22
+ const adUnitId = __DEV__ ? TestIds.APP_OPEN : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
23
+
24
+ const appOpenAd = AppOpenAd.createForAdRequest(adUnitId, {
25
+ keywords: ['fashion', 'clothing'],
26
+ });
27
+
28
+ // Preload an app open ad
29
+ appOpenAd.load();
30
+
31
+ // Show the app open ad when user brings the app to the foreground.
32
+ appOpenAd.show();
33
+ ```
34
+
35
+ ### Consider ad expiration
36
+
37
+ Key Point: Ad references in the app open beta will time out after four hours.
38
+ Ads rendered more than four hours after request time will no longer be valid and may not earn revenue.
39
+ This time limit is being carefully considered and may change in future beta versions of the app open format.
40
+
41
+ ### Cold starts and loading screens
42
+
43
+ The above documentation assumes that you only show app open ads when users foreground your app when it is suspended in memory.
44
+ "Cold starts" occur when your app is launched but was not previously suspended in memory.
45
+
46
+ An example of a cold start is when a user opens your app for the first time.
47
+ With cold starts, you won't have a previously loaded app open ad that's ready to be shown right away.
48
+ The delay between when you request an ad and receive an ad back can create a situation where users are able to briefly use your app before being surprised by an out of context ad.
49
+ This should be avoided because it is a bad user experience.
50
+
51
+ The preferred way to use app open ads on cold starts is to use a loading screen to load your game or app assets, and to only show the ad from the loading screen.
52
+ If your app has completed loading and has sent the user to the main content of your app, do not show the ad.
53
+
54
+ ### Best practices
55
+
56
+ Google built app open ads to help you monetize your app's loading screen, but it's important to keep best practices in mind so that your users enjoy using your app. Make sure to:
57
+
58
+ - Wait to show your first app open ad until after your users have used your app a few times.
59
+ - Show app open ads during times when your users would otherwise be waiting for your app to load.
60
+ - If you have a loading screen under the app open ad, and your loading screen completes loading before the ad is dismissed, you may want to dismiss your loading screen after receiving the `onAdClosed` event.
61
+
62
+ ## Interstitial Ads
63
+
64
+ Interstitials are full-screen ads that cover the interface of an app until closed by the user. These types of ads are
65
+ programmatically loaded and then shown at a suitable point during your application flow (e.g. after a level on a gaming
66
+ app has been completed, or game over). The ads can be preloaded in the background to ensure they're ready to go when needed.
67
+
68
+ To create a new interstitial, call the `createForAdRequest` method from the `InterstitialAd` class. The first argument
69
+ of the method is the "Ad Unit ID". For testing, we can use a Test ID, however for production the ID from the
70
+ Google AdMob dashboard under "Ad units" should be used:
71
+
72
+ ```js
73
+ import { InterstitialAd, TestIds, AdEventType } from 'react-native-google-mobile-ads';
74
+
75
+ const adUnitId = __DEV__ ? TestIds.INTERSTITIAL : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
76
+
77
+ const interstitial = InterstitialAd.createForAdRequest(adUnitId, {
78
+ keywords: ['fashion', 'clothing'],
79
+ });
80
+ ```
81
+
82
+ The second argument is additional optional request options object to be sent whilst loading an advert, such as keywords & location.
83
+ Setting additional request options helps AdMob choose better tailored ads from the network.
84
+ View the [`RequestOptions`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/types/RequestOptions.ts) source code to see the full range of options available.
85
+
86
+ The call to `createForAdRequest` returns an instance of the [`InterstitialAd`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/ads/InterstitialAd.ts) class,
87
+ which provides a number of utilities for loading and displaying interstitials.
88
+
89
+ To listen to events, such as when the advert from the network has loaded or when an error occurs, we can subscribe via the
90
+ `addAdEventListener` method:
91
+
92
+ ```jsx
93
+ import React, { useEffect, useState } from 'react';
94
+ import { Button, Platform, StatusBar } from 'react-native';
95
+ import { InterstitialAd, AdEventType, TestIds } from 'react-native-google-mobile-ads';
96
+
97
+ const adUnitId = __DEV__ ? TestIds.INTERSTITIAL : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
98
+
99
+ const interstitial = InterstitialAd.createForAdRequest(adUnitId, {
100
+ keywords: ['fashion', 'clothing'],
101
+ });
102
+
103
+ function App() {
104
+ const [loaded, setLoaded] = useState(false);
105
+
106
+ useEffect(() => {
107
+ const unsubscribeLoaded = interstitial.addAdEventListener(AdEventType.LOADED, () => {
108
+ setLoaded(true);
109
+ });
110
+
111
+ const unsubscribeOpened = interstitial.addAdEventListener(AdEventType.OPENED, () => {
112
+ if (Platform.OS === 'ios') {
113
+ // Prevent the close button from being unreachable by hiding the status bar on iOS
114
+ StatusBar.setHidden(true);
115
+ }
116
+ });
117
+
118
+ const unsubscribeClosed = interstitial.addAdEventListener(AdEventType.CLOSED, () => {
119
+ if (Platform.OS === 'ios') {
120
+ StatusBar.setHidden(false);
121
+ }
122
+ });
123
+
124
+ // Start loading the interstitial straight away
125
+ interstitial.load();
126
+
127
+ // Unsubscribe from events on unmount
128
+ return () => {
129
+ unsubscribeLoaded();
130
+ unsubscribeOpened();
131
+ unsubscribeClosed();
132
+ };
133
+ }, []);
134
+
135
+ // No advert ready to show yet
136
+ if (!loaded) {
137
+ return null;
138
+ }
139
+
140
+ return (
141
+ <Button
142
+ title="Show Interstitial"
143
+ onPress={() => {
144
+ interstitial.show();
145
+ }}
146
+ />
147
+ );
148
+ }
149
+ ```
150
+
151
+ The code above subscribes to the interstitial events (via `addAdEventListener()`) and immediately starts to load a new advert from
152
+ the network (via `load()`). Once an advert is available, local state is set, re-rendering the component showing a `Button`.
153
+ When pressed, the `show` method on the interstitial instance is called and the advert is shown over-the-top of your
154
+ application.
155
+
156
+ You can subscribe to other various events with `addAdEventListener` listener such as if the user clicks the advert,
157
+ or closes the advert and returns back to your app.
158
+ To see the full list of available events, view the [`AdEventType`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/AdEventType.ts) source code.
159
+
160
+ If needed, you can reuse the existing instance of the `InterstitialAd` class to load more adverts and show them when required.
161
+
162
+ ## Rewarded Ads
163
+
164
+ Rewarded Ads are full-screen ads that cover the interface of an app until closed by the user. The content of a rewarded
165
+ advert is controlled via the Google AdMob dashboard.
166
+
167
+ The purpose of a rewarded ad is to reward users with _something_ after completing an action inside of the advert, such
168
+ as watching a video or submitting an option via an interactive form. If the user completes the action, you can reward them
169
+ with something (e.g. in-game currency).
170
+
171
+ To create a new rewarded ad, call the `createForAdRequest` method from the `RewardedAd` class. The first argument
172
+ of the method is the "Ad Unit ID". For testing, we can use a Test ID, however for production the ID from the
173
+ Google AdMob dashboard under "Ad units" should be used:
174
+
175
+ ```js
176
+ import { RewardedAd, TestIds } from 'react-native-google-mobile-ads';
177
+
178
+ const adUnitId = __DEV__ ? TestIds.REWARDED : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
179
+
180
+ const rewarded = RewardedAd.createForAdRequest(adUnitId, {
181
+ keywords: ['fashion', 'clothing'],
182
+ });
183
+ ```
184
+
185
+ The second argument is additional optional request options object to be sent whilst loading an advert, such as keywords & location.
186
+ Setting additional request options helps AdMob choose better tailored ads from the network.
187
+ View the [`RequestOptions`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/types/RequestOptions.ts) source code to see the full range of options available.
188
+
189
+ The call to `createForAdRequest` returns an instance of the [`RewardedAd`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/ads/RewardedAd.ts) class,
190
+ which provides a number of utilities for loading and displaying rewarded ads.
191
+
192
+ To listen to events, such as when the advert from the network has loaded or when an error occurs, we can subscribe via the
193
+ `addAdEventListener` method:
194
+
195
+ ```js
196
+ import React, { useEffect, useState } from 'react';
197
+ import { Button } from 'react-native';
198
+ import { RewardedAd, RewardedAdEventType, TestIds } from 'react-native-google-mobile-ads';
199
+
200
+ const adUnitId = __DEV__ ? TestIds.REWARDED : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
201
+
202
+ const rewarded = RewardedAd.createForAdRequest(adUnitId, {
203
+ keywords: ['fashion', 'clothing'],
204
+ });
205
+
206
+ function App() {
207
+ const [loaded, setLoaded] = useState(false);
208
+
209
+ useEffect(() => {
210
+ const unsubscribeLoaded = rewarded.addAdEventListener(RewardedAdEventType.LOADED, () => {
211
+ setLoaded(true);
212
+ });
213
+ const unsubscribeEarned = rewarded.addAdEventListener(
214
+ RewardedAdEventType.EARNED_REWARD,
215
+ reward => {
216
+ console.log('User earned reward of ', reward);
217
+ },
218
+ );
219
+
220
+ // Start loading the rewarded ad straight away
221
+ rewarded.load();
222
+
223
+ // Unsubscribe from events on unmount
224
+ return () => {
225
+ unsubscribeLoaded();
226
+ unsubscribeEarned();
227
+ };
228
+ }, []);
229
+
230
+ // No advert ready to show yet
231
+ if (!loaded) {
232
+ return null;
233
+ }
234
+
235
+ return (
236
+ <Button
237
+ title="Show Rewarded Ad"
238
+ onPress={() => {
239
+ rewarded.show();
240
+ }}
241
+ />
242
+ );
243
+ }
244
+ ```
245
+
246
+ The code above subscribes to the rewarded ad events (via `addAdEventListener()`) and immediately starts to load a new advert from
247
+ the network (via `load()`). Once an advert is available, local state is set, re-rendering the component showing a `Button`.
248
+ When pressed, the `show` method on the rewarded ad instance is called and the advert is shown over-the-top of your
249
+ application.
250
+
251
+ Like Interstitial Ads, you can listen to the events with the `addAdEventListener` such as when the user clicks the advert or closes
252
+ the advert and returns back to your app. However, you can listen to an extra `EARNED_REWARD` event which is triggered when user completes the
253
+ advert action. An additional `reward` payload is sent with the event, containing the amount and type of rewarded (specified via the dashboard).
254
+
255
+ To learn more, view the [`RewardedAdEventType`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/RewardedAdEventType.ts) source code.
256
+
257
+ If needed, you can reuse the existing instance of the `RewardedAd` class to load more adverts and show them when required.
258
+
259
+ While the `EARNED_REWARD` event only occurs on the client, Server Side Verification (or SSV) can be used for confirming a user completed an advert action. For this, you have to specify the Server Side Verification callback URL in your Ads dashboard.
260
+
261
+ You can customize SSV parameters when your SSV callback is called by setting the `serverSideVerificationOptions` field in your [`RequestOptions`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/types/RequestOptions.ts) parameter.
262
+
263
+ ```js
264
+ const rewardedAd = RewardedAd.createForAdRequest(adUnitId, {
265
+ serverSideVerificationOptions: {
266
+ userId: '9999',
267
+ customData: 'my-custom-data',
268
+ },
269
+ });
270
+ ```
271
+
272
+ If you request an Advert as in the example above, AdMob will call your server with the `userId` and `customData` fields as shown below:
273
+
274
+ ```
275
+ [14/Aug/2020 12:51:43] "GET /views/admob-ssv/?ad_network=...&ad_unit=...&custom_data=my-custom-data&reward_amount=1&reward_item=test_reward_item&timestamp=1597377102267&transaction_id=148cc85...&user_id=9999&signature=MEUCIQCQSi3cQ2PlxlEAkpN...&key_id=3335... HTTP/1.1" 200 0
276
+ ```
277
+
278
+ You still need to verify these incoming requests yourself to ensure they are genuine. To learn more about callback parameters and verifying, see the [AdMob SDK Server Side Verification(SSV) documentation](https://developers.google.com/admob/android/rewarded-video-ssv).
279
+
280
+ ## Rewarded Interstitial Ads
281
+
282
+ Rewarded Interstitial Ads are full-screen ads that cover the interface of an app until closed by the user. The content of a rewarded interstitial
283
+ advert is controlled via the Google AdMob dashboard.
284
+
285
+ The purpose of a rewarded interstitial ad is to reward users with _something_ after completing an action inside of the advert, such
286
+ as watching a video or submitting an option via an interactive form. If the user completes the action, you can reward them
287
+ with something (e.g. in-game currency). Unlike rewarded ads, users aren't required to opt-in to view a rewarded interstitial.
288
+
289
+ To create a new rewarded interstitial ad, call the `createForAdRequest` method from the `RewardedInterstitialAd` class. The first argument
290
+ of the method is the "Ad Unit ID". For testing, we can use a Test ID, however for production the ID from the
291
+ Google AdMob dashboard under "Ad units" should be used:
292
+
293
+ ```js
294
+ import { RewardedInterstitialAd, TestIds } from 'react-native-google-mobile-ads';
295
+
296
+ const adUnitId = __DEV__
297
+ ? TestIds.REWARDED_INTERSTITIAL
298
+ : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
299
+
300
+ const rewardedInterstitial = RewardedInterstitialAd.createForAdRequest(adUnitId, {
301
+ keywords: ['fashion', 'clothing'],
302
+ });
303
+ ```
304
+
305
+ The second argument is additional optional request options object to be sent whilst loading an advert, such as keywords & location.
306
+ Setting additional request options helps AdMob choose better tailored ads from the network.
307
+ View the [`RequestOptions`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/types/RequestOptions.ts) source code to see the full range of options available.
308
+
309
+ The call to `createForAdRequest` returns an instance of the [`RewardedInterstitialAd`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/ads/RewardedInterstitialAd.ts) class,
310
+ which provides a number of utilities for loading and displaying rewarded interstitial ads.
311
+
312
+ To listen to events, such as when the advert from the network has loaded or when an error occurs, we can subscribe via the
313
+ `addAdEventListener` method:
314
+
315
+ ```js
316
+ import React, { useEffect, useState } from 'react';
317
+ import { Button } from 'react-native';
318
+ import {
319
+ RewardedInterstitialAd,
320
+ RewardedAdEventType,
321
+ TestIds,
322
+ } from 'react-native-google-mobile-ads';
323
+
324
+ const adUnitId = __DEV__
325
+ ? TestIds.REWARDED_INTERSTITIAL
326
+ : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
327
+
328
+ const rewardedInterstitial = RewardedInterstitialAd.createForAdRequest(adUnitId, {
329
+ keywords: ['fashion', 'clothing'],
330
+ });
331
+
332
+ function App() {
333
+ const [loaded, setLoaded] = useState(false);
334
+
335
+ useEffect(() => {
336
+ const unsubscribeLoaded = rewardedInterstitial.addAdEventListener(
337
+ RewardedAdEventType.LOADED,
338
+ () => {
339
+ setLoaded(true);
340
+ },
341
+ );
342
+ const unsubscribeEarned = rewardedInterstitial.addAdEventListener(
343
+ RewardedAdEventType.EARNED_REWARD,
344
+ reward => {
345
+ console.log('User earned reward of ', reward);
346
+ },
347
+ );
348
+
349
+ // Start loading the rewarded interstitial ad straight away
350
+ rewardedInterstitial.load();
351
+
352
+ // Unsubscribe from events on unmount
353
+ return () => {
354
+ unsubscribeLoaded();
355
+ unsubscribeEarned();
356
+ };
357
+ }, []);
358
+
359
+ // No advert ready to show yet
360
+ if (!loaded) {
361
+ return null;
362
+ }
363
+
364
+ return (
365
+ <Button
366
+ title="Show Rewarded Interstitial Ad"
367
+ onPress={() => {
368
+ rewardedInterstitial.show();
369
+ }}
370
+ />
371
+ );
372
+ }
373
+ ```
374
+
375
+ The code above subscribes to the rewarded interstitial ad events (via `addAdEventListener()`) and immediately starts to load a new advert from
376
+ the network (via `load()`). Once an advert is available, local state is set, re-rendering the component showing a `Button`.
377
+ When pressed, the `show` method on the rewarded interstitial ad instance is called and the advert is shown over-the-top of your
378
+ application.
379
+
380
+ Like Interstitial Ads, you can listen to the events with the `addAdEventListener` such as when the user clicks the advert or closes
381
+ the advert and returns back to your app. However, you can listen to an extra `EARNED_REWARD` event which is triggered when user completes the
382
+ advert action. An additional `reward` payload is sent with the event, containing the amount and type of rewarded (specified via the dashboard).
383
+
384
+ To learn more, view the [`RewardedAdEventType`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/RewardedAdEventType.ts) source code.
385
+
386
+ If needed, you can reuse the existing instance of the `RewardedInterstitialAd` class to load more adverts and show them when required.
387
+
388
+ While the `EARNED_REWARD` event only occurs on the client, Server Side Verification (or SSV) can be used for confirming a user completed an advert action. For this, you have to specify the Server Side Verification callback URL in your Ads dashboard.
389
+
390
+ You can customize SSV parameters when your SSV callback is called by setting the `serverSideVerificationOptions` field in your [`RequestOptions`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/types/RequestOptions.ts) parameter.
391
+
392
+ ```js
393
+ const rewardedInterstitialAd = RewardedInterstitialAd.createForAdRequest(adUnitId, {
394
+ serverSideVerificationOptions: {
395
+ userId: '9999',
396
+ customData: 'my-custom-data',
397
+ },
398
+ });
399
+ ```
400
+
401
+ If you request an Advert as in the example above, AdMob will call your server with the `userId` and `customData` fields as shown below:
402
+
403
+ ```
404
+ [14/Aug/2020 12:51:43] "GET /views/admob-ssv/?ad_network=...&ad_unit=...&custom_data=my-custom-data&reward_amount=1&reward_item=test_reward_item&timestamp=1597377102267&transaction_id=148cc85...&user_id=9999&signature=MEUCIQCQSi3cQ2PlxlEAkpN...&key_id=3335... HTTP/1.1" 200 0
405
+ ```
406
+
407
+ You still need to verify these incoming requests yourself to ensure they are genuine. To learn more about callback parameters and verifying, see the [AdMob SDK Server Side Verification(SSV) documentation](https://developers.google.com/admob/android/rewarded-video-ssv).
408
+
409
+ ## Banner Ads (component)
410
+
411
+ Banner ads are partial adverts which can be integrated within your existing application. Unlike Interstitial and Rewarded Ads,
412
+ a Banner only takes up a limited area of the application and displays an advert within the area. This allows you to integrate
413
+ adverts without a disruptive action.
414
+
415
+ The module exposes a [`BannerAd`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/ads/BannerAd.tsx) component. The `unitId` and `size` props are required to display
416
+ a banner:
417
+
418
+ ```js
419
+ import React, { useState, useRef } from 'react';
420
+ import { Platform } from 'react-native';
421
+ import { BannerAd, BannerAdSize, TestIds, useForeground } from 'react-native-google-mobile-ads';
422
+
423
+ const adUnitId = __DEV__ ? TestIds.ADAPTIVE_BANNER : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
424
+
425
+ function App() {
426
+ const bannerRef = useRef<BannerAd>(null);
427
+
428
+ // (iOS) WKWebView can terminate if app is in a "suspended state", resulting in an empty banner when app returns to foreground.
429
+ // Therefore it's advised to "manually" request a new ad when the app is foregrounded (https://groups.google.com/g/google-admob-ads-sdk/c/rwBpqOUr8m8).
430
+ useForeground(() => {
431
+ Platform.OS === 'ios' && bannerRef.current?.load();
432
+ });
433
+
434
+ return (
435
+ <BannerAd ref={bannerRef} unitId={adUnitId} size={BannerAdSize.LARGE_ANCHORED_ADAPTIVE_BANNER} />
436
+ );
437
+ }
438
+ ```
439
+
440
+ The `size` prop takes a [`BannerAdSize`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/BannerAdSize.ts) type, and once the advert is available, will
441
+ fill the space for the chosen size.
442
+
443
+ <Info>
444
+ If no inventory for the size specified is available, an error will be thrown via
445
+ `onAdFailedToLoad`!
446
+ </Info>
447
+
448
+ The `requestOptions` prop is additional optional request options object to be sent whilst loading an advert, such as keywords & location.
449
+ Setting additional request options helps AdMob choose better tailored ads from the network.
450
+ View the [`RequestOptions`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/types/RequestOptions.ts) documentation to view the full range of options available.
451
+
452
+ The component also exposes props for listening to events, which you can use to handle the state of your app is the user
453
+ or network triggers an event:
454
+
455
+ - `onAdClosed`
456
+ - `onAdFailedToLoad`
457
+ - `onAdLeftApplication`
458
+ - `onAdOpened`
459
+ - `onAdImpression`
460
+ - `onAdClicked`
461
+ - `onPaid` &mdash; On [impression-level ad revenue](https://support.google.com/admob/answer/11322405?hl=en) events.
462
+
463
+ Each render of the component loads a single advert, allowing you to display multiple adverts at once. If you need to reload/change
464
+ an advert for a currently mounted component, you'll need to force a re-render inside of your own code.
465
+
466
+ ### Collapsible banner ads
467
+
468
+ Collapsible banner ads are banner ads that are initially presented as a larger overlay, with a button to collapse them to the originally requested banner size.
469
+ Collapsible banner ads are intended to improve performance of anchored ads that are otherwise a smaller size.
470
+ This guide shows how to turn on collapsible banner ads for existing banner placements.
471
+
472
+ ```js
473
+ import React from 'react';
474
+ import { BannerAd, BannerAdSize, TestIds } from 'react-native-google-mobile-ads';
475
+
476
+ const adUnitId = __DEV__ ? TestIds.ADAPTIVE_BANNER : 'ca-app-pub-xxxxxxxxxxxxx/yyyyyyyyyyyyyy';
477
+
478
+ function App() {
479
+ return (
480
+ <BannerAd
481
+ unitId={adUnitId}
482
+ size={BannerAdSize.LARGE_ANCHORED_ADAPTIVE_BANNER}
483
+ requestOptions={{
484
+ networkExtras: {
485
+ collapsible: 'bottom',
486
+ },
487
+ }}
488
+ />
489
+ );
490
+ }
491
+ ```
492
+
493
+ ### Displaying Google Ad Manager Banner
494
+
495
+ You can also display a Google Ad Manager banner ad unit. In this case, you have to import `GAMBannerAd` component and use `sizes` prop instead of `size` prop:
496
+
497
+ ```js
498
+ import React from 'react';
499
+ import { GAMBannerAd, BannerAdSize, TestIds } from 'react-native-google-mobile-ads';
500
+
501
+ const adUnitId = __DEV__ ? TestIds.GAM_BANNER : '/xxx/yyyy';
502
+
503
+ function App() {
504
+ return <GAMBannerAd unitId={adUnitId} sizes={[BannerAdSize.FULL_BANNER]} />;
505
+ }
506
+ ```
507
+
508
+ The `sizes` prop takes an array of [`BannerAdSize`](https://github.com/invertase/react-native-google-mobile-ads/blob/main/src/BannerAdSize.ts) types.
509
+
510
+ ## Native Ads
511
+
512
+ Head over to the [Native Ads](/native-ads) documentation.