@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.
- package/LICENSE +32 -0
- package/README.md +181 -0
- package/RNGoogleMobileAds.podspec +74 -0
- package/__tests__/banner.test.tsx +53 -0
- package/__tests__/consent.test.ts +33 -0
- package/__tests__/googleMobileAds.test.ts +108 -0
- package/__tests__/interstitial.test.ts +140 -0
- package/__tests__/nativeEventEmitter.test.ts +72 -0
- package/__tests__/requestOptions.test.tsx +82 -0
- package/__tests__/rewarded.test.tsx +4 -0
- package/__tests__/showOptions.test.tsx +4 -0
- package/android/.editorconfig +10 -0
- package/android/app-json.gradle +69 -0
- package/android/build.gradle +149 -0
- package/android/lint.xml +5 -0
- package/android/settings.gradle +1 -0
- package/android/src/main/AndroidManifest.xml +23 -0
- package/android/src/main/java/io/invertase/googlemobileads/OnNativeEvent.kt +23 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeAppModule.java +152 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsAppOpenModule.kt +92 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java +303 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsCommon.java +277 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsConsentModule.java +293 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsEvent.java +76 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsFullScreenAdModule.kt +201 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsInterstitialModule.kt +92 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsMediaViewManager.java +79 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsModule.kt +178 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsNativeAdViewManager.java +164 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsNativeModule.kt +172 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsPackage.kt +113 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedInterstitialModule.kt +127 -0
- package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsRewardedModule.kt +121 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/RCTConvert.java +111 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeAdView.java +128 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeApp.java +34 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeEvent.java +41 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeEventEmitter.java +150 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeInitProvider.java +77 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeJSON.java +107 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeMeta.java +92 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeModule.java +96 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativePreferences.java +86 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/SharedUtils.java +429 -0
- package/android/src/main/java/io/invertase/googlemobileads/common/TaskExecutorService.java +124 -0
- package/android/src/main/java/io/invertase/googlemobileads/interfaces/ContextProvider.java +30 -0
- package/android/src/main/java/io/invertase/googlemobileads/interfaces/NativeError.java +28 -0
- package/android/src/main/java/io/invertase/googlemobileads/interfaces/NativeEvent.java +26 -0
- package/android/src/oldarch/com/facebook/react/viewmanagers/RNGoogleMobileAdsMediaViewManagerDelegate.java +32 -0
- package/android/src/oldarch/com/facebook/react/viewmanagers/RNGoogleMobileAdsMediaViewManagerInterface.java +10 -0
- package/android/src/oldarch/com/facebook/react/viewmanagers/RNGoogleMobileAdsNativeViewManagerDelegate.java +36 -0
- package/android/src/oldarch/com/facebook/react/viewmanagers/RNGoogleMobileAdsNativeViewManagerInterface.java +10 -0
- package/android/src/oldarch/io/invertase/googlemobileads/NativeGoogleMobileAdsNativeModuleSpec.kt +18 -0
- package/app.plugin.js +1 -0
- package/babel.config.js +8 -0
- package/docs/ad-inspector.mdx +47 -0
- package/docs/common-reasons-for-ads-not-showing.mdx +111 -0
- package/docs/displaying-ads-hook.mdx +103 -0
- package/docs/displaying-ads.mdx +512 -0
- package/docs/european-user-consent.mdx +315 -0
- package/docs/img/logo_admob_192px.svg +19 -0
- package/docs/impression-level-ad-revenue.mdx +41 -0
- package/docs/index.mdx +508 -0
- package/docs/mediation.mdx +323 -0
- package/docs/migrating-to-v15.mdx +7 -0
- package/docs/migrating-to-v5.mdx +63 -0
- package/docs/migrating-to-v6.mdx +111 -0
- package/docs/native-ads.mdx +385 -0
- package/docs/testing.mdx +17 -0
- package/docs/video-ad_volume-control.mdx +49 -0
- package/docs.json +36 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAds-Bridging-Header.h +5 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.h +36 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsAppOpenModule.mm +104 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerComponent.h +44 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerComponent.m +221 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerView.h +34 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerView.mm +282 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsBannerViewManager.mm +87 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsCommon.h +72 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsCommon.mm +248 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsConsentModule.h +36 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsConsentModule.mm +356 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenAd.h +53 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenAd.mm +220 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.h +36 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsFullScreenContentDelegate.mm +80 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.h +36 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsInterstitialModule.mm +106 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsMediaView.h +52 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsMediaView.mm +155 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsModule.h +32 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsModule.mm +180 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsNativeModule.h +35 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsNativeModule.mm +321 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsNativeView.h +51 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsNativeView.mm +251 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedInterstitialModule.h +37 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedInterstitialModule.mm +106 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.h +36 -0
- package/ios/RNGoogleMobileAds/RNGoogleMobileAdsRewardedModule.mm +104 -0
- package/ios/RNGoogleMobileAds/common/RNAppModule.h +24 -0
- package/ios/RNGoogleMobileAds/common/RNAppModule.mm +95 -0
- package/ios/RNGoogleMobileAds/common/RNRCTEventEmitter.h +73 -0
- package/ios/RNGoogleMobileAds/common/RNRCTEventEmitter.mm +150 -0
- package/ios/RNGoogleMobileAds/common/RNSharedUtils.h +43 -0
- package/ios/RNGoogleMobileAds/common/RNSharedUtils.mm +34 -0
- package/ios/RNGoogleMobileAds.xcodeproj/project.pbxproj +377 -0
- package/ios/RNGoogleMobileAds.xcodeproj/xcshareddata/IDETemplateMacros.plist +24 -0
- package/ios_config.sh +192 -0
- package/jest.config.js +7 -0
- package/jest.setup.ts +92 -0
- package/lib/commonjs/AdEventType.js +72 -0
- package/lib/commonjs/AdEventType.js.map +1 -0
- package/lib/commonjs/AdsConsent.js +117 -0
- package/lib/commonjs/AdsConsent.js.map +1 -0
- package/lib/commonjs/AdsConsentPurposes.js +180 -0
- package/lib/commonjs/AdsConsentPurposes.js.map +1 -0
- package/lib/commonjs/AdsConsentSpecialFeatures.js +54 -0
- package/lib/commonjs/AdsConsentSpecialFeatures.js.map +1 -0
- package/lib/commonjs/BannerAdSize.js +75 -0
- package/lib/commonjs/BannerAdSize.js.map +1 -0
- package/lib/commonjs/GAMAdEventType.js +44 -0
- package/lib/commonjs/GAMAdEventType.js.map +1 -0
- package/lib/commonjs/MaxAdContentRating.js +42 -0
- package/lib/commonjs/MaxAdContentRating.js.map +1 -0
- package/lib/commonjs/MobileAds.js +63 -0
- package/lib/commonjs/MobileAds.js.map +1 -0
- package/lib/commonjs/NativeAdEventType.js +50 -0
- package/lib/commonjs/NativeAdEventType.js.map +1 -0
- package/lib/commonjs/RewardedAdEventType.js +66 -0
- package/lib/commonjs/RewardedAdEventType.js.map +1 -0
- package/lib/commonjs/TestIds.js +66 -0
- package/lib/commonjs/TestIds.js.map +1 -0
- package/lib/commonjs/ads/AppOpenAd.js +54 -0
- package/lib/commonjs/ads/AppOpenAd.js.map +1 -0
- package/lib/commonjs/ads/BannerAd.js +45 -0
- package/lib/commonjs/ads/BannerAd.js.map +1 -0
- package/lib/commonjs/ads/BaseAd.js +155 -0
- package/lib/commonjs/ads/BaseAd.js.map +1 -0
- package/lib/commonjs/ads/GAMBannerAd.js +49 -0
- package/lib/commonjs/ads/GAMBannerAd.js.map +1 -0
- package/lib/commonjs/ads/GAMInterstitialAd.js +42 -0
- package/lib/commonjs/ads/GAMInterstitialAd.js.map +1 -0
- package/lib/commonjs/ads/InterstitialAd.js +115 -0
- package/lib/commonjs/ads/InterstitialAd.js.map +1 -0
- package/lib/commonjs/ads/MobileAd.js +153 -0
- package/lib/commonjs/ads/MobileAd.js.map +1 -0
- package/lib/commonjs/ads/RewardedAd.js +128 -0
- package/lib/commonjs/ads/RewardedAd.js.map +1 -0
- package/lib/commonjs/ads/RewardedInterstitialAd.js +128 -0
- package/lib/commonjs/ads/RewardedInterstitialAd.js.map +1 -0
- package/lib/commonjs/ads/native-ad/NativeAd.js +123 -0
- package/lib/commonjs/ads/native-ad/NativeAd.js.map +1 -0
- package/lib/commonjs/ads/native-ad/NativeAdContext.js +26 -0
- package/lib/commonjs/ads/native-ad/NativeAdContext.js.map +1 -0
- package/lib/commonjs/ads/native-ad/NativeAdView.js +52 -0
- package/lib/commonjs/ads/native-ad/NativeAdView.js.map +1 -0
- package/lib/commonjs/ads/native-ad/NativeAsset.js +70 -0
- package/lib/commonjs/ads/native-ad/NativeAsset.js.map +1 -0
- package/lib/commonjs/ads/native-ad/NativeMediaView.js +61 -0
- package/lib/commonjs/ads/native-ad/NativeMediaView.js.map +1 -0
- package/lib/commonjs/common/constants.js +17 -0
- package/lib/commonjs/common/constants.js.map +1 -0
- package/lib/commonjs/common/debounce.js +18 -0
- package/lib/commonjs/common/debounce.js.map +1 -0
- package/lib/commonjs/common/index.js +47 -0
- package/lib/commonjs/common/index.js.map +1 -0
- package/lib/commonjs/common/ref.js +46 -0
- package/lib/commonjs/common/ref.js.map +1 -0
- package/lib/commonjs/common/validate.js +132 -0
- package/lib/commonjs/common/validate.js.map +1 -0
- package/lib/commonjs/declarations.d.js +2 -0
- package/lib/commonjs/declarations.d.js.map +1 -0
- package/lib/commonjs/hooks/useAppOpenAd.js +44 -0
- package/lib/commonjs/hooks/useAppOpenAd.js.map +1 -0
- package/lib/commonjs/hooks/useForeground.js +45 -0
- package/lib/commonjs/hooks/useForeground.js.map +1 -0
- package/lib/commonjs/hooks/useFullScreenAd.js +121 -0
- package/lib/commonjs/hooks/useFullScreenAd.js.map +1 -0
- package/lib/commonjs/hooks/useInterstitialAd.js +44 -0
- package/lib/commonjs/hooks/useInterstitialAd.js.map +1 -0
- package/lib/commonjs/hooks/useRewardedAd.js +44 -0
- package/lib/commonjs/hooks/useRewardedAd.js.map +1 -0
- package/lib/commonjs/hooks/useRewardedInterstitialAd.js +44 -0
- package/lib/commonjs/hooks/useRewardedInterstitialAd.js.map +1 -0
- package/lib/commonjs/index.js +337 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/internal/GoogleMobileAdsNativeEventEmitter.js +54 -0
- package/lib/commonjs/internal/GoogleMobileAdsNativeEventEmitter.js.map +1 -0
- package/lib/commonjs/internal/NativeError.js +53 -0
- package/lib/commonjs/internal/NativeError.js.map +1 -0
- package/lib/commonjs/internal/SharedEventEmitter.js +27 -0
- package/lib/commonjs/internal/SharedEventEmitter.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts +62 -0
- package/lib/commonjs/specs/components/GoogleMobileAdsMediaViewNativeComponent.ts +30 -0
- package/lib/commonjs/specs/components/GoogleMobileAdsNativeViewNativeComponent.ts +45 -0
- package/lib/commonjs/specs/modules/NativeAppModule.js +24 -0
- package/lib/commonjs/specs/modules/NativeAppModule.js.map +1 -0
- package/lib/commonjs/specs/modules/NativeAppOpenModule.js +25 -0
- package/lib/commonjs/specs/modules/NativeAppOpenModule.js.map +1 -0
- package/lib/commonjs/specs/modules/NativeConsentModule.js +105 -0
- package/lib/commonjs/specs/modules/NativeConsentModule.js.map +1 -0
- package/lib/commonjs/specs/modules/NativeGoogleMobileAdsModule.js +25 -0
- package/lib/commonjs/specs/modules/NativeGoogleMobileAdsModule.js.map +1 -0
- package/lib/commonjs/specs/modules/NativeGoogleMobileAdsNativeModule.js +25 -0
- package/lib/commonjs/specs/modules/NativeGoogleMobileAdsNativeModule.js.map +1 -0
- package/lib/commonjs/specs/modules/NativeInterstitialModule.js +25 -0
- package/lib/commonjs/specs/modules/NativeInterstitialModule.js.map +1 -0
- package/lib/commonjs/specs/modules/NativeRewardedInterstitialModule.js +25 -0
- package/lib/commonjs/specs/modules/NativeRewardedInterstitialModule.js.map +1 -0
- package/lib/commonjs/specs/modules/NativeRewardedModule.js +25 -0
- package/lib/commonjs/specs/modules/NativeRewardedModule.js.map +1 -0
- package/lib/commonjs/types/AdEventListener.js +6 -0
- package/lib/commonjs/types/AdEventListener.js.map +1 -0
- package/lib/commonjs/types/AdEventsListener.js +6 -0
- package/lib/commonjs/types/AdEventsListener.js.map +1 -0
- package/lib/commonjs/types/AdShowOptions.js +2 -0
- package/lib/commonjs/types/AdShowOptions.js.map +1 -0
- package/lib/commonjs/types/AdStates.js +6 -0
- package/lib/commonjs/types/AdStates.js.map +1 -0
- package/lib/commonjs/types/AdapterStatus.js +21 -0
- package/lib/commonjs/types/AdapterStatus.js.map +1 -0
- package/lib/commonjs/types/AppEvent.js +2 -0
- package/lib/commonjs/types/AppEvent.js.map +1 -0
- package/lib/commonjs/types/BannerAdProps.js +6 -0
- package/lib/commonjs/types/BannerAdProps.js.map +1 -0
- package/lib/commonjs/types/MobileAd.interface.js +6 -0
- package/lib/commonjs/types/MobileAd.interface.js.map +1 -0
- package/lib/commonjs/types/MobileAdsModule.interface.js +6 -0
- package/lib/commonjs/types/MobileAdsModule.interface.js.map +1 -0
- package/lib/commonjs/types/NativeAdRequestOptions.js +37 -0
- package/lib/commonjs/types/NativeAdRequestOptions.js.map +1 -0
- package/lib/commonjs/types/PaidEventListener.js +6 -0
- package/lib/commonjs/types/PaidEventListener.js.map +1 -0
- package/lib/commonjs/types/RequestConfiguration.js +6 -0
- package/lib/commonjs/types/RequestConfiguration.js.map +1 -0
- package/lib/commonjs/types/RequestOptions.js +2 -0
- package/lib/commonjs/types/RequestOptions.js.map +1 -0
- package/lib/commonjs/types/RewardedAdReward.js +2 -0
- package/lib/commonjs/types/RewardedAdReward.js.map +1 -0
- package/lib/commonjs/types/index.js +138 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/validateAdRequestConfiguration.js +57 -0
- package/lib/commonjs/validateAdRequestConfiguration.js.map +1 -0
- package/lib/commonjs/validateAdRequestOptions.js +121 -0
- package/lib/commonjs/validateAdRequestOptions.js.map +1 -0
- package/lib/commonjs/validateAdShowOptions.js +41 -0
- package/lib/commonjs/validateAdShowOptions.js.map +1 -0
- package/lib/commonjs/validateNativeAdRequestOptions.js +51 -0
- package/lib/commonjs/validateNativeAdRequestOptions.js.map +1 -0
- package/lib/commonjs/version.js +9 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/AdEventType.js +69 -0
- package/lib/module/AdEventType.js.map +1 -0
- package/lib/module/AdsConsent.js +113 -0
- package/lib/module/AdsConsent.js.map +1 -0
- package/lib/module/AdsConsentPurposes.js +177 -0
- package/lib/module/AdsConsentPurposes.js.map +1 -0
- package/lib/module/AdsConsentSpecialFeatures.js +51 -0
- package/lib/module/AdsConsentSpecialFeatures.js.map +1 -0
- package/lib/module/BannerAdSize.js +72 -0
- package/lib/module/BannerAdSize.js.map +1 -0
- package/lib/module/GAMAdEventType.js +41 -0
- package/lib/module/GAMAdEventType.js.map +1 -0
- package/lib/module/MaxAdContentRating.js +39 -0
- package/lib/module/MaxAdContentRating.js.map +1 -0
- package/lib/module/MobileAds.js +57 -0
- package/lib/module/MobileAds.js.map +1 -0
- package/lib/module/NativeAdEventType.js +46 -0
- package/lib/module/NativeAdEventType.js.map +1 -0
- package/lib/module/RewardedAdEventType.js +63 -0
- package/lib/module/RewardedAdEventType.js.map +1 -0
- package/lib/module/TestIds.js +62 -0
- package/lib/module/TestIds.js.map +1 -0
- package/lib/module/ads/AppOpenAd.js +48 -0
- package/lib/module/ads/AppOpenAd.js.map +1 -0
- package/lib/module/ads/BannerAd.js +39 -0
- package/lib/module/ads/BannerAd.js.map +1 -0
- package/lib/module/ads/BaseAd.js +149 -0
- package/lib/module/ads/BaseAd.js.map +1 -0
- package/lib/module/ads/GAMBannerAd.js +43 -0
- package/lib/module/ads/GAMBannerAd.js.map +1 -0
- package/lib/module/ads/GAMInterstitialAd.js +37 -0
- package/lib/module/ads/GAMInterstitialAd.js.map +1 -0
- package/lib/module/ads/InterstitialAd.js +110 -0
- package/lib/module/ads/InterstitialAd.js.map +1 -0
- package/lib/module/ads/MobileAd.js +148 -0
- package/lib/module/ads/MobileAd.js.map +1 -0
- package/lib/module/ads/RewardedAd.js +123 -0
- package/lib/module/ads/RewardedAd.js.map +1 -0
- package/lib/module/ads/RewardedInterstitialAd.js +123 -0
- package/lib/module/ads/RewardedInterstitialAd.js.map +1 -0
- package/lib/module/ads/native-ad/NativeAd.js +117 -0
- package/lib/module/ads/native-ad/NativeAd.js.map +1 -0
- package/lib/module/ads/native-ad/NativeAdContext.js +22 -0
- package/lib/module/ads/native-ad/NativeAdContext.js.map +1 -0
- package/lib/module/ads/native-ad/NativeAdView.js +45 -0
- package/lib/module/ads/native-ad/NativeAdView.js.map +1 -0
- package/lib/module/ads/native-ad/NativeAsset.js +65 -0
- package/lib/module/ads/native-ad/NativeAsset.js.map +1 -0
- package/lib/module/ads/native-ad/NativeMediaView.js +54 -0
- package/lib/module/ads/native-ad/NativeMediaView.js.map +1 -0
- package/lib/module/common/constants.js +13 -0
- package/lib/module/common/constants.js.map +1 -0
- package/lib/module/common/debounce.js +13 -0
- package/lib/module/common/debounce.js.map +1 -0
- package/lib/module/common/index.js +28 -0
- package/lib/module/common/index.js.map +1 -0
- package/lib/module/common/ref.js +41 -0
- package/lib/module/common/ref.js.map +1 -0
- package/lib/module/common/validate.js +119 -0
- package/lib/module/common/validate.js.map +1 -0
- package/lib/module/declarations.d.js +2 -0
- package/lib/module/declarations.d.js.map +1 -0
- package/lib/module/hooks/useAppOpenAd.js +40 -0
- package/lib/module/hooks/useAppOpenAd.js.map +1 -0
- package/lib/module/hooks/useForeground.js +42 -0
- package/lib/module/hooks/useForeground.js.map +1 -0
- package/lib/module/hooks/useFullScreenAd.js +117 -0
- package/lib/module/hooks/useFullScreenAd.js.map +1 -0
- package/lib/module/hooks/useInterstitialAd.js +40 -0
- package/lib/module/hooks/useInterstitialAd.js.map +1 -0
- package/lib/module/hooks/useRewardedAd.js +40 -0
- package/lib/module/hooks/useRewardedAd.js.map +1 -0
- package/lib/module/hooks/useRewardedInterstitialAd.js +40 -0
- package/lib/module/hooks/useRewardedInterstitialAd.js.map +1 -0
- package/lib/module/index.js +54 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/internal/GoogleMobileAdsNativeEventEmitter.js +49 -0
- package/lib/module/internal/GoogleMobileAdsNativeEventEmitter.js.map +1 -0
- package/lib/module/internal/NativeError.js +48 -0
- package/lib/module/internal/NativeError.js.map +1 -0
- package/lib/module/internal/SharedEventEmitter.js +22 -0
- package/lib/module/internal/SharedEventEmitter.js.map +1 -0
- package/lib/module/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts +62 -0
- package/lib/module/specs/components/GoogleMobileAdsMediaViewNativeComponent.ts +30 -0
- package/lib/module/specs/components/GoogleMobileAdsNativeViewNativeComponent.ts +45 -0
- package/lib/module/specs/modules/NativeAppModule.js +21 -0
- package/lib/module/specs/modules/NativeAppModule.js.map +1 -0
- package/lib/module/specs/modules/NativeAppOpenModule.js +22 -0
- package/lib/module/specs/modules/NativeAppOpenModule.js.map +1 -0
- package/lib/module/specs/modules/NativeConsentModule.js +108 -0
- package/lib/module/specs/modules/NativeConsentModule.js.map +1 -0
- package/lib/module/specs/modules/NativeGoogleMobileAdsModule.js +22 -0
- package/lib/module/specs/modules/NativeGoogleMobileAdsModule.js.map +1 -0
- package/lib/module/specs/modules/NativeGoogleMobileAdsNativeModule.js +22 -0
- package/lib/module/specs/modules/NativeGoogleMobileAdsNativeModule.js.map +1 -0
- package/lib/module/specs/modules/NativeInterstitialModule.js +22 -0
- package/lib/module/specs/modules/NativeInterstitialModule.js.map +1 -0
- package/lib/module/specs/modules/NativeRewardedInterstitialModule.js +22 -0
- package/lib/module/specs/modules/NativeRewardedInterstitialModule.js.map +1 -0
- package/lib/module/specs/modules/NativeRewardedModule.js +22 -0
- package/lib/module/specs/modules/NativeRewardedModule.js.map +1 -0
- package/lib/module/types/AdEventListener.js +4 -0
- package/lib/module/types/AdEventListener.js.map +1 -0
- package/lib/module/types/AdEventsListener.js +4 -0
- package/lib/module/types/AdEventsListener.js.map +1 -0
- package/lib/module/types/AdShowOptions.js +2 -0
- package/lib/module/types/AdShowOptions.js.map +1 -0
- package/lib/module/types/AdStates.js +4 -0
- package/lib/module/types/AdStates.js.map +1 -0
- package/lib/module/types/AdapterStatus.js +18 -0
- package/lib/module/types/AdapterStatus.js.map +1 -0
- package/lib/module/types/AppEvent.js +2 -0
- package/lib/module/types/AppEvent.js.map +1 -0
- package/lib/module/types/BannerAdProps.js +4 -0
- package/lib/module/types/BannerAdProps.js.map +1 -0
- package/lib/module/types/MobileAd.interface.js +4 -0
- package/lib/module/types/MobileAd.interface.js.map +1 -0
- package/lib/module/types/MobileAdsModule.interface.js +4 -0
- package/lib/module/types/MobileAdsModule.interface.js.map +1 -0
- package/lib/module/types/NativeAdRequestOptions.js +34 -0
- package/lib/module/types/NativeAdRequestOptions.js.map +1 -0
- package/lib/module/types/PaidEventListener.js +4 -0
- package/lib/module/types/PaidEventListener.js.map +1 -0
- package/lib/module/types/RequestConfiguration.js +4 -0
- package/lib/module/types/RequestConfiguration.js.map +1 -0
- package/lib/module/types/RequestOptions.js +2 -0
- package/lib/module/types/RequestOptions.js.map +1 -0
- package/lib/module/types/RewardedAdReward.js +2 -0
- package/lib/module/types/RewardedAdReward.js.map +1 -0
- package/lib/module/types/index.js +32 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/validateAdRequestConfiguration.js +53 -0
- package/lib/module/validateAdRequestConfiguration.js.map +1 -0
- package/lib/module/validateAdRequestOptions.js +117 -0
- package/lib/module/validateAdRequestOptions.js.map +1 -0
- package/lib/module/validateAdShowOptions.js +37 -0
- package/lib/module/validateAdShowOptions.js.map +1 -0
- package/lib/module/validateNativeAdRequestOptions.js +47 -0
- package/lib/module/validateNativeAdRequestOptions.js.map +1 -0
- package/lib/module/version.js +5 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/AdEventType.d.ts +49 -0
- package/lib/typescript/AdEventType.d.ts.map +1 -0
- package/lib/typescript/AdsConsent.d.ts +3 -0
- package/lib/typescript/AdsConsent.d.ts.map +1 -0
- package/lib/typescript/AdsConsentPurposes.d.ts +149 -0
- package/lib/typescript/AdsConsentPurposes.d.ts.map +1 -0
- package/lib/typescript/AdsConsentSpecialFeatures.d.ts +23 -0
- package/lib/typescript/AdsConsentSpecialFeatures.d.ts.map +1 -0
- package/lib/typescript/BannerAdSize.d.ts +91 -0
- package/lib/typescript/BannerAdSize.d.ts.map +1 -0
- package/lib/typescript/GAMAdEventType.d.ts +21 -0
- package/lib/typescript/GAMAdEventType.d.ts.map +1 -0
- package/lib/typescript/MaxAdContentRating.d.ts +19 -0
- package/lib/typescript/MaxAdContentRating.d.ts.map +1 -0
- package/lib/typescript/MobileAds.d.ts +15 -0
- package/lib/typescript/MobileAds.d.ts.map +1 -0
- package/lib/typescript/NativeAdEventType.d.ts +43 -0
- package/lib/typescript/NativeAdEventType.d.ts.map +1 -0
- package/lib/typescript/RewardedAdEventType.d.ts +43 -0
- package/lib/typescript/RewardedAdEventType.d.ts.map +1 -0
- package/lib/typescript/TestIds.d.ts +19 -0
- package/lib/typescript/TestIds.d.ts.map +1 -0
- package/lib/typescript/ads/AppOpenAd.d.ts +12 -0
- package/lib/typescript/ads/AppOpenAd.d.ts.map +1 -0
- package/lib/typescript/ads/BannerAd.d.ts +8 -0
- package/lib/typescript/ads/BannerAd.d.ts.map +1 -0
- package/lib/typescript/ads/BaseAd.d.ts +4 -0
- package/lib/typescript/ads/BaseAd.d.ts.map +1 -0
- package/lib/typescript/ads/GAMBannerAd.d.ts +9 -0
- package/lib/typescript/ads/GAMBannerAd.d.ts.map +1 -0
- package/lib/typescript/ads/GAMInterstitialAd.d.ts +34 -0
- package/lib/typescript/ads/GAMInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/ads/InterstitialAd.d.ts +73 -0
- package/lib/typescript/ads/InterstitialAd.d.ts.map +1 -0
- package/lib/typescript/ads/MobileAd.d.ts +54 -0
- package/lib/typescript/ads/MobileAd.d.ts.map +1 -0
- package/lib/typescript/ads/RewardedAd.d.ts +83 -0
- package/lib/typescript/ads/RewardedAd.d.ts.map +1 -0
- package/lib/typescript/ads/RewardedInterstitialAd.d.ts +83 -0
- package/lib/typescript/ads/RewardedInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/ads/native-ad/NativeAd.d.ts +48 -0
- package/lib/typescript/ads/native-ad/NativeAd.d.ts.map +1 -0
- package/lib/typescript/ads/native-ad/NativeAdContext.d.ts +10 -0
- package/lib/typescript/ads/native-ad/NativeAdContext.d.ts.map +1 -0
- package/lib/typescript/ads/native-ad/NativeAdView.d.ts +8 -0
- package/lib/typescript/ads/native-ad/NativeAdView.d.ts.map +1 -0
- package/lib/typescript/ads/native-ad/NativeAsset.d.ts +18 -0
- package/lib/typescript/ads/native-ad/NativeAsset.d.ts.map +1 -0
- package/lib/typescript/ads/native-ad/NativeMediaView.d.ts +7 -0
- package/lib/typescript/ads/native-ad/NativeMediaView.d.ts.map +1 -0
- package/lib/typescript/common/constants.d.ts +7 -0
- package/lib/typescript/common/constants.d.ts.map +1 -0
- package/lib/typescript/common/debounce.d.ts +2 -0
- package/lib/typescript/common/debounce.d.ts.map +1 -0
- package/lib/typescript/common/index.d.ts +4 -0
- package/lib/typescript/common/index.d.ts.map +1 -0
- package/lib/typescript/common/ref.d.ts +13 -0
- package/lib/typescript/common/ref.d.ts.map +1 -0
- package/lib/typescript/common/validate.d.ts +62 -0
- package/lib/typescript/common/validate.d.ts.map +1 -0
- package/lib/typescript/hooks/useAppOpenAd.d.ts +10 -0
- package/lib/typescript/hooks/useAppOpenAd.d.ts.map +1 -0
- package/lib/typescript/hooks/useForeground.d.ts +7 -0
- package/lib/typescript/hooks/useForeground.d.ts.map +1 -0
- package/lib/typescript/hooks/useFullScreenAd.d.ts +7 -0
- package/lib/typescript/hooks/useFullScreenAd.d.ts.map +1 -0
- package/lib/typescript/hooks/useInterstitialAd.d.ts +10 -0
- package/lib/typescript/hooks/useInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/hooks/useRewardedAd.d.ts +10 -0
- package/lib/typescript/hooks/useRewardedAd.d.ts.map +1 -0
- package/lib/typescript/hooks/useRewardedInterstitialAd.d.ts +10 -0
- package/lib/typescript/hooks/useRewardedInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +32 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/internal/GoogleMobileAdsNativeEventEmitter.d.ts +13 -0
- package/lib/typescript/internal/GoogleMobileAdsNativeEventEmitter.d.ts.map +1 -0
- package/lib/typescript/internal/NativeError.d.ts +27 -0
- package/lib/typescript/internal/NativeError.d.ts.map +1 -0
- package/lib/typescript/internal/SharedEventEmitter.d.ts +3 -0
- package/lib/typescript/internal/SharedEventEmitter.d.ts.map +1 -0
- package/lib/typescript/specs/components/GoogleMobileAdsBannerViewNativeComponent.d.ts +35 -0
- package/lib/typescript/specs/components/GoogleMobileAdsBannerViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/specs/components/GoogleMobileAdsMediaViewNativeComponent.d.ts +9 -0
- package/lib/typescript/specs/components/GoogleMobileAdsMediaViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/specs/components/GoogleMobileAdsNativeViewNativeComponent.d.ts +14 -0
- package/lib/typescript/specs/components/GoogleMobileAdsNativeViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/specs/modules/NativeAppModule.d.ts +23 -0
- package/lib/typescript/specs/modules/NativeAppModule.d.ts.map +1 -0
- package/lib/typescript/specs/modules/NativeAppOpenModule.d.ts +25 -0
- package/lib/typescript/specs/modules/NativeAppOpenModule.d.ts.map +1 -0
- package/lib/typescript/specs/modules/NativeConsentModule.d.ts +498 -0
- package/lib/typescript/specs/modules/NativeConsentModule.d.ts.map +1 -0
- package/lib/typescript/specs/modules/NativeGoogleMobileAdsModule.d.ts +14 -0
- package/lib/typescript/specs/modules/NativeGoogleMobileAdsModule.d.ts.map +1 -0
- package/lib/typescript/specs/modules/NativeGoogleMobileAdsNativeModule.d.ts +42 -0
- package/lib/typescript/specs/modules/NativeGoogleMobileAdsNativeModule.d.ts.map +1 -0
- package/lib/typescript/specs/modules/NativeInterstitialModule.d.ts +25 -0
- package/lib/typescript/specs/modules/NativeInterstitialModule.d.ts.map +1 -0
- package/lib/typescript/specs/modules/NativeRewardedInterstitialModule.d.ts +25 -0
- package/lib/typescript/specs/modules/NativeRewardedInterstitialModule.d.ts.map +1 -0
- package/lib/typescript/specs/modules/NativeRewardedModule.d.ts +25 -0
- package/lib/typescript/specs/modules/NativeRewardedModule.d.ts.map +1 -0
- package/lib/typescript/types/AdEventListener.d.ts +8 -0
- package/lib/typescript/types/AdEventListener.d.ts.map +1 -0
- package/lib/typescript/types/AdEventsListener.d.ts +9 -0
- package/lib/typescript/types/AdEventsListener.d.ts.map +1 -0
- package/lib/typescript/types/AdShowOptions.d.ts +13 -0
- package/lib/typescript/types/AdShowOptions.d.ts.map +1 -0
- package/lib/typescript/types/AdStates.d.ts +91 -0
- package/lib/typescript/types/AdStates.d.ts.map +1 -0
- package/lib/typescript/types/AdapterStatus.d.ts +19 -0
- package/lib/typescript/types/AdapterStatus.d.ts.map +1 -0
- package/lib/typescript/types/AppEvent.d.ts +14 -0
- package/lib/typescript/types/AppEvent.d.ts.map +1 -0
- package/lib/typescript/types/BannerAdProps.d.ts +175 -0
- package/lib/typescript/types/BannerAdProps.d.ts.map +1 -0
- package/lib/typescript/types/MobileAd.interface.d.ts +90 -0
- package/lib/typescript/types/MobileAd.interface.d.ts.map +1 -0
- package/lib/typescript/types/MobileAdsModule.interface.d.ts +75 -0
- package/lib/typescript/types/MobileAdsModule.interface.d.ts.map +1 -0
- package/lib/typescript/types/NativeAdRequestOptions.d.ts +36 -0
- package/lib/typescript/types/NativeAdRequestOptions.d.ts.map +1 -0
- package/lib/typescript/types/PaidEventListener.d.ts +8 -0
- package/lib/typescript/types/PaidEventListener.d.ts.map +1 -0
- package/lib/typescript/types/RequestConfiguration.d.ts +37 -0
- package/lib/typescript/types/RequestConfiguration.d.ts.map +1 -0
- package/lib/typescript/types/RequestOptions.d.ts +133 -0
- package/lib/typescript/types/RequestOptions.d.ts.map +1 -0
- package/lib/typescript/types/RewardedAdReward.d.ts +14 -0
- package/lib/typescript/types/RewardedAdReward.d.ts.map +1 -0
- package/lib/typescript/types/index.d.ts +13 -0
- package/lib/typescript/types/index.d.ts.map +1 -0
- package/lib/typescript/validateAdRequestConfiguration.d.ts +3 -0
- package/lib/typescript/validateAdRequestConfiguration.d.ts.map +1 -0
- package/lib/typescript/validateAdRequestOptions.d.ts +3 -0
- package/lib/typescript/validateAdRequestOptions.d.ts.map +1 -0
- package/lib/typescript/validateAdShowOptions.d.ts +3 -0
- package/lib/typescript/validateAdShowOptions.d.ts.map +1 -0
- package/lib/typescript/validateNativeAdRequestOptions.d.ts +3 -0
- package/lib/typescript/validateNativeAdRequestOptions.d.ts.map +1 -0
- package/lib/typescript/version.d.ts +2 -0
- package/lib/typescript/version.d.ts.map +1 -0
- package/package.json +176 -0
- package/plugin/__tests__/__snapshots__/plugin.test.ts.snap +739 -0
- package/plugin/__tests__/fixtures/app.config.js +24 -0
- package/plugin/__tests__/fixtures/app.config.ts +24 -0
- package/plugin/__tests__/fixtures/app.json +24 -0
- package/plugin/__tests__/fixtures/package.json +19 -0
- package/plugin/__tests__/fixtures/without-params/app.config.js +11 -0
- package/plugin/__tests__/fixtures/without-params/app.config.ts +11 -0
- package/plugin/__tests__/fixtures/without-params/app.json +11 -0
- package/plugin/__tests__/plugin.test.ts +115 -0
- package/plugin/build/index.d.ts +12 -0
- package/plugin/build/index.js +109 -0
- package/plugin/jest.config.js +1 -0
- package/plugin/src/index.ts +205 -0
- package/plugin/tsconfig.json +9 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/react-native.config.js +19 -0
- package/src/AdEventType.ts +70 -0
- package/src/AdsConsent.ts +170 -0
- package/src/AdsConsentPurposes.ts +182 -0
- package/src/AdsConsentSpecialFeatures.ts +48 -0
- package/src/BannerAdSize.ts +78 -0
- package/src/GAMAdEventType.ts +37 -0
- package/src/MaxAdContentRating.ts +38 -0
- package/src/MobileAds.ts +77 -0
- package/src/NativeAdEventType.ts +51 -0
- package/src/RewardedAdEventType.ts +60 -0
- package/src/TestIds.ts +60 -0
- package/src/ads/AppOpenAd.ts +62 -0
- package/src/ads/BannerAd.tsx +37 -0
- package/src/ads/BaseAd.tsx +185 -0
- package/src/ads/GAMBannerAd.tsx +43 -0
- package/src/ads/GAMInterstitialAd.ts +45 -0
- package/src/ads/InterstitialAd.ts +122 -0
- package/src/ads/MobileAd.ts +227 -0
- package/src/ads/RewardedAd.ts +142 -0
- package/src/ads/RewardedInterstitialAd.ts +144 -0
- package/src/ads/native-ad/NativeAd.ts +159 -0
- package/src/ads/native-ad/NativeAdContext.ts +26 -0
- package/src/ads/native-ad/NativeAdView.tsx +43 -0
- package/src/ads/native-ad/NativeAsset.tsx +66 -0
- package/src/ads/native-ad/NativeMediaView.tsx +44 -0
- package/src/common/constants.ts +9 -0
- package/src/common/debounce.ts +15 -0
- package/src/common/index.ts +30 -0
- package/src/common/ref.ts +46 -0
- package/src/common/validate.ts +116 -0
- package/src/declarations.d.ts +3 -0
- package/src/hooks/useAppOpenAd.ts +46 -0
- package/src/hooks/useForeground.ts +41 -0
- package/src/hooks/useFullScreenAd.ts +112 -0
- package/src/hooks/useInterstitialAd.ts +46 -0
- package/src/hooks/useRewardedAd.ts +46 -0
- package/src/hooks/useRewardedInterstitialAd.ts +47 -0
- package/src/index.ts +60 -0
- package/src/internal/GoogleMobileAdsNativeEventEmitter.ts +58 -0
- package/src/internal/NativeError.ts +56 -0
- package/src/internal/SharedEventEmitter.ts +20 -0
- package/src/specs/components/GoogleMobileAdsBannerViewNativeComponent.ts +62 -0
- package/src/specs/components/GoogleMobileAdsMediaViewNativeComponent.ts +30 -0
- package/src/specs/components/GoogleMobileAdsNativeViewNativeComponent.ts +45 -0
- package/src/specs/modules/NativeAppModule.ts +57 -0
- package/src/specs/modules/NativeAppOpenModule.ts +26 -0
- package/src/specs/modules/NativeConsentModule.ts +532 -0
- package/src/specs/modules/NativeGoogleMobileAdsModule.ts +33 -0
- package/src/specs/modules/NativeGoogleMobileAdsNativeModule.ts +70 -0
- package/src/specs/modules/NativeInterstitialModule.ts +26 -0
- package/src/specs/modules/NativeRewardedInterstitialModule.ts +32 -0
- package/src/specs/modules/NativeRewardedModule.ts +26 -0
- package/src/types/AdEventListener.ts +34 -0
- package/src/types/AdEventsListener.ts +24 -0
- package/src/types/AdShowOptions.ts +12 -0
- package/src/types/AdStates.ts +92 -0
- package/src/types/AdapterStatus.ts +20 -0
- package/src/types/AppEvent.ts +14 -0
- package/src/types/BannerAdProps.ts +184 -0
- package/src/types/MobileAd.interface.ts +113 -0
- package/src/types/MobileAdsModule.interface.ts +80 -0
- package/src/types/NativeAdRequestOptions.ts +55 -0
- package/src/types/PaidEventListener.ts +9 -0
- package/src/types/RequestConfiguration.ts +40 -0
- package/src/types/RequestOptions.ts +137 -0
- package/src/types/RewardedAdReward.ts +14 -0
- package/src/types/index.ts +29 -0
- package/src/validateAdRequestConfiguration.ts +66 -0
- package/src/validateAdRequestOptions.ts +154 -0
- package/src/validateAdShowOptions.ts +41 -0
- package/src/validateNativeAdRequestOptions.ts +50 -0
- package/src/version.ts +2 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
package io.invertase.googlemobileads;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this library except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
// Migrated to the GMA Next-Gen SDK (Android). Wraps the Next-Gen MediaView and binds the media
|
|
21
|
+
// content of the loaded NativeAd (looked up by responseId in the shared registry).
|
|
22
|
+
|
|
23
|
+
import android.widget.ImageView;
|
|
24
|
+
import androidx.annotation.Nullable;
|
|
25
|
+
import com.facebook.react.uimanager.SimpleViewManager;
|
|
26
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
27
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
28
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.MediaView;
|
|
29
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd;
|
|
30
|
+
import javax.annotation.Nonnull;
|
|
31
|
+
|
|
32
|
+
public class ReactNativeGoogleMobileAdsMediaViewManager extends SimpleViewManager<MediaView> {
|
|
33
|
+
private static final String REACT_CLASS = "RNGoogleMobileAdsMediaView";
|
|
34
|
+
|
|
35
|
+
@Nonnull
|
|
36
|
+
@Override
|
|
37
|
+
public String getName() {
|
|
38
|
+
return REACT_CLASS;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@Nonnull
|
|
42
|
+
@Override
|
|
43
|
+
public MediaView createViewInstance(@Nonnull ThemedReactContext themedReactContext) {
|
|
44
|
+
return new MediaView(themedReactContext);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@ReactProp(name = "responseId")
|
|
48
|
+
public void setResponseId(MediaView view, @Nullable String responseId) {
|
|
49
|
+
if (responseId == null) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
NativeAd nativeAd = ReactNativeGoogleMobileAdsNativeModule.getNativeAds().get(responseId);
|
|
53
|
+
if (nativeAd != null && nativeAd.getMediaContent() != null) {
|
|
54
|
+
view.setMediaContent(nativeAd.getMediaContent());
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@ReactProp(name = "resizeMode")
|
|
59
|
+
public void setResizeMode(MediaView view, @Nullable String resizeMode) {
|
|
60
|
+
view.setImageScaleType(scaleType(resizeMode));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private ImageView.ScaleType scaleType(@Nullable String resizeMode) {
|
|
64
|
+
if (resizeMode == null) {
|
|
65
|
+
return ImageView.ScaleType.FIT_CENTER;
|
|
66
|
+
}
|
|
67
|
+
switch (resizeMode) {
|
|
68
|
+
case "cover":
|
|
69
|
+
return ImageView.ScaleType.CENTER_CROP;
|
|
70
|
+
case "stretch":
|
|
71
|
+
return ImageView.ScaleType.FIT_XY;
|
|
72
|
+
case "center":
|
|
73
|
+
return ImageView.ScaleType.CENTER;
|
|
74
|
+
case "contain":
|
|
75
|
+
default:
|
|
76
|
+
return ImageView.ScaleType.FIT_CENTER;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsModule.kt
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
package io.invertase.googlemobileads
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this library except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
// Migrated to the GMA Next-Gen SDK (Android). The Next-Gen SDK requires the AdMob App ID to be
|
|
21
|
+
// passed explicitly to InitializationConfig (it is no longer read automatically from the manifest),
|
|
22
|
+
// so we read it from the manifest meta-data ourselves and forward it. iOS is unchanged.
|
|
23
|
+
|
|
24
|
+
import android.content.pm.PackageManager
|
|
25
|
+
import com.facebook.react.bridge.*
|
|
26
|
+
import com.google.android.libraries.ads.mobile.sdk.MobileAds
|
|
27
|
+
import com.google.android.libraries.ads.mobile.sdk.common.OnAdInspectorClosedListener
|
|
28
|
+
import com.google.android.libraries.ads.mobile.sdk.common.RequestConfiguration
|
|
29
|
+
import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
|
|
30
|
+
import com.google.android.libraries.ads.mobile.sdk.initialization.OnAdapterInitializationCompleteListener
|
|
31
|
+
|
|
32
|
+
class ReactNativeGoogleMobileAdsModule(
|
|
33
|
+
reactContext: ReactApplicationContext
|
|
34
|
+
) : ReactContextBaseJavaModule(reactContext) {
|
|
35
|
+
|
|
36
|
+
override fun getName() = NAME
|
|
37
|
+
|
|
38
|
+
private fun getAppIdFromManifest(): String? {
|
|
39
|
+
return try {
|
|
40
|
+
val context = reactApplicationContext
|
|
41
|
+
val ai =
|
|
42
|
+
context.packageManager.getApplicationInfo(
|
|
43
|
+
context.packageName, PackageManager.GET_META_DATA)
|
|
44
|
+
ai.metaData?.getString("com.google.android.gms.ads.APPLICATION_ID")
|
|
45
|
+
} catch (e: Exception) {
|
|
46
|
+
null
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
private fun buildRequestConfiguration(
|
|
51
|
+
requestConfiguration: ReadableMap
|
|
52
|
+
): RequestConfiguration {
|
|
53
|
+
val builder = RequestConfiguration.Builder()
|
|
54
|
+
|
|
55
|
+
if (requestConfiguration.hasKey("testDeviceIdentifiers")) {
|
|
56
|
+
val devices =
|
|
57
|
+
checkNotNull(requestConfiguration.getArray("testDeviceIdentifiers")).toArrayList()
|
|
58
|
+
// Next-Gen auto-registers emulators as test devices; drop the legacy "EMULATOR" sentinel.
|
|
59
|
+
val testDeviceIds = devices.map { it as String }.filter { it != "EMULATOR" }
|
|
60
|
+
builder.setTestDeviceIds(testDeviceIds)
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (requestConfiguration.hasKey("maxAdContentRating")) {
|
|
64
|
+
when (requestConfiguration.getString("maxAdContentRating")) {
|
|
65
|
+
"G" ->
|
|
66
|
+
builder.setMaxAdContentRating(
|
|
67
|
+
RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_G)
|
|
68
|
+
"PG" ->
|
|
69
|
+
builder.setMaxAdContentRating(
|
|
70
|
+
RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_PG)
|
|
71
|
+
"T" ->
|
|
72
|
+
builder.setMaxAdContentRating(
|
|
73
|
+
RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_T)
|
|
74
|
+
"MA" ->
|
|
75
|
+
builder.setMaxAdContentRating(
|
|
76
|
+
RequestConfiguration.MaxAdContentRating.MAX_AD_CONTENT_RATING_MA)
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (requestConfiguration.hasKey("tagForChildDirectedTreatment")) {
|
|
81
|
+
builder.setTagForChildDirectedTreatment(
|
|
82
|
+
if (requestConfiguration.getBoolean("tagForChildDirectedTreatment"))
|
|
83
|
+
RequestConfiguration.TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE
|
|
84
|
+
else
|
|
85
|
+
RequestConfiguration.TagForChildDirectedTreatment.TAG_FOR_CHILD_DIRECTED_TREATMENT_FALSE)
|
|
86
|
+
} else {
|
|
87
|
+
builder.setTagForChildDirectedTreatment(
|
|
88
|
+
RequestConfiguration.TagForChildDirectedTreatment
|
|
89
|
+
.TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (requestConfiguration.hasKey("tagForUnderAgeOfConsent")) {
|
|
93
|
+
builder.setTagForUnderAgeOfConsent(
|
|
94
|
+
if (requestConfiguration.getBoolean("tagForUnderAgeOfConsent"))
|
|
95
|
+
RequestConfiguration.TagForUnderAgeOfConsent.TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE
|
|
96
|
+
else RequestConfiguration.TagForUnderAgeOfConsent.TAG_FOR_UNDER_AGE_OF_CONSENT_FALSE)
|
|
97
|
+
} else {
|
|
98
|
+
builder.setTagForUnderAgeOfConsent(
|
|
99
|
+
RequestConfiguration.TagForUnderAgeOfConsent.TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return builder.build()
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@ReactMethod
|
|
106
|
+
fun initialize(promise: Promise) {
|
|
107
|
+
val appId = getAppIdFromManifest()
|
|
108
|
+
if (appId == null) {
|
|
109
|
+
promise.reject(
|
|
110
|
+
"null-app-id",
|
|
111
|
+
"GMA Next-Gen SDK could not find the AdMob App ID. Set" +
|
|
112
|
+
" com.google.android.gms.ads.APPLICATION_ID in AndroidManifest.xml.")
|
|
113
|
+
return
|
|
114
|
+
}
|
|
115
|
+
val config = InitializationConfig.Builder(appId).build()
|
|
116
|
+
MobileAds.initialize(
|
|
117
|
+
reactApplicationContext,
|
|
118
|
+
config,
|
|
119
|
+
OnAdapterInitializationCompleteListener { initializationStatus ->
|
|
120
|
+
val result = Arguments.createArray()
|
|
121
|
+
for ((key, value) in initializationStatus.adapterStatusMap) {
|
|
122
|
+
val info = Arguments.createMap()
|
|
123
|
+
info.putString("name", key)
|
|
124
|
+
info.putInt("state", value.initializationState.ordinal)
|
|
125
|
+
info.putString("description", value.description)
|
|
126
|
+
result.pushMap(info)
|
|
127
|
+
}
|
|
128
|
+
promise.resolve(result)
|
|
129
|
+
})
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@ReactMethod
|
|
133
|
+
fun setRequestConfiguration(requestConfiguration: ReadableMap, promise: Promise) {
|
|
134
|
+
MobileAds.setRequestConfiguration(buildRequestConfiguration(requestConfiguration))
|
|
135
|
+
promise.resolve(null)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@ReactMethod
|
|
139
|
+
fun openAdInspector(promise: Promise) {
|
|
140
|
+
val activity = reactApplicationContext.currentActivity
|
|
141
|
+
if (activity == null) {
|
|
142
|
+
promise.reject(
|
|
143
|
+
"null-activity", "Ad Inspector attempted to open but the current Activity was null.")
|
|
144
|
+
return
|
|
145
|
+
}
|
|
146
|
+
activity.runOnUiThread {
|
|
147
|
+
MobileAds.openAdInspector(
|
|
148
|
+
OnAdInspectorClosedListener { adInspectorError ->
|
|
149
|
+
if (adInspectorError != null) {
|
|
150
|
+
promise.reject(adInspectorError.code.name, adInspectorError.message)
|
|
151
|
+
} else {
|
|
152
|
+
promise.resolve(null)
|
|
153
|
+
}
|
|
154
|
+
})
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@ReactMethod
|
|
159
|
+
fun openDebugMenu(adUnit: String) {
|
|
160
|
+
reactApplicationContext.currentActivity?.let { activity ->
|
|
161
|
+
activity.runOnUiThread { MobileAds.openDebugMenu(activity, adUnit) }
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@ReactMethod
|
|
166
|
+
fun setAppVolume(volume: Float) {
|
|
167
|
+
MobileAds.setUserControlledAppVolume(volume)
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@ReactMethod
|
|
171
|
+
fun setAppMuted(muted: Boolean) {
|
|
172
|
+
MobileAds.setUserMutedApp(muted)
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
companion object {
|
|
176
|
+
const val NAME = "RNGoogleMobileAdsModule"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
package io.invertase.googlemobileads;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this library except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
// Migrated to the GMA Next-Gen SDK (Android). Wraps the Next-Gen NativeAdView container, binds the
|
|
21
|
+
// asset child views supplied by JS via the registerAsset command, and registers the loaded NativeAd
|
|
22
|
+
// (looked up by responseId in the shared registry) together with any MediaView descendant.
|
|
23
|
+
|
|
24
|
+
import android.view.View;
|
|
25
|
+
import android.view.ViewGroup;
|
|
26
|
+
import androidx.annotation.NonNull;
|
|
27
|
+
import androidx.annotation.Nullable;
|
|
28
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
29
|
+
import com.facebook.react.uimanager.SimpleViewManager;
|
|
30
|
+
import com.facebook.react.uimanager.ThemedReactContext;
|
|
31
|
+
import com.facebook.react.uimanager.annotations.ReactProp;
|
|
32
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.MediaView;
|
|
33
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd;
|
|
34
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdView;
|
|
35
|
+
import java.util.WeakHashMap;
|
|
36
|
+
import javax.annotation.Nonnull;
|
|
37
|
+
|
|
38
|
+
public class ReactNativeGoogleMobileAdsNativeAdViewManager
|
|
39
|
+
extends SimpleViewManager<NativeAdView> {
|
|
40
|
+
private static final String REACT_CLASS = "RNGoogleMobileAdsNativeView";
|
|
41
|
+
private static final String COMMAND_REGISTER_ASSET = "registerAsset";
|
|
42
|
+
|
|
43
|
+
private final WeakHashMap<NativeAdView, String> responseIds = new WeakHashMap<>();
|
|
44
|
+
|
|
45
|
+
@Nonnull
|
|
46
|
+
@Override
|
|
47
|
+
public String getName() {
|
|
48
|
+
return REACT_CLASS;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Nonnull
|
|
52
|
+
@Override
|
|
53
|
+
public NativeAdView createViewInstance(@Nonnull ThemedReactContext themedReactContext) {
|
|
54
|
+
return new NativeAdView(themedReactContext);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@ReactProp(name = "responseId")
|
|
58
|
+
public void setResponseId(NativeAdView view, @Nullable String responseId) {
|
|
59
|
+
responseIds.put(view, responseId);
|
|
60
|
+
registerNativeAd(view);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@Override
|
|
64
|
+
public void receiveCommand(
|
|
65
|
+
@NonNull NativeAdView view, String commandId, @Nullable ReadableArray args) {
|
|
66
|
+
if (COMMAND_REGISTER_ASSET.equals(commandId) && args != null) {
|
|
67
|
+
String assetKey = args.getString(0);
|
|
68
|
+
int reactTag = args.getInt(1);
|
|
69
|
+
registerAsset(view, assetKey, reactTag);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private void registerAsset(NativeAdView view, String assetKey, int reactTag) {
|
|
74
|
+
View assetView = findViewByReactTag(view, reactTag);
|
|
75
|
+
if (assetView == null || assetKey == null) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
switch (assetKey) {
|
|
79
|
+
case "headline":
|
|
80
|
+
view.setHeadlineView(assetView);
|
|
81
|
+
break;
|
|
82
|
+
case "body":
|
|
83
|
+
view.setBodyView(assetView);
|
|
84
|
+
break;
|
|
85
|
+
case "callToAction":
|
|
86
|
+
view.setCallToActionView(assetView);
|
|
87
|
+
break;
|
|
88
|
+
case "advertiser":
|
|
89
|
+
view.setAdvertiserView(assetView);
|
|
90
|
+
break;
|
|
91
|
+
case "price":
|
|
92
|
+
view.setPriceView(assetView);
|
|
93
|
+
break;
|
|
94
|
+
case "store":
|
|
95
|
+
view.setStoreView(assetView);
|
|
96
|
+
break;
|
|
97
|
+
case "starRating":
|
|
98
|
+
view.setStarRatingView(assetView);
|
|
99
|
+
break;
|
|
100
|
+
case "icon":
|
|
101
|
+
view.setIconView(assetView);
|
|
102
|
+
break;
|
|
103
|
+
default:
|
|
104
|
+
// "image" / "media" assets are presented through the MediaView descendant.
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
registerNativeAd(view);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Bind the loaded NativeAd to the container once we have a responseId for it. */
|
|
111
|
+
private void registerNativeAd(NativeAdView view) {
|
|
112
|
+
String responseId = responseIds.get(view);
|
|
113
|
+
if (responseId == null) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
NativeAd nativeAd = ReactNativeGoogleMobileAdsNativeModule.getNativeAds().get(responseId);
|
|
117
|
+
if (nativeAd == null) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
MediaView mediaView = findMediaView(view);
|
|
121
|
+
view.registerNativeAd(nativeAd, mediaView);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
@Nullable
|
|
125
|
+
private View findViewByReactTag(View root, int reactTag) {
|
|
126
|
+
if (root.getId() == reactTag) {
|
|
127
|
+
return root;
|
|
128
|
+
}
|
|
129
|
+
if (root instanceof ViewGroup) {
|
|
130
|
+
ViewGroup group = (ViewGroup) root;
|
|
131
|
+
for (int i = 0; i < group.getChildCount(); i++) {
|
|
132
|
+
View found = findViewByReactTag(group.getChildAt(i), reactTag);
|
|
133
|
+
if (found != null) {
|
|
134
|
+
return found;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@Nullable
|
|
142
|
+
private MediaView findMediaView(View root) {
|
|
143
|
+
if (root instanceof MediaView) {
|
|
144
|
+
return (MediaView) root;
|
|
145
|
+
}
|
|
146
|
+
if (root instanceof ViewGroup) {
|
|
147
|
+
ViewGroup group = (ViewGroup) root;
|
|
148
|
+
for (int i = 0; i < group.getChildCount(); i++) {
|
|
149
|
+
MediaView found = findMediaView(group.getChildAt(i));
|
|
150
|
+
if (found != null) {
|
|
151
|
+
return found;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@Override
|
|
159
|
+
public void onDropViewInstance(@NonNull NativeAdView view) {
|
|
160
|
+
responseIds.remove(view);
|
|
161
|
+
view.destroy();
|
|
162
|
+
super.onDropViewInstance(view);
|
|
163
|
+
}
|
|
164
|
+
}
|
package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsNativeModule.kt
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
package io.invertase.googlemobileads
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this library except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
// Migrated to the GMA Next-Gen SDK (Android). Loads native ads via NativeAdLoader, serializes the
|
|
21
|
+
// asset payload to JS, and keeps the loaded NativeAd in a shared registry so the NativeAdView /
|
|
22
|
+
// MediaView managers can bind it by responseId. Events are emitted on the RNGMANativeAdEvent
|
|
23
|
+
// device-event channel that the JS NativeAd subscribes to on Android.
|
|
24
|
+
|
|
25
|
+
import com.facebook.react.bridge.Arguments
|
|
26
|
+
import com.facebook.react.bridge.Promise
|
|
27
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
28
|
+
import com.facebook.react.bridge.ReactMethod
|
|
29
|
+
import com.facebook.react.bridge.ReadableMap
|
|
30
|
+
import com.facebook.react.bridge.WritableMap
|
|
31
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
32
|
+
import com.google.android.libraries.ads.mobile.sdk.common.AdValue
|
|
33
|
+
import com.google.android.libraries.ads.mobile.sdk.common.Image
|
|
34
|
+
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
|
|
35
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.MediaContent
|
|
36
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAd
|
|
37
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdEventCallback
|
|
38
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoader
|
|
39
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdLoaderCallback
|
|
40
|
+
import com.google.android.libraries.ads.mobile.sdk.nativead.NativeAdRequest
|
|
41
|
+
import io.invertase.googlemobileads.common.ReactNativeModule
|
|
42
|
+
import java.util.concurrent.ConcurrentHashMap
|
|
43
|
+
|
|
44
|
+
class ReactNativeGoogleMobileAdsNativeModule(reactContext: ReactApplicationContext?) :
|
|
45
|
+
ReactNativeModule(reactContext, NAME) {
|
|
46
|
+
|
|
47
|
+
@ReactMethod
|
|
48
|
+
fun load(adUnitId: String, requestOptions: ReadableMap, promise: Promise) {
|
|
49
|
+
val builder = NativeAdRequest.Builder(adUnitId, listOf(NativeAd.NativeAdType.NATIVE))
|
|
50
|
+
ReactNativeGoogleMobileAdsCommon.applyRequestOptions(builder, requestOptions)
|
|
51
|
+
val request = builder.build()
|
|
52
|
+
|
|
53
|
+
val activity = reactApplicationContext.currentActivity
|
|
54
|
+
val runnable = Runnable {
|
|
55
|
+
NativeAdLoader.load(
|
|
56
|
+
request,
|
|
57
|
+
object : NativeAdLoaderCallback {
|
|
58
|
+
override fun onNativeAdLoaded(nativeAd: NativeAd) {
|
|
59
|
+
val responseId = nativeAd.responseInfo?.responseId ?: ""
|
|
60
|
+
nativeAds[responseId] = nativeAd
|
|
61
|
+
attachEventCallback(nativeAd, responseId)
|
|
62
|
+
promise.resolve(serializeNativeAd(nativeAd, responseId))
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
override fun onAdFailedToLoad(loadAdError: LoadAdError) {
|
|
66
|
+
val codeAndMessage =
|
|
67
|
+
ReactNativeGoogleMobileAdsCommon.getCodeAndMessageFromAdError(loadAdError)
|
|
68
|
+
rejectPromiseWithCodeAndMessage(promise, codeAndMessage[0], codeAndMessage[1])
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
}
|
|
72
|
+
if (activity != null) activity.runOnUiThread(runnable) else runnable.run()
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@ReactMethod
|
|
76
|
+
fun destroy(responseId: String) {
|
|
77
|
+
nativeAds.remove(responseId)?.destroy()
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// NativeEventEmitter bookkeeping (no-ops on Android; required by the TurboModule surface).
|
|
81
|
+
@ReactMethod fun addListener(eventName: String) {}
|
|
82
|
+
|
|
83
|
+
@ReactMethod fun removeListeners(count: Double) {}
|
|
84
|
+
|
|
85
|
+
private fun attachEventCallback(nativeAd: NativeAd, responseId: String) {
|
|
86
|
+
nativeAd.adEventCallback =
|
|
87
|
+
object : NativeAdEventCallback {
|
|
88
|
+
override fun onAdImpression() = emit(responseId, "impression", null)
|
|
89
|
+
|
|
90
|
+
override fun onAdClicked() = emit(responseId, "clicked", null)
|
|
91
|
+
|
|
92
|
+
override fun onAdShowedFullScreenContent() = emit(responseId, "opened", null)
|
|
93
|
+
|
|
94
|
+
override fun onAdDismissedFullScreenContent() = emit(responseId, "closed", null)
|
|
95
|
+
|
|
96
|
+
override fun onAdPaid(adValue: AdValue) {
|
|
97
|
+
val payload = Arguments.createMap()
|
|
98
|
+
payload.putDouble("value", 1e-6 * adValue.valueMicros)
|
|
99
|
+
payload.putDouble("precision", adValue.precisionType.ordinal.toDouble())
|
|
100
|
+
payload.putString("currencyCode", adValue.currencyCode)
|
|
101
|
+
emit(responseId, "paid", payload)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
private fun emit(responseId: String, type: String, extra: WritableMap?) {
|
|
107
|
+
val event = Arguments.createMap()
|
|
108
|
+
event.putString("responseId", responseId)
|
|
109
|
+
event.putString("type", type)
|
|
110
|
+
if (extra != null) event.merge(extra)
|
|
111
|
+
reactApplicationContext
|
|
112
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
113
|
+
.emit("RNGMANativeAdEvent", event)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
private fun serializeNativeAd(nativeAd: NativeAd, responseId: String): WritableMap {
|
|
117
|
+
val map = Arguments.createMap()
|
|
118
|
+
map.putString("responseId", responseId)
|
|
119
|
+
map.putString("headline", nativeAd.headline)
|
|
120
|
+
map.putString("body", nativeAd.body)
|
|
121
|
+
map.putString("callToAction", nativeAd.callToAction)
|
|
122
|
+
putStringOrNull(map, "advertiser", nativeAd.advertiser)
|
|
123
|
+
putStringOrNull(map, "price", nativeAd.price)
|
|
124
|
+
putStringOrNull(map, "store", nativeAd.store)
|
|
125
|
+
|
|
126
|
+
val starRating = nativeAd.starRating
|
|
127
|
+
if (starRating != null) map.putDouble("starRating", starRating) else map.putNull("starRating")
|
|
128
|
+
|
|
129
|
+
map.putMap("icon", serializeImage(nativeAd.icon))
|
|
130
|
+
|
|
131
|
+
val mainImage = serializeImage(nativeAd.image)
|
|
132
|
+
if (mainImage != null) {
|
|
133
|
+
val images = Arguments.createArray()
|
|
134
|
+
images.pushMap(mainImage)
|
|
135
|
+
map.putArray("images", images)
|
|
136
|
+
} else {
|
|
137
|
+
map.putNull("images")
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
map.putMap("mediaContent", serializeMediaContent(nativeAd.mediaContent))
|
|
141
|
+
map.putNull("extras")
|
|
142
|
+
return map
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
private fun serializeImage(image: Image?): WritableMap? {
|
|
146
|
+
if (image == null) return null
|
|
147
|
+
val uri = image.uri ?: return null
|
|
148
|
+
val map = Arguments.createMap()
|
|
149
|
+
map.putString("url", uri.toString())
|
|
150
|
+
map.putDouble("scale", image.scale)
|
|
151
|
+
return map
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private fun serializeMediaContent(mediaContent: MediaContent?): WritableMap {
|
|
155
|
+
val map = Arguments.createMap()
|
|
156
|
+
map.putDouble("aspectRatio", (mediaContent?.aspectRatio ?: 1.0f).toDouble())
|
|
157
|
+
map.putBoolean("hasVideoContent", mediaContent?.hasVideoContent ?: false)
|
|
158
|
+
map.putDouble("duration", (mediaContent?.duration ?: 0.0f).toDouble())
|
|
159
|
+
return map
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
private fun putStringOrNull(map: WritableMap, key: String, value: String?) {
|
|
163
|
+
if (value != null) map.putString(key, value) else map.putNull(key)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
companion object {
|
|
167
|
+
const val NAME = "RNGoogleMobileAdsNativeModule"
|
|
168
|
+
|
|
169
|
+
/** Shared registry of loaded native ads, keyed by responseId; read by the view managers. */
|
|
170
|
+
@JvmStatic val nativeAds = ConcurrentHashMap<String, NativeAd>()
|
|
171
|
+
}
|
|
172
|
+
}
|