@@ -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
541550firebase . 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 ) {
0 commit comments