Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit 7b59855

Browse files
Merge pull request #476 from svzi/master
Moved AdMob init to firebase.init, added AdListener to showBanner()
2 parents 6b9c428 + 18f9983 commit 7b59855

File tree

2 files changed

+64
-45
lines changed

2 files changed

+64
-45
lines changed

firebase.android.js

Lines changed: 54 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,12 @@ firebase.init = function (arg) {
265265
});
266266
}
267267

268+
// Firebase AdMob
269+
if (typeof(com.google.android.gms.ads) !== "undefined") {
270+
// init admob
271+
com.google.android.gms.ads.MobileAds.initialize(appModule.android.context);
272+
}
273+
268274
resolve(firebase.instance);
269275
}
270276

@@ -475,11 +481,6 @@ firebase.admob.showBanner = function (arg) {
475481
try {
476482
var settings = firebase.merge(arg, firebase.admob.defaults);
477483

478-
// this should also be possible in init
479-
com.google.android.gms.ads.MobileAds.initialize(
480-
appModule.android.context,
481-
settings.androidBannerId); // TODO not sure its bound to packagename.. this is from the admob-demo
482-
483484
// always close a previously opened banner
484485
if (firebase.admob.adView !== null && firebase.admob.adView !== undefined) {
485486
var parent = firebase.admob.adView.getParent();
@@ -493,16 +494,26 @@ firebase.admob.showBanner = function (arg) {
493494
var bannerType = firebase.admob._getBannerType(settings.size);
494495
firebase.admob.adView.setAdSize(bannerType);
495496
console.log("----- bannerType: " + bannerType);
496-
// TODO consider implementing events
497-
//firebase.admob.adView.setAdListener(new com.google.android.gms.ads.BannerListener());
497+
var BannerAdListener = com.google.android.gms.ads.AdListener.extend({
498+
onAdLoaded: function () {
499+
//firebase.admob.interstitialView.show();
500+
console.log('ad loaded');
501+
resolve();
502+
},
503+
onAdFailedToLoad: function (errorCode) {
504+
//console.log('ad error: ' + errorCode);
505+
reject(errorCode);
506+
}
507+
});
508+
firebase.admob.adView.setAdListener(new BannerAdListener());
498509

499510
var ad = firebase.admob._buildAdRequest(settings);
500511
firebase.admob.adView.loadAd(ad);
501-
512+
502513
var density = utils.layout.getDisplayDensity(),
503514
top = settings.margins.top * density,
504515
bottom = settings.margins.bottom * density;
505-
516+
506517
var relativeLayoutParams = new android.widget.RelativeLayout.LayoutParams(
507518
android.widget.RelativeLayout.LayoutParams.MATCH_PARENT,
508519
android.widget.RelativeLayout.LayoutParams.WRAP_CONTENT);
@@ -528,49 +539,47 @@ firebase.admob.showBanner = function (arg) {
528539
// a Page.loaded event 'frame.topmost()' doesn't resolve to 'undefined'
529540
setTimeout(function () {
530541
frame.topmost().currentPage.android.getParent().addView(adViewLayout, relativeLayoutParamsOuter);
531-
}, 0);
532-
533-
resolve();
542+
}, 0);
534543
} catch (ex) {
535544
console.log("Error in firebase.admob.showBanner: " + ex);
536-
reject(ex);
545+
reject(ex);
537546
}
538547
});
539548
};
540549

541550
firebase.admob.showInterstitial = function (arg) {
542-
return new Promise(function (resolve, reject) {
543-
try {
544-
var settings = firebase.merge(arg, firebase.admob.defaults);
545-
firebase.admob.interstitialView = new com.google.android.gms.ads.InterstitialAd(appModule.android.foregroundActivity);
546-
firebase.admob.interstitialView.setAdUnitId(settings.androidInterstitialId);
547-
548-
// Interstitial ads must be loaded before they can be shown, so adding a listener
549-
var InterstitialAdListener = com.google.android.gms.ads.AdListener.extend({
550-
onAdLoaded: function () {
551-
firebase.admob.interstitialView.show();
552-
resolve();
553-
},
554-
onAdFailedToLoad: function (errorCode) {
555-
reject(errorCode);
556-
},
557-
onAdClosed: function () {
558-
firebase.admob.interstitialView.setAdListener(null);
559-
firebase.admob.interstitialView = null;
560-
}
561-
});
562-
firebase.admob.interstitialView.setAdListener(new InterstitialAdListener());
563-
564-
var ad = firebase.admob._buildAdRequest(settings);
565-
firebase.admob.interstitialView.loadAd(ad);
566-
} catch (ex) {
567-
console.log("Error in firebase.admob.showInterstitial: " + ex);
568-
reject(ex);
569-
}
570-
});
571-
};
572-
573-
firebase.admob.hideBanner = function (arg) {
551+
return new Promise(function (resolve, reject) {
552+
try {
553+
var settings = firebase.merge(arg, firebase.admob.defaults);
554+
firebase.admob.interstitialView = new com.google.android.gms.ads.InterstitialAd(appModule.android.foregroundActivity);
555+
firebase.admob.interstitialView.setAdUnitId(settings.androidInterstitialId);
556+
557+
// Interstitial ads must be loaded before they can be shown, so adding a listener
558+
var InterstitialAdListener = com.google.android.gms.ads.AdListener.extend({
559+
onAdLoaded: function () {
560+
firebase.admob.interstitialView.show();
561+
resolve();
562+
},
563+
onAdFailedToLoad: function (errorCode) {
564+
reject(errorCode);
565+
},
566+
onAdClosed: function () {
567+
firebase.admob.interstitialView.setAdListener(null);
568+
firebase.admob.interstitialView = null;
569+
}
570+
});
571+
firebase.admob.interstitialView.setAdListener(new InterstitialAdListener());
572+
573+
var ad = firebase.admob._buildAdRequest(settings);
574+
firebase.admob.interstitialView.loadAd(ad);
575+
} catch (ex) {
576+
console.log("Error in firebase.admob.showInterstitial: " + ex);
577+
reject(ex);
578+
}
579+
});
580+
};
581+
582+
firebase.admob.hideBanner = function (arg) {
574583
return new Promise(function (resolve, reject) {
575584
try {
576585
if (firebase.admob.adView !== null) {

firebase.d.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,16 @@ export module admob {
568568
LEADERBOARD
569569
}
570570

571+
/**
572+
* The possible error codes (see https://developers.google.com/android/reference/com/google/android/gms/ads/AdRequest#ERROR_CODE_INTERNAL_ERROR).
573+
*/
574+
export enum ERROR_CODES {
575+
ERROR_CODE_INTERNAL_ERROR,
576+
ERROR_CODE_INVALID_REQUEST,
577+
ERROR_CODE_NETWORK_ERROR,
578+
ERROR_CODE_NO_FILL
579+
}
580+
571581
export interface ShowBannerOptions {
572582
/**
573583
* The layout of the banner.

0 commit comments

Comments
 (0)