react-native-google-mobile-ads 13.6.1 → 14.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/android/build.gradle +5 -3
  2. package/android/src/main/java/io/invertase/googlemobileads/common/ReactNativeModule.java +1 -1
  3. package/app.plugin.js +1 -0
  4. package/docs/european-user-consent.mdx +23 -2
  5. package/docs/index.mdx +76 -77
  6. package/ios_config.sh +10 -0
  7. package/jest.config.js +1 -1
  8. package/lib/commonjs/AdEventType.js +1 -2
  9. package/lib/commonjs/AdEventType.js.map +1 -1
  10. package/lib/commonjs/AdsConsent.js +2 -4
  11. package/lib/commonjs/AdsConsent.js.map +1 -1
  12. package/lib/commonjs/AdsConsentDebugGeography.js +1 -2
  13. package/lib/commonjs/AdsConsentDebugGeography.js.map +1 -1
  14. package/lib/commonjs/AdsConsentPrivacyOptionsRequirementStatus.js +1 -2
  15. package/lib/commonjs/AdsConsentPrivacyOptionsRequirementStatus.js.map +1 -1
  16. package/lib/commonjs/AdsConsentPurposes.js +1 -2
  17. package/lib/commonjs/AdsConsentPurposes.js.map +1 -1
  18. package/lib/commonjs/AdsConsentSpecialFeatures.js +1 -2
  19. package/lib/commonjs/AdsConsentSpecialFeatures.js.map +1 -1
  20. package/lib/commonjs/AdsConsentStatus.js +1 -2
  21. package/lib/commonjs/AdsConsentStatus.js.map +1 -1
  22. package/lib/commonjs/BannerAdSize.js +2 -4
  23. package/lib/commonjs/BannerAdSize.js.map +1 -1
  24. package/lib/commonjs/GAMAdEventType.js +1 -2
  25. package/lib/commonjs/GAMAdEventType.js.map +1 -1
  26. package/lib/commonjs/MaxAdContentRating.js +1 -2
  27. package/lib/commonjs/MaxAdContentRating.js.map +1 -1
  28. package/lib/commonjs/MobileAds.js +2 -3
  29. package/lib/commonjs/MobileAds.js.map +1 -1
  30. package/lib/commonjs/NativeGoogleMobileAdsModule.js +1 -2
  31. package/lib/commonjs/NativeGoogleMobileAdsModule.js.map +1 -1
  32. package/lib/commonjs/RewardedAdEventType.js +1 -2
  33. package/lib/commonjs/RewardedAdEventType.js.map +1 -1
  34. package/lib/commonjs/TestIds.js +1 -2
  35. package/lib/commonjs/TestIds.js.map +1 -1
  36. package/lib/commonjs/ads/AppOpenAd.js.map +1 -1
  37. package/lib/commonjs/ads/BannerAd.js +18 -18
  38. package/lib/commonjs/ads/BannerAd.js.map +1 -1
  39. package/lib/commonjs/ads/BaseAd.js +10 -12
  40. package/lib/commonjs/ads/BaseAd.js.map +1 -1
  41. package/lib/commonjs/ads/GAMBannerAd.js +18 -18
  42. package/lib/commonjs/ads/GAMBannerAd.js.map +1 -1
  43. package/lib/commonjs/ads/GAMInterstitialAd.js.map +1 -1
  44. package/lib/commonjs/ads/GoogleMobileAdsBannerViewNativeComponent.js +3 -5
  45. package/lib/commonjs/ads/GoogleMobileAdsBannerViewNativeComponent.js.map +1 -1
  46. package/lib/commonjs/ads/InterstitialAd.js.map +1 -1
  47. package/lib/commonjs/ads/MobileAd.js.map +1 -1
  48. package/lib/commonjs/ads/RewardedAd.js.map +1 -1
  49. package/lib/commonjs/ads/RewardedInterstitialAd.js.map +1 -1
  50. package/lib/commonjs/common/constants.js +1 -2
  51. package/lib/commonjs/common/constants.js.map +1 -1
  52. package/lib/commonjs/common/debounce.js +1 -4
  53. package/lib/commonjs/common/debounce.js.map +1 -1
  54. package/lib/commonjs/common/index.js.map +1 -1
  55. package/lib/commonjs/common/validate.js +1 -2
  56. package/lib/commonjs/common/validate.js.map +1 -1
  57. package/lib/commonjs/declarations.d.js.map +1 -1
  58. package/lib/commonjs/hooks/useAppOpenAd.js +2 -3
  59. package/lib/commonjs/hooks/useAppOpenAd.js.map +1 -1
  60. package/lib/commonjs/hooks/useForeground.js.map +1 -1
  61. package/lib/commonjs/hooks/useFullScreenAd.js +4 -5
  62. package/lib/commonjs/hooks/useFullScreenAd.js.map +1 -1
  63. package/lib/commonjs/hooks/useInterstitialAd.js +2 -3
  64. package/lib/commonjs/hooks/useInterstitialAd.js.map +1 -1
  65. package/lib/commonjs/hooks/useRewardedAd.js +2 -3
  66. package/lib/commonjs/hooks/useRewardedAd.js.map +1 -1
  67. package/lib/commonjs/hooks/useRewardedInterstitialAd.js +2 -3
  68. package/lib/commonjs/hooks/useRewardedInterstitialAd.js.map +1 -1
  69. package/lib/commonjs/index.js +3 -4
  70. package/lib/commonjs/index.js.map +1 -1
  71. package/lib/commonjs/internal/GoogleMobileAdsNativeEventEmitter.js +1 -2
  72. package/lib/commonjs/internal/GoogleMobileAdsNativeEventEmitter.js.map +1 -1
  73. package/lib/commonjs/internal/NativeError.js.map +1 -1
  74. package/lib/commonjs/internal/SharedEventEmitter.js +2 -3
  75. package/lib/commonjs/internal/SharedEventEmitter.js.map +1 -1
  76. package/lib/commonjs/types/AdEventListener.js.map +1 -1
  77. package/lib/commonjs/types/AdEventsListener.js.map +1 -1
  78. package/lib/commonjs/types/AdShowOptions.js.map +1 -1
  79. package/lib/commonjs/types/AdStates.js.map +1 -1
  80. package/lib/commonjs/types/AdapterStatus.js +1 -2
  81. package/lib/commonjs/types/AdapterStatus.js.map +1 -1
  82. package/lib/commonjs/types/AdsConsent.interface.js.map +1 -1
  83. package/lib/commonjs/types/AppEvent.js.map +1 -1
  84. package/lib/commonjs/types/BannerAdProps.js.map +1 -1
  85. package/lib/commonjs/types/MobileAd.interface.js.map +1 -1
  86. package/lib/commonjs/types/MobileAdsModule.interface.js.map +1 -1
  87. package/lib/commonjs/types/PaidEventListener.js.map +1 -1
  88. package/lib/commonjs/types/RequestConfiguration.js.map +1 -1
  89. package/lib/commonjs/types/RequestOptions.js.map +1 -1
  90. package/lib/commonjs/types/RewardedAdReward.js.map +1 -1
  91. package/lib/commonjs/types/index.js.map +1 -1
  92. package/lib/commonjs/validateAdRequestConfiguration.js.map +1 -1
  93. package/lib/commonjs/validateAdRequestOptions.js +1 -2
  94. package/lib/commonjs/validateAdRequestOptions.js.map +1 -1
  95. package/lib/commonjs/validateAdShowOptions.js.map +1 -1
  96. package/lib/commonjs/version.js +1 -2
  97. package/lib/commonjs/version.js.map +1 -1
  98. package/lib/module/AdEventType.js.map +1 -1
  99. package/lib/module/AdsConsent.js +1 -2
  100. package/lib/module/AdsConsent.js.map +1 -1
  101. package/lib/module/AdsConsentDebugGeography.js.map +1 -1
  102. package/lib/module/AdsConsentPrivacyOptionsRequirementStatus.js.map +1 -1
  103. package/lib/module/AdsConsentPurposes.js.map +1 -1
  104. package/lib/module/AdsConsentSpecialFeatures.js.map +1 -1
  105. package/lib/module/AdsConsentStatus.js.map +1 -1
  106. package/lib/module/BannerAdSize.js.map +1 -1
  107. package/lib/module/GAMAdEventType.js.map +1 -1
  108. package/lib/module/MaxAdContentRating.js.map +1 -1
  109. package/lib/module/MobileAds.js.map +1 -1
  110. package/lib/module/NativeGoogleMobileAdsModule.js.map +1 -1
  111. package/lib/module/RewardedAdEventType.js.map +1 -1
  112. package/lib/module/TestIds.js.map +1 -1
  113. package/lib/module/ads/AppOpenAd.js.map +1 -1
  114. package/lib/module/ads/BannerAd.js +1 -1
  115. package/lib/module/ads/BannerAd.js.map +1 -1
  116. package/lib/module/ads/BaseAd.js +7 -8
  117. package/lib/module/ads/BaseAd.js.map +1 -1
  118. package/lib/module/ads/GAMBannerAd.js +1 -1
  119. package/lib/module/ads/GAMBannerAd.js.map +1 -1
  120. package/lib/module/ads/GAMInterstitialAd.js.map +1 -1
  121. package/lib/module/ads/GoogleMobileAdsBannerViewNativeComponent.js.map +1 -1
  122. package/lib/module/ads/InterstitialAd.js.map +1 -1
  123. package/lib/module/ads/MobileAd.js.map +1 -1
  124. package/lib/module/ads/RewardedAd.js.map +1 -1
  125. package/lib/module/ads/RewardedInterstitialAd.js.map +1 -1
  126. package/lib/module/common/constants.js.map +1 -1
  127. package/lib/module/common/debounce.js +1 -4
  128. package/lib/module/common/debounce.js.map +1 -1
  129. package/lib/module/common/index.js.map +1 -1
  130. package/lib/module/common/validate.js +1 -2
  131. package/lib/module/common/validate.js.map +1 -1
  132. package/lib/module/declarations.d.js.map +1 -1
  133. package/lib/module/hooks/useAppOpenAd.js +1 -2
  134. package/lib/module/hooks/useAppOpenAd.js.map +1 -1
  135. package/lib/module/hooks/useForeground.js.map +1 -1
  136. package/lib/module/hooks/useFullScreenAd.js +4 -5
  137. package/lib/module/hooks/useFullScreenAd.js.map +1 -1
  138. package/lib/module/hooks/useInterstitialAd.js +1 -2
  139. package/lib/module/hooks/useInterstitialAd.js.map +1 -1
  140. package/lib/module/hooks/useRewardedAd.js +1 -2
  141. package/lib/module/hooks/useRewardedAd.js.map +1 -1
  142. package/lib/module/hooks/useRewardedInterstitialAd.js +1 -2
  143. package/lib/module/hooks/useRewardedInterstitialAd.js.map +1 -1
  144. package/lib/module/index.js.map +1 -1
  145. package/lib/module/internal/GoogleMobileAdsNativeEventEmitter.js.map +1 -1
  146. package/lib/module/internal/NativeError.js.map +1 -1
  147. package/lib/module/internal/SharedEventEmitter.js.map +1 -1
  148. package/lib/module/types/AdEventListener.js.map +1 -1
  149. package/lib/module/types/AdEventsListener.js.map +1 -1
  150. package/lib/module/types/AdShowOptions.js.map +1 -1
  151. package/lib/module/types/AdStates.js.map +1 -1
  152. package/lib/module/types/AdapterStatus.js.map +1 -1
  153. package/lib/module/types/AdsConsent.interface.js.map +1 -1
  154. package/lib/module/types/AppEvent.js.map +1 -1
  155. package/lib/module/types/BannerAdProps.js.map +1 -1
  156. package/lib/module/types/MobileAd.interface.js.map +1 -1
  157. package/lib/module/types/MobileAdsModule.interface.js.map +1 -1
  158. package/lib/module/types/PaidEventListener.js.map +1 -1
  159. package/lib/module/types/RequestConfiguration.js.map +1 -1
  160. package/lib/module/types/RequestOptions.js.map +1 -1
  161. package/lib/module/types/RewardedAdReward.js.map +1 -1
  162. package/lib/module/types/index.js.map +1 -1
  163. package/lib/module/validateAdRequestConfiguration.js.map +1 -1
  164. package/lib/module/validateAdRequestOptions.js +1 -2
  165. package/lib/module/validateAdRequestOptions.js.map +1 -1
  166. package/lib/module/validateAdShowOptions.js.map +1 -1
  167. package/lib/module/version.js +1 -1
  168. package/lib/module/version.js.map +1 -1
  169. package/lib/typescript/ads/BannerAd.d.ts +1 -1
  170. package/lib/typescript/ads/GAMBannerAd.d.ts +1 -1
  171. package/lib/typescript/ads/GAMInterstitialAd.d.ts.map +1 -1
  172. package/lib/typescript/ads/GoogleMobileAdsBannerViewNativeComponent.d.ts +2 -2
  173. package/lib/typescript/ads/GoogleMobileAdsBannerViewNativeComponent.d.ts.map +1 -1
  174. package/lib/typescript/ads/MobileAd.d.ts +3 -3
  175. package/lib/typescript/ads/MobileAd.d.ts.map +1 -1
  176. package/lib/typescript/common/debounce.d.ts +1 -1
  177. package/lib/typescript/common/debounce.d.ts.map +1 -1
  178. package/lib/typescript/common/validate.d.ts +4 -4
  179. package/lib/typescript/common/validate.d.ts.map +1 -1
  180. package/lib/typescript/index.d.ts +1 -1
  181. package/lib/typescript/types/AdEventListener.d.ts +2 -2
  182. package/lib/typescript/types/AdEventListener.d.ts.map +1 -1
  183. package/lib/typescript/types/AdEventsListener.d.ts +1 -1
  184. package/lib/typescript/types/AdEventsListener.d.ts.map +1 -1
  185. package/lib/typescript/types/AdapterStatus.d.ts +1 -1
  186. package/lib/typescript/types/AdapterStatus.d.ts.map +1 -1
  187. package/lib/typescript/types/BannerAdProps.d.ts +1 -1
  188. package/lib/typescript/types/BannerAdProps.d.ts.map +1 -1
  189. package/lib/typescript/types/PaidEventListener.d.ts +2 -2
  190. package/lib/typescript/types/PaidEventListener.d.ts.map +1 -1
  191. package/lib/typescript/types/RequestOptions.d.ts +1 -1
  192. package/lib/typescript/types/RequestOptions.d.ts.map +1 -1
  193. package/lib/typescript/version.d.ts +1 -1
  194. package/package.json +17 -4
  195. package/plugin/__tests__/__snapshots__/plugin.test.ts.snap +140 -0
  196. package/plugin/__tests__/fixtures/app-without-params.json +11 -0
  197. package/plugin/__tests__/fixtures/app.json +24 -0
  198. package/plugin/__tests__/fixtures/package.json +19 -0
  199. package/plugin/__tests__/plugin.test.ts +96 -0
  200. package/plugin/build/index.d.ts +12 -0
  201. package/plugin/build/index.js +101 -0
  202. package/plugin/jest.config.js +1 -0
  203. package/plugin/src/index.ts +194 -0
  204. package/plugin/tsconfig.json +9 -0
  205. package/src/types/BannerAdProps.ts +1 -1
  206. package/src/version.ts +1 -1
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const config_plugins_1 = require("@expo/config-plugins");
4
+ function addReplacingMainApplicationMetaDataItem(manifest, itemName, itemValue) {
5
+ config_plugins_1.AndroidConfig.Manifest.ensureToolsAvailable(manifest);
6
+ const newItem = {
7
+ $: {
8
+ 'android:name': itemName,
9
+ 'android:value': itemValue,
10
+ 'tools:replace': 'android:value',
11
+ },
12
+ };
13
+ const mainApplication = config_plugins_1.AndroidConfig.Manifest.getMainApplicationOrThrow(manifest);
14
+ mainApplication['meta-data'] = mainApplication['meta-data'] ?? [];
15
+ mainApplication['meta-data'].push(newItem);
16
+ return manifest;
17
+ }
18
+ const withAndroidAppId = (config, androidAppId) => {
19
+ if (androidAppId === undefined)
20
+ return config;
21
+ return (0, config_plugins_1.withAndroidManifest)(config, config => {
22
+ addReplacingMainApplicationMetaDataItem(config.modResults, 'com.google.android.gms.ads.APPLICATION_ID', androidAppId);
23
+ return config;
24
+ });
25
+ };
26
+ const withAndroidAppMeasurementInitDelayed = (config, delayAppMeasurementInit) => {
27
+ if (delayAppMeasurementInit === undefined)
28
+ return config;
29
+ return (0, config_plugins_1.withAndroidManifest)(config, config => {
30
+ addReplacingMainApplicationMetaDataItem(config.modResults, 'com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT', delayAppMeasurementInit.toString());
31
+ return config;
32
+ });
33
+ };
34
+ const withAndroidInitializationOptimized = (config, optimizeInitialization = true) => {
35
+ return (0, config_plugins_1.withAndroidManifest)(config, config => {
36
+ addReplacingMainApplicationMetaDataItem(config.modResults, 'com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION', optimizeInitialization.toString());
37
+ return config;
38
+ });
39
+ };
40
+ const withAndroidAdLoadingOptimized = (config, optimizeAdLoading = true) => {
41
+ return (0, config_plugins_1.withAndroidManifest)(config, config => {
42
+ addReplacingMainApplicationMetaDataItem(config.modResults, 'com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING', optimizeAdLoading.toString());
43
+ return config;
44
+ });
45
+ };
46
+ const withIosAppId = (config, iosAppId) => {
47
+ if (iosAppId === undefined)
48
+ return config;
49
+ return (0, config_plugins_1.withInfoPlist)(config, config => {
50
+ config.modResults.GADApplicationIdentifier = iosAppId;
51
+ return config;
52
+ });
53
+ };
54
+ const withIosAppMeasurementInitDelayed = (config, delayAppMeasurementInit = false) => {
55
+ return (0, config_plugins_1.withInfoPlist)(config, config => {
56
+ config.modResults.GADDelayAppMeasurementInit = delayAppMeasurementInit;
57
+ return config;
58
+ });
59
+ };
60
+ const withIosSkAdNetworkItems = (config, skAdNetworkItems) => {
61
+ if (skAdNetworkItems === undefined)
62
+ return config;
63
+ return (0, config_plugins_1.withInfoPlist)(config, config => {
64
+ config.modResults.SKAdNetworkItems = config.modResults.SKAdNetworkItems ?? [];
65
+ const existingIdentifiers = config.modResults.SKAdNetworkItems.map((item) => item.SKAdNetworkIdentifier);
66
+ const missingIdentifiers = skAdNetworkItems.filter(skAdNetworkItem => !existingIdentifiers.includes(skAdNetworkItem));
67
+ config.modResults.SKAdNetworkItems.push(...missingIdentifiers.map(identifier => ({
68
+ SKAdNetworkIdentifier: identifier,
69
+ })));
70
+ return config;
71
+ });
72
+ };
73
+ const withIosUserTrackingUsageDescription = (config, userTrackingUsageDescription) => {
74
+ if (userTrackingUsageDescription === undefined)
75
+ return config;
76
+ return (0, config_plugins_1.withInfoPlist)(config, config => {
77
+ config.modResults.NSUserTrackingUsageDescription = userTrackingUsageDescription;
78
+ return config;
79
+ });
80
+ };
81
+ const withReactNativeGoogleMobileAds = (config, { androidAppId, delayAppMeasurementInit, optimizeInitialization, optimizeAdLoading, iosAppId, skAdNetworkItems, userTrackingUsageDescription, } = {}) => {
82
+ if (androidAppId === undefined) {
83
+ console.warn("No 'androidAppId' was provided. The native Google Mobile Ads SDK will crash on Android without it.");
84
+ }
85
+ if (iosAppId === undefined) {
86
+ console.warn("No 'iosAppId' was provided. The native Google Mobile Ads SDK will crash on iOS without it.");
87
+ }
88
+ return (0, config_plugins_1.withPlugins)(config, [
89
+ // Android
90
+ [withAndroidAppId, androidAppId],
91
+ [withAndroidAppMeasurementInitDelayed, delayAppMeasurementInit],
92
+ [withAndroidInitializationOptimized, optimizeInitialization],
93
+ [withAndroidAdLoadingOptimized, optimizeAdLoading],
94
+ // iOS
95
+ [withIosAppId, iosAppId],
96
+ [withIosAppMeasurementInitDelayed, delayAppMeasurementInit],
97
+ [withIosSkAdNetworkItems, skAdNetworkItems],
98
+ [withIosUserTrackingUsageDescription, userTrackingUsageDescription],
99
+ ]);
100
+ };
101
+ exports.default = withReactNativeGoogleMobileAds;
@@ -0,0 +1 @@
1
+ module.exports = require("expo-module-scripts/jest-preset-plugin");
@@ -0,0 +1,194 @@
1
+ import {
2
+ AndroidConfig,
3
+ ConfigPlugin,
4
+ withAndroidManifest,
5
+ withPlugins,
6
+ withInfoPlist,
7
+ } from '@expo/config-plugins';
8
+
9
+ type PluginParameters = {
10
+ androidAppId?: string;
11
+ iosAppId?: string;
12
+ delayAppMeasurementInit?: boolean;
13
+ optimizeInitialization?: boolean;
14
+ optimizeAdLoading?: boolean;
15
+ skAdNetworkItems?: string[];
16
+ userTrackingUsageDescription?: string;
17
+ };
18
+
19
+ function addReplacingMainApplicationMetaDataItem(
20
+ manifest: AndroidConfig.Manifest.AndroidManifest,
21
+ itemName: string,
22
+ itemValue: string,
23
+ ): AndroidConfig.Manifest.AndroidManifest {
24
+ AndroidConfig.Manifest.ensureToolsAvailable(manifest);
25
+
26
+ const newItem = {
27
+ $: {
28
+ 'android:name': itemName,
29
+ 'android:value': itemValue,
30
+ 'tools:replace': 'android:value',
31
+ },
32
+ } as AndroidConfig.Manifest.ManifestMetaData;
33
+
34
+ const mainApplication = AndroidConfig.Manifest.getMainApplicationOrThrow(manifest);
35
+ mainApplication['meta-data'] = mainApplication['meta-data'] ?? [];
36
+ mainApplication['meta-data'].push(newItem);
37
+
38
+ return manifest;
39
+ }
40
+
41
+ const withAndroidAppId: ConfigPlugin<PluginParameters['androidAppId']> = (config, androidAppId) => {
42
+ if (androidAppId === undefined) return config;
43
+
44
+ return withAndroidManifest(config, config => {
45
+ addReplacingMainApplicationMetaDataItem(
46
+ config.modResults,
47
+ 'com.google.android.gms.ads.APPLICATION_ID',
48
+ androidAppId,
49
+ );
50
+
51
+ return config;
52
+ });
53
+ };
54
+
55
+ const withAndroidAppMeasurementInitDelayed: ConfigPlugin<
56
+ PluginParameters['delayAppMeasurementInit']
57
+ > = (config, delayAppMeasurementInit) => {
58
+ if (delayAppMeasurementInit === undefined) return config;
59
+
60
+ return withAndroidManifest(config, config => {
61
+ addReplacingMainApplicationMetaDataItem(
62
+ config.modResults,
63
+ 'com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT',
64
+ delayAppMeasurementInit.toString(),
65
+ );
66
+
67
+ return config;
68
+ });
69
+ };
70
+
71
+ const withAndroidInitializationOptimized: ConfigPlugin<
72
+ PluginParameters['optimizeInitialization']
73
+ > = (config, optimizeInitialization = true) => {
74
+ return withAndroidManifest(config, config => {
75
+ addReplacingMainApplicationMetaDataItem(
76
+ config.modResults,
77
+ 'com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION',
78
+ optimizeInitialization.toString(),
79
+ );
80
+
81
+ return config;
82
+ });
83
+ };
84
+
85
+ const withAndroidAdLoadingOptimized: ConfigPlugin<PluginParameters['optimizeAdLoading']> = (
86
+ config,
87
+ optimizeAdLoading = true,
88
+ ) => {
89
+ return withAndroidManifest(config, config => {
90
+ addReplacingMainApplicationMetaDataItem(
91
+ config.modResults,
92
+ 'com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING',
93
+ optimizeAdLoading.toString(),
94
+ );
95
+
96
+ return config;
97
+ });
98
+ };
99
+
100
+ const withIosAppId: ConfigPlugin<PluginParameters['iosAppId']> = (config, iosAppId) => {
101
+ if (iosAppId === undefined) return config;
102
+
103
+ return withInfoPlist(config, config => {
104
+ config.modResults.GADApplicationIdentifier = iosAppId;
105
+ return config;
106
+ });
107
+ };
108
+
109
+ const withIosAppMeasurementInitDelayed: ConfigPlugin<
110
+ PluginParameters['delayAppMeasurementInit']
111
+ > = (config, delayAppMeasurementInit = false) => {
112
+ return withInfoPlist(config, config => {
113
+ config.modResults.GADDelayAppMeasurementInit = delayAppMeasurementInit;
114
+ return config;
115
+ });
116
+ };
117
+
118
+ const withIosSkAdNetworkItems: ConfigPlugin<PluginParameters['skAdNetworkItems']> = (
119
+ config,
120
+ skAdNetworkItems,
121
+ ) => {
122
+ if (skAdNetworkItems === undefined) return config;
123
+
124
+ return withInfoPlist(config, config => {
125
+ config.modResults.SKAdNetworkItems = config.modResults.SKAdNetworkItems ?? [];
126
+
127
+ const existingIdentifiers = config.modResults.SKAdNetworkItems.map(
128
+ (item: { SKAdNetworkIdentifier: string }) => item.SKAdNetworkIdentifier,
129
+ );
130
+
131
+ const missingIdentifiers = skAdNetworkItems.filter(
132
+ skAdNetworkItem => !existingIdentifiers.includes(skAdNetworkItem),
133
+ );
134
+
135
+ config.modResults.SKAdNetworkItems.push(
136
+ ...missingIdentifiers.map(identifier => ({
137
+ SKAdNetworkIdentifier: identifier,
138
+ })),
139
+ );
140
+
141
+ return config;
142
+ });
143
+ };
144
+
145
+ const withIosUserTrackingUsageDescription: ConfigPlugin<
146
+ PluginParameters['userTrackingUsageDescription']
147
+ > = (config, userTrackingUsageDescription) => {
148
+ if (userTrackingUsageDescription === undefined) return config;
149
+
150
+ return withInfoPlist(config, config => {
151
+ config.modResults.NSUserTrackingUsageDescription = userTrackingUsageDescription;
152
+ return config;
153
+ });
154
+ };
155
+
156
+ const withReactNativeGoogleMobileAds: ConfigPlugin<PluginParameters> = (
157
+ config,
158
+ {
159
+ androidAppId,
160
+ delayAppMeasurementInit,
161
+ optimizeInitialization,
162
+ optimizeAdLoading,
163
+ iosAppId,
164
+ skAdNetworkItems,
165
+ userTrackingUsageDescription,
166
+ } = {},
167
+ ) => {
168
+ if (androidAppId === undefined) {
169
+ console.warn(
170
+ "No 'androidAppId' was provided. The native Google Mobile Ads SDK will crash on Android without it.",
171
+ );
172
+ }
173
+
174
+ if (iosAppId === undefined) {
175
+ console.warn(
176
+ "No 'iosAppId' was provided. The native Google Mobile Ads SDK will crash on iOS without it.",
177
+ );
178
+ }
179
+
180
+ return withPlugins(config, [
181
+ // Android
182
+ [withAndroidAppId, androidAppId],
183
+ [withAndroidAppMeasurementInitDelayed, delayAppMeasurementInit],
184
+ [withAndroidInitializationOptimized, optimizeInitialization],
185
+ [withAndroidAdLoadingOptimized, optimizeAdLoading],
186
+ // iOS
187
+ [withIosAppId, iosAppId],
188
+ [withIosAppMeasurementInitDelayed, delayAppMeasurementInit],
189
+ [withIosSkAdNetworkItems, skAdNetworkItems],
190
+ [withIosUserTrackingUsageDescription, userTrackingUsageDescription],
191
+ ]);
192
+ };
193
+
194
+ export default withReactNativeGoogleMobileAds;
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "expo-module-scripts/tsconfig.plugin",
3
+ "compilerOptions": {
4
+ "outDir": "build",
5
+ "rootDir": "src"
6
+ },
7
+ "include": ["./src"],
8
+ "exclude": ["**/__mocks__/*", "**/__tests__/*"]
9
+ }
@@ -123,7 +123,7 @@ export interface GAMBannerAdProps extends Omit<BannerAdProps, 'size'> {
123
123
  *
124
124
  * Inventory must be available for the banner sizes specified, otherwise a no-fill error will be sent to `onAdFailedToLoad`.
125
125
  */
126
- sizes: typeof GAMBannerAdSize[keyof typeof GAMBannerAdSize][] | string[];
126
+ sizes: (typeof GAMBannerAdSize)[keyof typeof GAMBannerAdSize][] | string[];
127
127
 
128
128
  /**
129
129
  * Whether to enable the manual impression counting.
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  // Generated by genversion.
2
- export const version = '13.6.1';
2
+ export const version = '14.0.1';