@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,293 @@
|
|
|
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
|
+
import android.app.Activity;
|
|
20
|
+
import android.content.SharedPreferences;
|
|
21
|
+
import android.preference.PreferenceManager;
|
|
22
|
+
import com.facebook.react.bridge.Arguments;
|
|
23
|
+
import com.facebook.react.bridge.Promise;
|
|
24
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
25
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
26
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
27
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
28
|
+
import com.facebook.react.bridge.WritableMap;
|
|
29
|
+
import com.google.android.ump.ConsentDebugSettings;
|
|
30
|
+
import com.google.android.ump.ConsentInformation;
|
|
31
|
+
import com.google.android.ump.ConsentRequestParameters;
|
|
32
|
+
import com.google.android.ump.UserMessagingPlatform;
|
|
33
|
+
import io.invertase.googlemobileads.common.ReactNativeModule;
|
|
34
|
+
import javax.annotation.Nonnull;
|
|
35
|
+
|
|
36
|
+
public class ReactNativeGoogleMobileAdsConsentModule extends ReactNativeModule {
|
|
37
|
+
|
|
38
|
+
static final String NAME = "RNGoogleMobileAdsConsentModule";
|
|
39
|
+
private ConsentInformation consentInformation;
|
|
40
|
+
|
|
41
|
+
public ReactNativeGoogleMobileAdsConsentModule(ReactApplicationContext reactContext) {
|
|
42
|
+
super(reactContext, NAME);
|
|
43
|
+
consentInformation = UserMessagingPlatform.getConsentInformation(reactContext);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private String getConsentStatusString(int consentStatus) {
|
|
47
|
+
switch (consentStatus) {
|
|
48
|
+
case ConsentInformation.ConsentStatus.REQUIRED:
|
|
49
|
+
return "REQUIRED";
|
|
50
|
+
case ConsentInformation.ConsentStatus.NOT_REQUIRED:
|
|
51
|
+
return "NOT_REQUIRED";
|
|
52
|
+
case ConsentInformation.ConsentStatus.OBTAINED:
|
|
53
|
+
return "OBTAINED";
|
|
54
|
+
case ConsentInformation.ConsentStatus.UNKNOWN:
|
|
55
|
+
default:
|
|
56
|
+
return "UNKNOWN";
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private String getPrivacyOptionsRequirementStatusString(
|
|
61
|
+
ConsentInformation.PrivacyOptionsRequirementStatus privacyOptionsRequirementStatus) {
|
|
62
|
+
switch (privacyOptionsRequirementStatus) {
|
|
63
|
+
case REQUIRED:
|
|
64
|
+
return "REQUIRED";
|
|
65
|
+
case NOT_REQUIRED:
|
|
66
|
+
return "NOT_REQUIRED";
|
|
67
|
+
case UNKNOWN:
|
|
68
|
+
default:
|
|
69
|
+
return "UNKNOWN";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
private WritableMap getConsentInformation() {
|
|
74
|
+
WritableMap consentStatusMap = Arguments.createMap();
|
|
75
|
+
consentStatusMap.putString(
|
|
76
|
+
"status", getConsentStatusString(consentInformation.getConsentStatus()));
|
|
77
|
+
consentStatusMap.putBoolean("canRequestAds", consentInformation.canRequestAds());
|
|
78
|
+
consentStatusMap.putString(
|
|
79
|
+
"privacyOptionsRequirementStatus",
|
|
80
|
+
getPrivacyOptionsRequirementStatusString(
|
|
81
|
+
consentInformation.getPrivacyOptionsRequirementStatus()));
|
|
82
|
+
consentStatusMap.putBoolean(
|
|
83
|
+
"isConsentFormAvailable", consentInformation.isConsentFormAvailable());
|
|
84
|
+
return consentStatusMap;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
@ReactMethod
|
|
88
|
+
public void requestInfoUpdate(@Nonnull final ReadableMap options, final Promise promise) {
|
|
89
|
+
try {
|
|
90
|
+
ConsentRequestParameters.Builder paramsBuilder = new ConsentRequestParameters.Builder();
|
|
91
|
+
ConsentDebugSettings.Builder debugSettingsBuilder =
|
|
92
|
+
new ConsentDebugSettings.Builder(getApplicationContext());
|
|
93
|
+
|
|
94
|
+
if (options.hasKey("testDeviceIdentifiers")) {
|
|
95
|
+
ReadableArray devices = options.getArray("testDeviceIdentifiers");
|
|
96
|
+
|
|
97
|
+
for (int i = 0; i < devices.size(); i++) {
|
|
98
|
+
debugSettingsBuilder.addTestDeviceHashedId(devices.getString(i));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (options.hasKey("debugGeography")) {
|
|
103
|
+
debugSettingsBuilder.setDebugGeography(options.getInt("debugGeography"));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
paramsBuilder.setConsentDebugSettings(debugSettingsBuilder.build());
|
|
107
|
+
|
|
108
|
+
if (options.hasKey("tagForUnderAgeOfConsent")) {
|
|
109
|
+
paramsBuilder.setTagForUnderAgeOfConsent(options.getBoolean("tagForUnderAgeOfConsent"));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
ConsentRequestParameters consentRequestParameters = paramsBuilder.build();
|
|
113
|
+
|
|
114
|
+
Activity currentActivity = getCurrentActivity();
|
|
115
|
+
|
|
116
|
+
if (currentActivity == null) {
|
|
117
|
+
rejectPromiseWithCodeAndMessage(
|
|
118
|
+
promise,
|
|
119
|
+
"null-activity",
|
|
120
|
+
"Attempted to request a consent info update but the current Activity was null.");
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
consentInformation.requestConsentInfoUpdate(
|
|
125
|
+
currentActivity,
|
|
126
|
+
consentRequestParameters,
|
|
127
|
+
() -> {
|
|
128
|
+
promise.resolve(getConsentInformation());
|
|
129
|
+
},
|
|
130
|
+
formError ->
|
|
131
|
+
rejectPromiseWithCodeAndMessage(
|
|
132
|
+
promise, "consent-update-failed", formError.getMessage()));
|
|
133
|
+
} catch (Exception e) {
|
|
134
|
+
rejectPromiseWithCodeAndMessage(promise, "consent-update-failed", e.toString());
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
@ReactMethod
|
|
139
|
+
public void showForm(final Promise promise) {
|
|
140
|
+
try {
|
|
141
|
+
Activity currentActivity = getCurrentActivity();
|
|
142
|
+
|
|
143
|
+
if (currentActivity == null) {
|
|
144
|
+
rejectPromiseWithCodeAndMessage(
|
|
145
|
+
promise,
|
|
146
|
+
"null-activity",
|
|
147
|
+
"Consent form attempted to show but the current Activity was null.");
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
currentActivity.runOnUiThread(
|
|
152
|
+
() ->
|
|
153
|
+
UserMessagingPlatform.loadConsentForm(
|
|
154
|
+
getReactApplicationContext(),
|
|
155
|
+
consentForm ->
|
|
156
|
+
consentForm.show(
|
|
157
|
+
currentActivity,
|
|
158
|
+
formError -> {
|
|
159
|
+
if (formError != null) {
|
|
160
|
+
rejectPromiseWithCodeAndMessage(
|
|
161
|
+
promise, "consent-form-error", formError.getMessage());
|
|
162
|
+
} else {
|
|
163
|
+
promise.resolve(getConsentInformation());
|
|
164
|
+
}
|
|
165
|
+
}),
|
|
166
|
+
formError ->
|
|
167
|
+
rejectPromiseWithCodeAndMessage(
|
|
168
|
+
promise, "consent-form-error", formError.getMessage())));
|
|
169
|
+
} catch (Exception e) {
|
|
170
|
+
rejectPromiseWithCodeAndMessage(promise, "consent-form-error", e.toString());
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
@ReactMethod
|
|
175
|
+
public void showPrivacyOptionsForm(final Promise promise) {
|
|
176
|
+
try {
|
|
177
|
+
Activity currentActivity = getCurrentActivity();
|
|
178
|
+
|
|
179
|
+
if (currentActivity == null) {
|
|
180
|
+
rejectPromiseWithCodeAndMessage(
|
|
181
|
+
promise,
|
|
182
|
+
"null-activity",
|
|
183
|
+
"Privacy options form attempted to show but the current Activity was null.");
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
currentActivity.runOnUiThread(
|
|
188
|
+
() ->
|
|
189
|
+
UserMessagingPlatform.showPrivacyOptionsForm(
|
|
190
|
+
currentActivity,
|
|
191
|
+
formError -> {
|
|
192
|
+
if (formError != null) {
|
|
193
|
+
rejectPromiseWithCodeAndMessage(
|
|
194
|
+
promise, "privacy-options-form-error", formError.getMessage());
|
|
195
|
+
} else {
|
|
196
|
+
promise.resolve(getConsentInformation());
|
|
197
|
+
}
|
|
198
|
+
}));
|
|
199
|
+
} catch (Exception e) {
|
|
200
|
+
rejectPromiseWithCodeAndMessage(promise, "consent-form-error", e.toString());
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@ReactMethod
|
|
205
|
+
public void loadAndShowConsentFormIfRequired(final Promise promise) {
|
|
206
|
+
try {
|
|
207
|
+
Activity currentActivity = getCurrentActivity();
|
|
208
|
+
|
|
209
|
+
if (currentActivity == null) {
|
|
210
|
+
rejectPromiseWithCodeAndMessage(
|
|
211
|
+
promise,
|
|
212
|
+
"null-activity",
|
|
213
|
+
"Consent form attempted to load and show if required but the current Activity was"
|
|
214
|
+
+ " null.");
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
currentActivity.runOnUiThread(
|
|
219
|
+
() ->
|
|
220
|
+
UserMessagingPlatform.loadAndShowConsentFormIfRequired(
|
|
221
|
+
currentActivity,
|
|
222
|
+
formError -> {
|
|
223
|
+
if (formError != null) {
|
|
224
|
+
rejectPromiseWithCodeAndMessage(
|
|
225
|
+
promise, "consent-form-error", formError.getMessage());
|
|
226
|
+
} else {
|
|
227
|
+
promise.resolve(getConsentInformation());
|
|
228
|
+
}
|
|
229
|
+
}));
|
|
230
|
+
} catch (Exception e) {
|
|
231
|
+
rejectPromiseWithCodeAndMessage(promise, "consent-form-error", e.toString());
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@ReactMethod
|
|
236
|
+
public void getConsentInfo(Promise promise) {
|
|
237
|
+
promise.resolve(getConsentInformation());
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
@ReactMethod
|
|
241
|
+
public void reset() {
|
|
242
|
+
consentInformation.reset();
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
@ReactMethod
|
|
246
|
+
public void getTCString(Promise promise) {
|
|
247
|
+
try {
|
|
248
|
+
SharedPreferences prefs =
|
|
249
|
+
PreferenceManager.getDefaultSharedPreferences(getReactApplicationContext());
|
|
250
|
+
// https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md#in-app-details
|
|
251
|
+
String tcString = prefs.getString("IABTCF_TCString", null);
|
|
252
|
+
promise.resolve(tcString);
|
|
253
|
+
} catch (Exception e) {
|
|
254
|
+
rejectPromiseWithCodeAndMessage(promise, "consent-string-error", e.toString());
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
@ReactMethod
|
|
259
|
+
public void getGdprApplies(Promise promise) {
|
|
260
|
+
try {
|
|
261
|
+
SharedPreferences prefs =
|
|
262
|
+
PreferenceManager.getDefaultSharedPreferences(getReactApplicationContext());
|
|
263
|
+
int gdprApplies = prefs.getInt("IABTCF_gdprApplies", 0);
|
|
264
|
+
promise.resolve(gdprApplies == 1);
|
|
265
|
+
} catch (Exception e) {
|
|
266
|
+
rejectPromiseWithCodeAndMessage(promise, "consent-string-error", e.toString());
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
@ReactMethod
|
|
271
|
+
public void getPurposeConsents(Promise promise) {
|
|
272
|
+
try {
|
|
273
|
+
SharedPreferences prefs =
|
|
274
|
+
PreferenceManager.getDefaultSharedPreferences(getReactApplicationContext());
|
|
275
|
+
String purposeConsents = prefs.getString("IABTCF_PurposeConsents", "");
|
|
276
|
+
promise.resolve(purposeConsents);
|
|
277
|
+
} catch (Exception e) {
|
|
278
|
+
rejectPromiseWithCodeAndMessage(promise, "consent-string-error", e.toString());
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
@ReactMethod
|
|
283
|
+
public void getPurposeLegitimateInterests(Promise promise) {
|
|
284
|
+
try {
|
|
285
|
+
SharedPreferences prefs =
|
|
286
|
+
PreferenceManager.getDefaultSharedPreferences(getReactApplicationContext());
|
|
287
|
+
String purposeLegitimateInterests = prefs.getString("IABTCF_PurposeLegitimateInterests", "");
|
|
288
|
+
promise.resolve(purposeLegitimateInterests);
|
|
289
|
+
} catch (Exception e) {
|
|
290
|
+
rejectPromiseWithCodeAndMessage(promise, "consent-string-error", e.toString());
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
package/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsEvent.java
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
package io.invertase.googlemobileads;
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this library except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import com.facebook.react.bridge.Arguments;
|
|
21
|
+
import com.facebook.react.bridge.WritableMap;
|
|
22
|
+
import io.invertase.googlemobileads.interfaces.NativeEvent;
|
|
23
|
+
|
|
24
|
+
public class ReactNativeGoogleMobileAdsEvent implements NativeEvent {
|
|
25
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_APP_OPEN = "google_mobile_ads_app_open_event";
|
|
26
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_INTERSTITIAL =
|
|
27
|
+
"google_mobile_ads_interstitial_event";
|
|
28
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_REWARDED = "google_mobile_ads_rewarded_event";
|
|
29
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_REWARDED_INTERSTITIAL =
|
|
30
|
+
"google_mobile_ads_rewarded_interstitial_event";
|
|
31
|
+
|
|
32
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_LOADED = "loaded";
|
|
33
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_ERROR = "error";
|
|
34
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_OPENED = "opened";
|
|
35
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_PAID = "paid";
|
|
36
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_CLICKED = "clicked";
|
|
37
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_CLOSED = "closed";
|
|
38
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_APP_EVENT = "app_event";
|
|
39
|
+
|
|
40
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_REWARDED_LOADED = "rewarded_loaded";
|
|
41
|
+
public static final String GOOGLE_MOBILE_ADS_EVENT_REWARDED_EARNED_REWARD =
|
|
42
|
+
"rewarded_earned_reward";
|
|
43
|
+
|
|
44
|
+
private static final String KEY_BODY = "body";
|
|
45
|
+
private static final String KEY_REQUEST_ID = "requestId";
|
|
46
|
+
private static final String KEY_GOOGLE_MOBILE_ADS_EVENT_UNIT_ID = "adUnitId";
|
|
47
|
+
private static final String KEY_EVENT_NAME = "eventName";
|
|
48
|
+
|
|
49
|
+
private String eventName;
|
|
50
|
+
private int requestId;
|
|
51
|
+
private String adUnitId;
|
|
52
|
+
private WritableMap eventBody;
|
|
53
|
+
|
|
54
|
+
public ReactNativeGoogleMobileAdsEvent(
|
|
55
|
+
String eventName, int requestId, String adUnitId, WritableMap eventBody) {
|
|
56
|
+
this.eventName = eventName;
|
|
57
|
+
this.requestId = requestId;
|
|
58
|
+
this.adUnitId = adUnitId;
|
|
59
|
+
this.eventBody = eventBody;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@Override
|
|
63
|
+
public String getEventName() {
|
|
64
|
+
return eventName;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@Override
|
|
68
|
+
public WritableMap getEventBody() {
|
|
69
|
+
WritableMap event = Arguments.createMap();
|
|
70
|
+
event.putMap(KEY_BODY, eventBody);
|
|
71
|
+
event.putInt(KEY_REQUEST_ID, requestId);
|
|
72
|
+
event.putString(KEY_GOOGLE_MOBILE_ADS_EVENT_UNIT_ID, adUnitId);
|
|
73
|
+
event.putString(KEY_EVENT_NAME, eventName);
|
|
74
|
+
return event;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,201 @@
|
|
|
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). AdMob-only: only Interstitial and App Open
|
|
21
|
+
// full-screen formats are supported in this fork (Rewarded / RewardedInterstitial / Ad Manager
|
|
22
|
+
// were removed). iOS keeps using the classic SDK unchanged.
|
|
23
|
+
|
|
24
|
+
import android.app.Activity
|
|
25
|
+
import android.util.Log
|
|
26
|
+
import android.util.SparseArray
|
|
27
|
+
import com.facebook.react.bridge.*
|
|
28
|
+
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
|
|
29
|
+
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
|
|
30
|
+
import com.google.android.libraries.ads.mobile.sdk.common.AdValue
|
|
31
|
+
import com.google.android.libraries.ads.mobile.sdk.common.LoadAdError
|
|
32
|
+
import io.invertase.googlemobileads.common.ReactNativeModule
|
|
33
|
+
|
|
34
|
+
abstract class ReactNativeGoogleMobileAdsFullScreenAdModule<T>(
|
|
35
|
+
reactContext: ReactApplicationContext?,
|
|
36
|
+
moduleName: String
|
|
37
|
+
) : ReactNativeModule(reactContext, moduleName) {
|
|
38
|
+
private val adArray = SparseArray<T>()
|
|
39
|
+
|
|
40
|
+
abstract fun getAdEventName(): String
|
|
41
|
+
|
|
42
|
+
/** Next-Gen load is a static call on the ad type; the subclass routes it. */
|
|
43
|
+
abstract fun loadAd(adRequest: AdRequest, adLoadCallback: AdLoadCallback<T>)
|
|
44
|
+
|
|
45
|
+
/** Subclass attaches the typed Next-Gen ad-event callback, delegating to the dispatch helpers. */
|
|
46
|
+
abstract fun attachAdEventCallback(ad: T, requestId: Int, adUnitId: String)
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Subclass shows the ad (immersive mode + show). requestId/adUnitId are passed through so formats
|
|
50
|
+
* that emit show-time events (e.g. Rewarded's earned-reward callback) can dispatch them.
|
|
51
|
+
*/
|
|
52
|
+
abstract fun showAd(
|
|
53
|
+
ad: T,
|
|
54
|
+
activity: Activity,
|
|
55
|
+
immersiveModeEnabled: Boolean,
|
|
56
|
+
requestId: Int,
|
|
57
|
+
adUnitId: String
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
protected fun dispatchFullScreenEvent(type: String, requestId: Int, adUnitId: String) {
|
|
61
|
+
ReactNativeGoogleMobileAdsCommon.sendAdEvent(getAdEventName(), requestId, type, adUnitId, null)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** Dispatch a typed event carrying a data payload (e.g. the reward item). */
|
|
65
|
+
protected fun dispatchFullScreenEventWithData(
|
|
66
|
+
type: String,
|
|
67
|
+
requestId: Int,
|
|
68
|
+
adUnitId: String,
|
|
69
|
+
data: WritableMap
|
|
70
|
+
) {
|
|
71
|
+
ReactNativeGoogleMobileAdsCommon.sendAdEvent(getAdEventName(), requestId, type, adUnitId, null, data)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
protected fun dispatchPaidEvent(requestId: Int, adUnitId: String, adValue: AdValue) {
|
|
75
|
+
val payload = Arguments.createMap()
|
|
76
|
+
payload.putDouble("value", 1e-6 * adValue.valueMicros)
|
|
77
|
+
payload.putDouble("precision", adValue.precisionType.ordinal.toDouble())
|
|
78
|
+
payload.putString("currency", adValue.currencyCode)
|
|
79
|
+
sendAdEvent(
|
|
80
|
+
ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_PAID,
|
|
81
|
+
requestId,
|
|
82
|
+
adUnitId,
|
|
83
|
+
null,
|
|
84
|
+
payload
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
private fun sendAdEvent(
|
|
89
|
+
type: String,
|
|
90
|
+
requestId: Int,
|
|
91
|
+
adUnitId: String,
|
|
92
|
+
error: WritableMap?,
|
|
93
|
+
data: WritableMap?
|
|
94
|
+
) {
|
|
95
|
+
ReactNativeGoogleMobileAdsCommon.sendAdEvent(
|
|
96
|
+
getAdEventName(),
|
|
97
|
+
requestId,
|
|
98
|
+
type,
|
|
99
|
+
adUnitId,
|
|
100
|
+
error,
|
|
101
|
+
data
|
|
102
|
+
)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
fun load(requestId: Int, adUnitId: String, adRequestOptions: ReadableMap) {
|
|
106
|
+
val activity = reactApplicationContext.currentActivity
|
|
107
|
+
if (activity == null) {
|
|
108
|
+
val error = Arguments.createMap()
|
|
109
|
+
error.putString("code", "null-activity")
|
|
110
|
+
error.putString("message", "Ad attempted to load but the current Activity was null.")
|
|
111
|
+
sendAdEvent(
|
|
112
|
+
ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_ERROR,
|
|
113
|
+
requestId,
|
|
114
|
+
adUnitId,
|
|
115
|
+
error,
|
|
116
|
+
null
|
|
117
|
+
)
|
|
118
|
+
return
|
|
119
|
+
}
|
|
120
|
+
val builder = AdRequest.Builder(adUnitId)
|
|
121
|
+
ReactNativeGoogleMobileAdsCommon.applyRequestOptions(builder, adRequestOptions)
|
|
122
|
+
val adRequest = builder.build()
|
|
123
|
+
val adLoadCallback = AdLoadCallbackImpl(requestId, adUnitId)
|
|
124
|
+
activity.runOnUiThread { loadAd(adRequest, adLoadCallback) }
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
fun show(requestId: Int, adUnitId: String, showOptions: ReadableMap, promise: Promise) {
|
|
128
|
+
val activity = reactApplicationContext.currentActivity
|
|
129
|
+
if (activity == null) {
|
|
130
|
+
rejectPromiseWithCodeAndMessage(
|
|
131
|
+
promise,
|
|
132
|
+
"null-activity",
|
|
133
|
+
"Ad attempted to show but the current Activity was null."
|
|
134
|
+
)
|
|
135
|
+
return
|
|
136
|
+
}
|
|
137
|
+
activity.runOnUiThread {
|
|
138
|
+
val ad = adArray[requestId]
|
|
139
|
+
if (ad == null) {
|
|
140
|
+
rejectPromiseWithCodeAndMessage(
|
|
141
|
+
promise,
|
|
142
|
+
"null-ad",
|
|
143
|
+
"Ad attempted to show but it has not loaded."
|
|
144
|
+
)
|
|
145
|
+
return@runOnUiThread
|
|
146
|
+
}
|
|
147
|
+
var immersiveModeEnabled = false
|
|
148
|
+
if (showOptions.hasKey("immersiveModeEnabled")) {
|
|
149
|
+
immersiveModeEnabled = showOptions.getBoolean("immersiveModeEnabled")
|
|
150
|
+
}
|
|
151
|
+
showAd(ad, activity, immersiveModeEnabled, requestId, adUnitId)
|
|
152
|
+
promise.resolve(null)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
inner class AdLoadCallbackImpl(
|
|
157
|
+
private val requestId: Int,
|
|
158
|
+
private val adUnitId: String
|
|
159
|
+
) : AdLoadCallback<T> {
|
|
160
|
+
override fun onAdLoaded(ad: T) {
|
|
161
|
+
try {
|
|
162
|
+
adArray.put(requestId, ad)
|
|
163
|
+
attachAdEventCallback(ad, requestId, adUnitId)
|
|
164
|
+
sendAdEvent(
|
|
165
|
+
ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_LOADED,
|
|
166
|
+
requestId,
|
|
167
|
+
adUnitId,
|
|
168
|
+
null,
|
|
169
|
+
null
|
|
170
|
+
)
|
|
171
|
+
} catch (e: Exception) {
|
|
172
|
+
Log.w("RNGoogleMobileAds", "Unknown error on load", e)
|
|
173
|
+
val error = Arguments.createMap()
|
|
174
|
+
error.putString("code", "internal")
|
|
175
|
+
error.putString("message", e.message)
|
|
176
|
+
sendAdEvent(
|
|
177
|
+
ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_ERROR,
|
|
178
|
+
requestId,
|
|
179
|
+
adUnitId,
|
|
180
|
+
error,
|
|
181
|
+
null
|
|
182
|
+
)
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
override fun onAdFailedToLoad(loadAdError: LoadAdError) {
|
|
187
|
+
val error = Arguments.createMap()
|
|
188
|
+
val codeAndMessage =
|
|
189
|
+
ReactNativeGoogleMobileAdsCommon.getCodeAndMessageFromAdError(loadAdError)
|
|
190
|
+
error.putString("code", codeAndMessage[0])
|
|
191
|
+
error.putString("message", codeAndMessage[1])
|
|
192
|
+
sendAdEvent(
|
|
193
|
+
ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_ERROR,
|
|
194
|
+
requestId,
|
|
195
|
+
adUnitId,
|
|
196
|
+
error,
|
|
197
|
+
null
|
|
198
|
+
)
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
package io.invertase.googlemobileads
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this library except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import android.app.Activity
|
|
21
|
+
import com.facebook.react.bridge.Promise
|
|
22
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
23
|
+
import com.facebook.react.bridge.ReactMethod
|
|
24
|
+
import com.facebook.react.bridge.ReadableMap
|
|
25
|
+
import com.google.android.libraries.ads.mobile.sdk.common.AdLoadCallback
|
|
26
|
+
import com.google.android.libraries.ads.mobile.sdk.common.AdRequest
|
|
27
|
+
import com.google.android.libraries.ads.mobile.sdk.common.AdValue
|
|
28
|
+
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAd
|
|
29
|
+
import com.google.android.libraries.ads.mobile.sdk.interstitial.InterstitialAdEventCallback
|
|
30
|
+
|
|
31
|
+
class ReactNativeGoogleMobileAdsInterstitialModule(reactContext: ReactApplicationContext?) :
|
|
32
|
+
ReactNativeGoogleMobileAdsFullScreenAdModule<InterstitialAd>(reactContext, NAME) {
|
|
33
|
+
|
|
34
|
+
override fun getAdEventName(): String {
|
|
35
|
+
return ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_INTERSTITIAL
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@ReactMethod
|
|
39
|
+
fun interstitialLoad(requestId: Int, adUnitId: String, adRequestOptions: ReadableMap) {
|
|
40
|
+
load(requestId, adUnitId, adRequestOptions)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@ReactMethod
|
|
44
|
+
fun interstitialShow(
|
|
45
|
+
requestId: Int, adUnitId: String, showOptions: ReadableMap, promise: Promise
|
|
46
|
+
) {
|
|
47
|
+
show(requestId, adUnitId, showOptions, promise)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
override fun loadAd(adRequest: AdRequest, adLoadCallback: AdLoadCallback<InterstitialAd>) {
|
|
51
|
+
InterstitialAd.load(adRequest, adLoadCallback)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
override fun attachAdEventCallback(ad: InterstitialAd, requestId: Int, adUnitId: String) {
|
|
55
|
+
ad.adEventCallback =
|
|
56
|
+
object : InterstitialAdEventCallback {
|
|
57
|
+
override fun onAdShowedFullScreenContent() {
|
|
58
|
+
dispatchFullScreenEvent(
|
|
59
|
+
ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_OPENED, requestId, adUnitId)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
override fun onAdDismissedFullScreenContent() {
|
|
63
|
+
dispatchFullScreenEvent(
|
|
64
|
+
ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_CLOSED, requestId, adUnitId)
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
override fun onAdClicked() {
|
|
68
|
+
dispatchFullScreenEvent(
|
|
69
|
+
ReactNativeGoogleMobileAdsEvent.GOOGLE_MOBILE_ADS_EVENT_CLICKED, requestId, adUnitId)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
override fun onAdPaid(adValue: AdValue) {
|
|
73
|
+
dispatchPaidEvent(requestId, adUnitId, adValue)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
override fun showAd(
|
|
79
|
+
ad: InterstitialAd,
|
|
80
|
+
activity: Activity,
|
|
81
|
+
immersiveModeEnabled: Boolean,
|
|
82
|
+
requestId: Int,
|
|
83
|
+
adUnitId: String
|
|
84
|
+
) {
|
|
85
|
+
ad.setImmersiveMode(immersiveModeEnabled)
|
|
86
|
+
ad.show(activity)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
companion object {
|
|
90
|
+
const val NAME = "RNGoogleMobileAdsInterstitialModule"
|
|
91
|
+
}
|
|
92
|
+
}
|