UNPKG

nativescript-plugin-firebase-ssi

Version:
415 lines (414 loc) 19.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var platform_1 = require("tns-core-modules/platform/platform"); var enums_1 = require("tns-core-modules/ui/enums/enums"); var firebase_common_1 = require("../firebase-common"); var admob_common_1 = require("./admob-common"); exports.AD_SIZE = admob_common_1.AD_SIZE; var _bannerOptions = undefined; var _rewardBasedVideoAdDelegate = undefined; function showBanner(arg) { return new Promise(function (resolve, reject) { try { if (typeof (GADRequest) === "undefined") { reject("Uncomment AdMob in the plugin's Podfile first"); return; } if (firebase_common_1.firebase.admob.adView !== null && firebase_common_1.firebase.admob.adView !== undefined) { firebase_common_1.firebase.admob.adView.removeFromSuperview(); firebase_common_1.firebase.admob.adView = null; } admob_common_1.BANNER_DEFAULTS.view = UIApplication.sharedApplication.keyWindow.rootViewController.view; var settings = firebase_common_1.firebase.merge(arg, admob_common_1.BANNER_DEFAULTS); _bannerOptions = settings; var view = settings.view; var bannerType = _getBannerType(settings.size); var adWidth = bannerType.size.width === 0 ? view.frame.size.width : bannerType.size.width; var adHeight = bannerType.size.smartHeight ? bannerType.size.smartHeight : bannerType.size.height; var originX = (view.frame.size.width - adWidth) / 2; var originY = settings.margins.top > -1 ? settings.margins.top : (settings.margins.bottom > -1 ? view.frame.size.height - adHeight - settings.margins.bottom : 0.0); var origin_1 = CGPointMake(originX, originY); firebase_common_1.firebase.admob.adView = GADBannerView.alloc().initWithAdSizeOrigin(bannerType, origin_1); firebase_common_1.firebase.admob.adView.adUnitID = settings.iosBannerId; var adRequest = GADRequest.request(); if (settings.testing) { var testDevices = []; try { testDevices.push("Simulator"); } catch (ignore) { } if (settings.iosTestDeviceIds) { testDevices = testDevices.concat(settings.iosTestDeviceIds); } adRequest.testDevices = testDevices; } if (settings.keywords !== undefined) { adRequest.keywords = settings.keywords; } firebase_common_1.firebase.admob.adView.rootViewController = UIApplication.sharedApplication.keyWindow.rootViewController; firebase_common_1.firebase.admob.adView.loadRequest(adRequest); var delegate_1 = GADBannerViewDelegateImpl.new().initWithOptionsAndCallback(arg, function (ad, error) { if (error) { reject(error.localizedDescription); } else { resolve(); } }, function () { arg.onClosed && arg.onClosed(); CFRelease(delegate_1); delegate_1 = undefined; }); CFRetain(delegate_1); firebase_common_1.firebase.admob.adView.delegate = delegate_1; view.addSubview(firebase_common_1.firebase.admob.adView); } catch (ex) { console.log("Error in firebase.admob.showBanner: " + ex); reject(ex); } }); } exports.showBanner = showBanner; function preloadInterstitial(arg) { return new Promise(function (resolve, reject) { try { if (typeof (GADRequest) === "undefined") { reject("Uncomment AdMob in the plugin's Podfile first"); return; } var settings = firebase_common_1.firebase.merge(arg, admob_common_1.BANNER_DEFAULTS); firebase_common_1.firebase.admob.interstitialView = GADInterstitial.alloc().initWithAdUnitID(settings.iosInterstitialId); var delegate_2 = GADInterstitialDelegateImpl.new().initWithOptionsAndCallback(arg, function (ad, error) { if (error) { reject(error.localizedDescription); } else { resolve(); } }, function () { arg.onAdClosed && arg.onAdClosed(); arg.onClosed && arg.onClosed(); CFRelease(delegate_2); delegate_2 = undefined; }); CFRetain(delegate_2); firebase_common_1.firebase.admob.interstitialView.delegate = delegate_2; var adRequest = GADRequest.request(); if (settings.testing) { var testDevices = []; try { testDevices.push("Simulator"); } catch (ignore) { } if (settings.iosTestDeviceIds) { testDevices = testDevices.concat(settings.iosTestDeviceIds); } adRequest.testDevices = testDevices; } firebase_common_1.firebase.admob.interstitialView.loadRequest(adRequest); } catch (ex) { console.log("Error in firebase.admob.preloadInterstitial: " + ex); reject(ex); } }); } exports.preloadInterstitial = preloadInterstitial; function showInterstitial(arg) { return new Promise(function (resolve, reject) { try { if (typeof (GADRequest) === "undefined") { reject("Uncomment AdMob in the plugin's Podfile first"); return; } if (!arg) { if (firebase_common_1.firebase.admob.interstitialView) { firebase_common_1.firebase.admob.interstitialView.presentFromRootViewController(UIApplication.sharedApplication.keyWindow.rootViewController); resolve(); } else { reject("Please call 'preloadInterstitial' first"); } return; } var settings = firebase_common_1.firebase.merge(arg, admob_common_1.BANNER_DEFAULTS); firebase_common_1.firebase.admob.interstitialView = GADInterstitial.alloc().initWithAdUnitID(settings.iosInterstitialId); var delegate_3 = GADInterstitialDelegateImpl.new().initWithOptionsAndCallback(arg, function (ad, error) { if (error) { reject(error.localizedDescription); } else { firebase_common_1.firebase.admob.interstitialView.presentFromRootViewController(UIApplication.sharedApplication.keyWindow.rootViewController); resolve(); } CFRelease(delegate_3); delegate_3 = undefined; }); CFRetain(delegate_3); firebase_common_1.firebase.admob.interstitialView.delegate = delegate_3; var adRequest = GADRequest.request(); if (settings.testing) { var testDevices = []; try { testDevices.push("Simulator"); } catch (ignore) { } if (settings.iosTestDeviceIds) { testDevices = testDevices.concat(settings.iosTestDeviceIds); } adRequest.testDevices = testDevices; } firebase_common_1.firebase.admob.interstitialView.loadRequest(adRequest); } catch (ex) { console.log("Error in firebase.admob.showInterstitial: " + ex); reject(ex); } }); } exports.showInterstitial = showInterstitial; function preloadRewardedVideoAd(arg) { return new Promise(function (resolve, reject) { try { if (typeof (GADRequest) === "undefined") { reject("Enable AdMob first - see the plugin documentation"); return; } var onLoaded = function () { return resolve(); }; var onError = function (err) { return reject(err); }; _rewardBasedVideoAdDelegate = GADRewardBasedVideoAdDelegateImpl.new().initWithCallback(onLoaded, onError); CFRetain(_rewardBasedVideoAdDelegate); firebase_common_1.firebase.admob.rewardedAdVideoView = GADRewardBasedVideoAd.sharedInstance(); firebase_common_1.firebase.admob.rewardedAdVideoView.delegate = _rewardBasedVideoAdDelegate; var settings = firebase_common_1.firebase.merge(arg, admob_common_1.BANNER_DEFAULTS); var adRequest = GADRequest.request(); if (settings.testing) { var testDevices = []; try { testDevices.push("Simulator"); } catch (ignore) { } if (settings.iosTestDeviceIds) { testDevices = testDevices.concat(settings.iosTestDeviceIds); } adRequest.testDevices = testDevices; } firebase_common_1.firebase.admob.rewardedAdVideoView.loadRequestWithAdUnitID(adRequest, settings.iosAdPlacementId); } catch (ex) { console.log("Error in firebase.admob.preloadRewardedVideoAd: " + ex); reject(ex); } }); } exports.preloadRewardedVideoAd = preloadRewardedVideoAd; function showRewardedVideoAd(arg) { return new Promise(function (resolve, reject) { try { if (typeof (GADRequest) === "undefined") { reject("Enable AdMob first - see the plugin documentation"); return; } if (!firebase_common_1.firebase.admob.rewardedAdVideoView) { reject("Please call 'preloadRewardedVideoAd' first"); return; } if (arg.onRewarded) { admob_common_1.rewardedVideoCallbacks.onRewarded = arg.onRewarded; } if (arg.onLeftApplication) { admob_common_1.rewardedVideoCallbacks.onLeftApplication = arg.onLeftApplication; } if (arg.onClosed) { admob_common_1.rewardedVideoCallbacks.onClosed = arg.onClosed; } if (arg.onOpened) { admob_common_1.rewardedVideoCallbacks.onOpened = arg.onOpened; } if (arg.onStarted) { admob_common_1.rewardedVideoCallbacks.onStarted = arg.onStarted; } if (arg.onCompleted) { admob_common_1.rewardedVideoCallbacks.onCompleted = arg.onCompleted; } firebase_common_1.firebase.admob.rewardedAdVideoView.presentFromRootViewController(UIApplication.sharedApplication.keyWindow.rootViewController); resolve(); } catch (ex) { console.log("Error in firebase.admob.showRewardedVideoAd: " + ex); reject(ex); } }); } exports.showRewardedVideoAd = showRewardedVideoAd; function hideBanner() { return new Promise(function (resolve, reject) { try { if (firebase_common_1.firebase.admob.adView !== null) { firebase_common_1.firebase.admob.adView.removeFromSuperview(); firebase_common_1.firebase.admob.adView = null; } resolve(); } catch (ex) { console.log("Error in firebase.admob.hideBanner: " + ex); reject(ex); } }); } exports.hideBanner = hideBanner; function _getBannerType(size) { if (size === admob_common_1.AD_SIZE.BANNER) { return { "size": { "width": 320, "height": 50 }, "flags": 0 }; } else if (size === admob_common_1.AD_SIZE.LARGE_BANNER) { return { "size": { "width": 320, "height": 100 }, "flags": 0 }; } else if (size === admob_common_1.AD_SIZE.MEDIUM_RECTANGLE) { return { "size": { "width": 300, "height": 250 }, "flags": 0 }; } else if (size === admob_common_1.AD_SIZE.FULL_BANNER) { return { "size": { "width": 468, "height": 60 }, "flags": 0 }; } else if (size === admob_common_1.AD_SIZE.LEADERBOARD) { return { "size": { "width": 728, "height": 90 }, "flags": 0 }; } else if (size === admob_common_1.AD_SIZE.SKYSCRAPER) { return { "size": { "width": 120, "height": 600 }, "flags": 0 }; } else if (size === admob_common_1.AD_SIZE.SMART_BANNER || size === admob_common_1.AD_SIZE.FLUID) { var orientation_1 = UIDevice.currentDevice.orientation; var isIPad = platform_1.device.deviceType === enums_1.DeviceType.Tablet; if (orientation_1 === 1 || orientation_1 === 2) { return { "size": { "width": 0, "height": 0, "smartHeight": isIPad ? 90 : 50 }, "flags": 18 }; } else { return { "size": { "width": 0, "height": 0, "smartHeight": isIPad ? 90 : 32 }, "flags": 26 }; } } else { return { "size": { "width": -1, "height": -1 }, "flags": 0 }; } } var GADInterstitialDelegateImpl = (function (_super) { __extends(GADInterstitialDelegateImpl, _super); function GADInterstitialDelegateImpl() { return _super !== null && _super.apply(this, arguments) || this; } GADInterstitialDelegateImpl.new = function () { if (GADInterstitialDelegateImpl.ObjCProtocols.length === 0 && typeof (GADInterstitialDelegate) !== "undefined") { GADInterstitialDelegateImpl.ObjCProtocols.push(GADInterstitialDelegate); } return _super.new.call(this); }; GADInterstitialDelegateImpl.prototype.initWithOptionsAndCallback = function (options, callback, onAdCloseCallback) { if (onAdCloseCallback === void 0) { onAdCloseCallback = null; } this.options = options; this.callback = callback; this.onAdCloseCallback = onAdCloseCallback; return this; }; GADInterstitialDelegateImpl.prototype.interstitialDidReceiveAd = function (ad) { this.callback(ad); }; GADInterstitialDelegateImpl.prototype.interstitialDidDismissScreen = function (ad) { this.onAdCloseCallback(); }; GADInterstitialDelegateImpl.prototype.interstitialDidFailToReceiveAdWithError = function (ad, error) { this.callback(ad, error); }; GADInterstitialDelegateImpl.prototype.interstitialWillLeaveApplication = function (ad) { this.options.onLeftApplication && this.options.onLeftApplication(); }; GADInterstitialDelegateImpl.ObjCProtocols = []; return GADInterstitialDelegateImpl; }(NSObject)); var GADBannerViewDelegateImpl = (function (_super) { __extends(GADBannerViewDelegateImpl, _super); function GADBannerViewDelegateImpl() { return _super !== null && _super.apply(this, arguments) || this; } GADBannerViewDelegateImpl.new = function () { if (GADBannerViewDelegateImpl.ObjCProtocols.length === 0 && typeof (GADBannerViewDelegate) !== "undefined") { GADBannerViewDelegateImpl.ObjCProtocols.push(GADBannerViewDelegate); } return _super.new.call(this); }; GADBannerViewDelegateImpl.prototype.initWithOptionsAndCallback = function (options, callback, onAdCloseCallback) { if (onAdCloseCallback === void 0) { onAdCloseCallback = null; } this.options = options; this.callback = callback; this.onAdCloseCallback = onAdCloseCallback; return this; }; GADBannerViewDelegateImpl.prototype.adViewDidReceiveAd = function (bannerView) { this.callback(bannerView, null); }; GADBannerViewDelegateImpl.prototype.adViewDidFailToReceiveAdWithError = function (bannerView, error) { this.callback(bannerView, error); }; GADBannerViewDelegateImpl.prototype.adViewDidDismissScreen = function (bannerView) { this.onAdCloseCallback(); }; GADBannerViewDelegateImpl.prototype.adViewWillLeaveApplication = function (bannerView) { this.options.onLeftApplication && this.options.onLeftApplication(); }; GADBannerViewDelegateImpl.ObjCProtocols = []; return GADBannerViewDelegateImpl; }(NSObject)); var GADRewardBasedVideoAdDelegateImpl = (function (_super) { __extends(GADRewardBasedVideoAdDelegateImpl, _super); function GADRewardBasedVideoAdDelegateImpl() { return _super !== null && _super.apply(this, arguments) || this; } GADRewardBasedVideoAdDelegateImpl.new = function () { if (GADRewardBasedVideoAdDelegateImpl.ObjCProtocols.length === 0 && typeof (GADRewardBasedVideoAdDelegate) !== "undefined") { GADRewardBasedVideoAdDelegateImpl.ObjCProtocols.push(GADRewardBasedVideoAdDelegate); } return _super.new.call(this); }; GADRewardBasedVideoAdDelegateImpl.prototype.initWithCallback = function (loaded, error) { this._loaded = loaded; this._error = error; return this; }; GADRewardBasedVideoAdDelegateImpl.prototype.rewardBasedVideoAdDidClose = function (rewardBasedVideoAd) { firebase_common_1.firebase.admob.rewardedAdVideoView = undefined; admob_common_1.rewardedVideoCallbacks.onClosed(); setTimeout(function () { CFRelease(_rewardBasedVideoAdDelegate); _rewardBasedVideoAdDelegate = undefined; }); }; GADRewardBasedVideoAdDelegateImpl.prototype.rewardBasedVideoAdDidCompletePlaying = function (rewardBasedVideoAd) { admob_common_1.rewardedVideoCallbacks.onCompleted(); }; GADRewardBasedVideoAdDelegateImpl.prototype.rewardBasedVideoAdDidFailToLoadWithError = function (rewardBasedVideoAd, error) { this._error(error.localizedDescription); }; GADRewardBasedVideoAdDelegateImpl.prototype.rewardBasedVideoAdDidOpen = function (rewardBasedVideoAd) { admob_common_1.rewardedVideoCallbacks.onOpened(); }; GADRewardBasedVideoAdDelegateImpl.prototype.rewardBasedVideoAdDidReceiveAd = function (rewardBasedVideoAd) { this._loaded(); }; GADRewardBasedVideoAdDelegateImpl.prototype.rewardBasedVideoAdDidRewardUserWithReward = function (rewardBasedVideoAd, reward) { admob_common_1.rewardedVideoCallbacks.onRewarded({ amount: reward.amount ? reward.amount.doubleValue : undefined, type: reward.type }); }; GADRewardBasedVideoAdDelegateImpl.prototype.rewardBasedVideoAdDidStartPlaying = function (rewardBasedVideoAd) { admob_common_1.rewardedVideoCallbacks.onStarted(); }; GADRewardBasedVideoAdDelegateImpl.prototype.rewardBasedVideoAdWillLeaveApplication = function (rewardBasedVideoAd) { admob_common_1.rewardedVideoCallbacks.onLeftApplication(); }; GADRewardBasedVideoAdDelegateImpl.ObjCProtocols = []; return GADRewardBasedVideoAdDelegateImpl; }(NSObject));