UNPKG

expo-ads-admob

Version:

Provides support for the Google AdMob SDK (https://www.google.com/admob/) for mobile advertising. This module is largely based of the react-native-admob (https://github.com/sbugert/react-native-admob) module, as the documentation and questions surrounding

50 lines (41 loc) 1.71 kB
import { AndroidConfig, ConfigPlugin, withAndroidManifest } from '@expo/config-plugins'; import { ExpoConfig } from '@expo/config-types'; const { addMetaDataItemToMainApplication, getMainApplicationOrThrow, removeMetaDataItemFromMainApplication, } = AndroidConfig.Manifest; const META_APPLICATION_ID = 'com.google.android.gms.ads.APPLICATION_ID'; const META_DELAY_APP_MEASUREMENT_INIT = 'com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT'; export const withAdMobAndroid: ConfigPlugin = (config) => { return withAndroidManifest(config, (config) => { config.modResults = setAdMobConfig(config, config.modResults); return config; }); }; export function getGoogleMobileAdsAppId(config: Pick<ExpoConfig, 'android'>) { return config.android?.config?.googleMobileAdsAppId ?? null; } export function getGoogleMobileAdsAutoInit(config: Pick<ExpoConfig, 'android'>) { return config.android?.config?.googleMobileAdsAutoInit ?? false; } export function setAdMobConfig( config: Pick<ExpoConfig, 'android'>, androidManifest: AndroidConfig.Manifest.AndroidManifest ) { const appId = getGoogleMobileAdsAppId(config); const autoInit = getGoogleMobileAdsAutoInit(config); const mainApplication = getMainApplicationOrThrow(androidManifest); if (appId) { addMetaDataItemToMainApplication(mainApplication, META_APPLICATION_ID, appId); addMetaDataItemToMainApplication( mainApplication, META_DELAY_APP_MEASUREMENT_INIT, String(!autoInit) ); } else { removeMetaDataItemFromMainApplication(mainApplication, META_APPLICATION_ID); removeMetaDataItemFromMainApplication(mainApplication, META_DELAY_APP_MEASUREMENT_INIT); } return androidManifest; }