2015-06-28 115 views
3

我使用AdMob广告插件的离子以及与此代码,我表现出间质广告:显示通过AdMob广告在离子插页式广告,每2分钟

function initAd(){ 
    // it will display smart banner at top center, using the default options 
    if(AdMob) AdMob.createBanner({ 
     adId: admobid.banner, 
     bannerId: admobid.banner, 
     position: AdMob.AD_POSITION.BOTTOM_CENTER, 
     autoShow: true, 
     isTesting: false, 
     success: function() { 
      console.log('banner created'); 
     }, 
     error: function() { 
      console.log('failed to create banner'); 
     } 
    }); 


    window.AdMob.prepareInterstitial({ 
     adId:admobid.interstitial, autoShow:false 
    }); 
    window.AdMob.showInterstitial(); 
} 

是否有一种方式来显示间质性广告,每2分钟?有人告诉我添加这个:setInterval(showInterstitial,1*60*1000),但我不知道在哪里添加?

+0

提供的答案是否可以帮助您解决问题? – Nikola

+0

您正在使用哪个Admob插件? – Paul

回答

3

如果你想显示它每2分钟,你应该使用:

setInterval(window.AdMob.showInterstitial, 2*60*1000); 

,你应该只是你的initAdd功能的右括号之前添加:

function initAd(){ 
 

 

 
// it will display smart banner at top center, using the default options 
 
if(AdMob) AdMob.createBanner({ 
 
          adId: admobid.banner, 
 
          bannerId: admobid.banner, 
 
          position:AdMob.AD_POSITION.BOTTOM_CENTER, 
 
          autoShow: true, 
 
          isTesting: false, 
 
          success: function(){ 
 
          console.log('banner created'); 
 
          }, 
 
          error: function(){ 
 
         console.log('failed to create banner'); 
 
          } 
 
          }); 
 

 
             window.AdMob.prepareInterstitial( 
 
          {adId:admobid.interstitial, autoShow:false}); 
 
    window.AdMob.showInterstitial(); 
 
    
 
    
 
    
 
    //!!!add the code here!!! - so, just paste what I wrote above: 
 
    setInterval(window.AdMob.showInterstitial, 2*60*1000); 
 

 
}

你可以看到这个jsFiddle example一个简单的setInterval用法:

function a(){ 
 
    alert("hi every 2 seconds"); 
 
}; 
 

 
setInterval(a, 2*1000);

之所以你不应该这样称呼它(注意括号a后):setInterval(a(), 2*1000);是,那么你的功能将只调用一次(你会看到只有一个警报弹出)。在jsFiddle例如:

function a(){ 
 
    alert("hi every 2 seconds"); 
 
}; 
 

 
setInterval(a(), 2*1000);

希望这有助于明确的东西一点。

+0

您从哪个AdMob插件编写代码?我问,因为有几个。 – Paul

+0

我用[这一个](https://github.com/floatinghotpot/cordova-plugin-admob)。你可以阅读完整的教程[这里](http://www.nikola-breznjak.com/blog/ionic/adding-admob-to-ionic-framework-application-step-by-step/)。 – Nikola

2

通过使用插件在https://github.com/appfeel/admob-google-cordova你可以听onAdLoaded和onAdClosed事件,使autoShowInterstitial假:

var isAppForeground = true; 

function initAds() { 
    if (admob) { 
    var adPublisherIds = { 
     ios : { 
     banner : "ca-app-pub-XXXXXXXXXXXXXXXX/BBBBBBBBBB", 
     interstitial : "ca-app-pub-XXXXXXXXXXXXXXXX/IIIIIIIIII" 
     }, 
     android : { 
     banner : "ca-app-pub-XXXXXXXXXXXXXXXX/BBBBBBBBBB", 
     interstitial : "ca-app-pub-XXXXXXXXXXXXXXXX/IIIIIIIIII" 
     } 
    }; 

    var admobid = (/(android)/i.test(navigator.userAgent)) ? adPublisherIds.android : adPublisherIds.ios; 

    admob.setOptions({ 
     publisherId:   admobid.banner, 
     interstitialAdId:  admobid.interstitial, 
     autoShowInterstitial: false 
    }); 

    registerAdEvents(); 

    } else { 
    alert('AdMobAds plugin not ready'); 
    } 
} 

function onAdLoaded(e) { 
    if (isAppForeground) { 
    if (e.adType === admob.AD_TYPE.INTERSTITIAL) { 
     admob.showInterstitialAd(); 
    } 
    } 
} 

function onAdClosed(e) { 
    if (isAppForeground) { 
    if (e.adType === admob.AD_TYPE.INTERSTITIAL) { 
     setTimeout(admob.requestInterstitialAd, 1000 * 60 * 2); 
    } 
    } 
} 

function onPause() { 
    if (isAppForeground) { 
    admob.destroyBannerView(); 
    isAppForeground = false; 
    } 
} 

function onResume() { 
    if (!isAppForeground) { 
    setTimeout(admob.createBannerView, 1); 
    setTimeout(admob.requestInterstitialAd, 1); 
    isAppForeground = true; 
    } 
} 

// optional, in case respond to events 
function registerAdEvents() { 
    document.addEventListener(admob.events.onAdLoaded, onAdLoaded); 
    document.addEventListener(admob.events.onAdClosed, onAdClosed); 

    document.addEventListener("pause", onPause, false); 
    document.addEventListener("resume", onResume, false); 
} 

function onDeviceReady() { 
    document.removeEventListener('deviceready', onDeviceReady, false); 
    initAds(); 

    // display a banner at startup 
    admob.createBannerView(); 

    // request an interstitial 
    admob.requestInterstitialAd(); 
} 

document.addEventListener("deviceready", onDeviceReady, false); 
2

我的科尔多瓦AdMob广告插件的作者,如果您使用的离子ngCordova。这是我对你的目的的建议。

var interstitialReady = false; 

// update the state when ad preloaded 
document.addEventListener('onAdLoaded', function(e){ 
    if(e.adType == 'interstitial') { 
     interstitialReady = true; 
    } 
}); 

// when dismissed, preload one for next show 
document.addEventListener('onAdDismiss', function(e){ 
    if(e.adType == 'interstitial') { 
     interstitialReady = false; 
     AdMob.prepareInterstitial({ 
      adId:admobid.interstitial, 
      autoShow:false 
     }); 
    } 
}); 

setInterval(function(){ 
    if(interstitialReady) AdMob.showInterstitial(); 
}, 2*60*1000); 

// preload the first ad 
AdMob.prepareInterstitial({ 
    adId:admobid.interstitial, 
    autoShow:false 
}); 

BTW,表示基于时间间隔插页广告是不是一个好主意,因为它可能会带来不良的用户体验,谷歌违反规则。

它会在后台更好地prepareInterstitial(),然后showInterstitial()当一些页面或状态改变,例如,当玩家在和用户点击OK按钮。

0

由于现在这在admob中是非法的,因此您的id可能会因为此问题而被禁用,并且会显示加载,后退按钮,以及许多插页式简单应用等。底线是,如果您想制作任何金钱,你必须展示插页式广告,因为admob支付点击而不是观看,并且没有人点击横幅广告。

所以最好的做法是X-点击后显示广告(设置“点击计数器”)和盖你的IDS在AdMob,他们的自我。或者您的账户将像我一样被禁止