nativescript-plugin-firebase-ssi
Version:
415 lines (414 loc) • 19.1 kB
JavaScript
;
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));