UNPKG

cordova-plugin-applovin-max

Version:

AppLovin MAX Cordova Plugin for Android and iOS

296 lines (230 loc) 8.3 kB
var exec = require('cordova/exec'); var cordova = require('cordova'); const VERSION = '2.1.0'; const AdFormat = { BANNER: 'banner', MREC: 'mrec', }; const AdViewPosition = { TOP_CENTER: 'top_center', TOP_RIGHT: 'top_right', CENTERED: 'centered', CENTER_LEFT: 'center_left', CENTER_RIGHT: 'center_right', BOTTOM_LEFT: 'bottom_left', BOTTOM_CENTER: 'bottom_center', BOTTOM_RIGHT: 'bottom_right', }; function isFunction(functionObj) { return typeof functionObj === 'function'; } function callNative(name, params = [], successCallback = null, errorCallback = null) { cordova.exec(successCallback, errorCallback, 'AppLovinMAX', name, params); } var AppLovinMAX = { VERSION, AdFormat, AdViewPosition, // NOTE: We have to store states in JS as workaround for callback-based API // since Cordova does not allow for synchronous returns initialized: false, hasUserConsentValue: null, isAgeRestrictedUserValue: null, isDoNotSellValue: null, isTabletValue: null, isAdReadyValues: {}, initialize: function (sdkKey, callback) { callNative('initialize', [VERSION, sdkKey], function (config) { AppLovinMAX.initialized = true; AppLovinMAX.hasUserConsentValue = config.hasUserConsent; AppLovinMAX.isAgeRestrictedUserValue = config.isAgeRestrictedUser; AppLovinMAX.isDoNotSellValue = config.isDoNotSell; AppLovinMAX.isTabletValue = config.isTablet; if (isFunction(callback)) { callback(config); } }); }, isInitialized: function () { return this.initialized; }, showMediationDebugger: function () { callNative('showMediationDebugger'); }, /*--------------*/ /* PRIVACY APIs */ /*--------------*/ setHasUserConsent: function (hasUserConsent) { this.hasUserConsentValue = hasUserConsent; callNative('setHasUserConsent', [hasUserConsent]); }, hasUserConsent: function () { return this.hasUserConsentValue; }, setDoNotSell: function (isDoNotSell) { this.isDoNotSellValue = isDoNotSell; callNative('setDoNotSell', [isDoNotSell]); }, isDoNotSell: function () { return this.isDoNotSellValue; }, /*--------------------*/ /* GENERAL PUBLIC API */ /*--------------------*/ isTablet: function () { return this.isTabletValue; }, setUserId: function (userId) { callNative('setUserId', [userId]); }, setMuted: function (muted) { callNative('setMuted', [muted]); }, setVerboseLogging: function (verboseLoggingEnabled) { callNative('setVerboseLogging', [verboseLoggingEnabled]); }, setTestDeviceAdvertisingIds: function (advertisingIds) { callNative('setTestDeviceAdvertisingIds', [advertisingIds]); }, /*-------------------*/ /* SEGMENT TARGETING */ /*-------------------*/ addSegment: function (key, values) { callNative('addSegment', [key, values]); }, /*----------------*/ /* EVENT TRACKING */ /*----------------*/ trackEvent: function (event, parameters = null) { var parametersToSend = [event]; if (parameters != null) { parametersToSend.push(parameters); } callNative('trackEvent', parametersToSend); }, /*---------*/ /* BANNERS */ /*---------*/ createBanner: function (adUnitId, bannerPosition) { callNative('createBanner', [adUnitId, bannerPosition]); }, setBannerBackgroundColor: function (adUnitId, hexColorCode) { callNative('setBannerBackgroundColor', [adUnitId, hexColorCode]); }, setBannerPlacement: function (adUnitId, placement) { callNative('setBannerPlacement', [adUnitId, placement]); }, updateBannerPosition: function (adUnitId, bannerPosition) { callNative('updateBannerPosition', [adUnitId, bannerPosition]); }, setBannerExtraParameter: function (adUnitId, key, value) { callNative('setBannerExtraParameter', [adUnitId, key, value]); }, showBanner: function (adUnitId) { callNative('showBanner', [adUnitId]); }, hideBanner: function (adUnitId) { callNative('hideBanner', [adUnitId]); }, destroyBanner: function (adUnitId) { callNative('destroyBanner', [adUnitId]); }, /*-------*/ /* MRECS */ /*-------*/ createMRec: function (adUnitId, mrecPosition) { callNative('createMRec', [adUnitId, mrecPosition]); }, setMRecBackgroundColor: function (adUnitId, hexColorCode) { callNative('setMRecBackgroundColor', [adUnitId, hexColorCode]); }, setMRecPlacement: function (adUnitId, placement) { callNative('setMRecPlacement', [adUnitId, placement]); }, updateMRecPosition: function (adUnitId, mrecPosition) { callNative('updateMRecPosition', [adUnitId, mrecPosition]); }, setMRecExtraParameter: function (adUnitId, key, value) { callNative('setMRecExtraParameter', [adUnitId, key, value]); }, showMRec: function (adUnitId) { callNative('showMRec', [adUnitId]); }, hideMRec: function (adUnitId) { callNative('hideMRec', [adUnitId]); }, destroyMRec: function (adUnitId) { callNative('destroyMRec', [adUnitId]); }, /*---------------*/ /* INTERSTITIALS */ /*---------------*/ loadInterstitial: function (adUnitId) { callNative('loadInterstitial', [adUnitId]); }, isInterstitialReady: function (adUnitId) { var isReady = this.isAdReadyValues[adUnitId]; return typeof isReady === 'boolean' && isReady === true; }, showInterstitial: function (adUnitId, placement = null) { var parameters = [adUnitId]; if (placement != null) { parameters.push(placement); } callNative('showInterstitial', parameters); }, setInterstitialExtraParameter: function (adUnitId, key, value) { callNative('setInterstitialExtraParameter', [adUnitId, key, value]); }, /*----------*/ /* REWARDED */ /*----------*/ loadRewardedAd: function (adUnitId) { callNative('loadRewardedAd', [adUnitId]); }, isRewardedAdReady: function (adUnitId) { var isReady = this.isAdReadyValues[adUnitId]; return typeof isReady === 'boolean' && isReady === true; }, showRewardedAd: function (adUnitId, placement) { var parameters = [adUnitId]; if (placement != null) { parameters.push(placement); } callNative('showRewardedAd', parameters); }, setRewardedAdExtraParameter: function (adUnitId, key, value) { callNative('setRewardedAdExtraParameter', [adUnitId, key, value]); }, }; // Attach listeners for ad readiness state management window.addEventListener('OnInterstitialLoadedEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = true; }); window.addEventListener('OnInterstitialLoadFailedEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = false; }); window.addEventListener('OnInterstitialDisplayedEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = false; }); window.addEventListener('OnInterstitialAdFailedToDisplayEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = false; }); window.addEventListener('OnRewardedAdLoadedEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = true; }); window.addEventListener('OnRewardedAdLoadFailedEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = false; }); window.addEventListener('OnRewardedAdDisplayedEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = false; }); window.addEventListener('OnRewardedAdFailedToDisplayEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = false; }); window.addEventListener('OnRewardedAdReceivedRewardEvent', function (adInfo) { AppLovinMAX.isAdReadyValues[adInfo.adUnitId] = false; }); if (typeof module !== undefined && module.exports) { module.exports = AppLovinMAX; }