UNPKG

react-native-google-mobile-ads

Version:

React Native Google Mobile Ads is an easy way to monetize mobile apps with targeted, in-app advertising.

102 lines (101 loc) 4.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const config_plugins_1 = require("@expo/config-plugins"); function addReplacingMainApplicationMetaDataItem(manifest, itemName, itemValue) { config_plugins_1.AndroidConfig.Manifest.ensureToolsAvailable(manifest); const newItem = { $: { 'android:name': itemName, 'android:value': itemValue, 'tools:replace': 'android:value', }, }; const mainApplication = config_plugins_1.AndroidConfig.Manifest.getMainApplicationOrThrow(manifest); mainApplication['meta-data'] = mainApplication['meta-data'] ?? []; mainApplication['meta-data'].push(newItem); return manifest; } const withAndroidAppId = (config, androidAppId) => { if (androidAppId === undefined) return config; return (0, config_plugins_1.withAndroidManifest)(config, config => { addReplacingMainApplicationMetaDataItem(config.modResults, 'com.google.android.gms.ads.APPLICATION_ID', androidAppId); return config; }); }; const withAndroidAppMeasurementInitDelayed = (config, delayAppMeasurementInit) => { if (delayAppMeasurementInit === undefined) return config; return (0, config_plugins_1.withAndroidManifest)(config, config => { addReplacingMainApplicationMetaDataItem(config.modResults, 'com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT', delayAppMeasurementInit.toString()); return config; }); }; const withAndroidInitializationOptimized = (config, optimizeInitialization = true) => { return (0, config_plugins_1.withAndroidManifest)(config, config => { addReplacingMainApplicationMetaDataItem(config.modResults, 'com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION', optimizeInitialization.toString()); return config; }); }; const withAndroidAdLoadingOptimized = (config, optimizeAdLoading = true) => { return (0, config_plugins_1.withAndroidManifest)(config, config => { addReplacingMainApplicationMetaDataItem(config.modResults, 'com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING', optimizeAdLoading.toString()); return config; }); }; const withIosAppId = (config, iosAppId) => { if (iosAppId === undefined) return config; return (0, config_plugins_1.withInfoPlist)(config, config => { config.modResults.GADApplicationIdentifier = iosAppId; return config; }); }; const withIosAppMeasurementInitDelayed = (config, delayAppMeasurementInit = false) => { return (0, config_plugins_1.withInfoPlist)(config, config => { config.modResults.GADDelayAppMeasurementInit = delayAppMeasurementInit; return config; }); }; const withIosSkAdNetworkItems = (config, skAdNetworkItems) => { if (skAdNetworkItems === undefined) return config; return (0, config_plugins_1.withInfoPlist)(config, config => { config.modResults.SKAdNetworkItems = config.modResults.SKAdNetworkItems ?? []; const existingIdentifiers = config.modResults.SKAdNetworkItems.map((item) => item.SKAdNetworkIdentifier); const missingIdentifiers = skAdNetworkItems.filter(skAdNetworkItem => !existingIdentifiers.includes(skAdNetworkItem)); config.modResults.SKAdNetworkItems.push(...missingIdentifiers.map(identifier => ({ SKAdNetworkIdentifier: identifier, }))); return config; }); }; const withIosUserTrackingUsageDescription = (config, userTrackingUsageDescription) => { if (userTrackingUsageDescription === undefined) return config; return (0, config_plugins_1.withInfoPlist)(config, config => { config.modResults.NSUserTrackingUsageDescription = userTrackingUsageDescription; return config; }); }; const withReactNativeGoogleMobileAds = (config, { androidAppId, delayAppMeasurementInit, optimizeInitialization, optimizeAdLoading, iosAppId, skAdNetworkItems, userTrackingUsageDescription, } = {}) => { if (androidAppId === undefined) { console.warn("No 'androidAppId' was provided. The native Google Mobile Ads SDK will crash on Android without it."); } if (iosAppId === undefined) { console.warn("No 'iosAppId' was provided. The native Google Mobile Ads SDK will crash on iOS without it."); } return (0, config_plugins_1.withPlugins)(config, [ // Android [withAndroidAppId, androidAppId], [withAndroidAppMeasurementInitDelayed, delayAppMeasurementInit], [withAndroidInitializationOptimized, optimizeInitialization], [withAndroidAdLoadingOptimized, optimizeAdLoading], // iOS [withIosAppId, iosAppId], [withIosAppMeasurementInitDelayed, delayAppMeasurementInit], [withIosSkAdNetworkItems, skAdNetworkItems], [withIosUserTrackingUsageDescription, userTrackingUsageDescription], ]); }; exports.default = withReactNativeGoogleMobileAds;