每2分钟通过Ionic中的AdMob显示插页式广告

时间:2015-06-28 01:33:24

标签: cordova ionic-framework ionic phonegap-plugins

我在Ionic中使用AdMob插件,使用此代码我展示了一个Interstital广告:

 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),但我不知道在哪里添加?

4 个答案:

答案 0 :(得分: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);

希望这有助于澄清一些事情。

答案 1 :(得分:2)

通过使用https://github.com/appfeel/admob-google-cordova处的插件,您可以收听onAdLoaded和onAdClosed事件并将autoShowInterstitial设为false:

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 :(得分:2)

如果您使用的是Ionic ngCordova,我是cordova admob插件的作者。这是我对你的目的的建议。

pygame.video
BTW,根据时间间隔显示插页式广告不是一个好主意,因为它可能会带来糟糕的用户体验并违反Google规则。

最好在后台使用prepareInterstitial(),然后在某些页面或状态发生变化时显示showInterstitial(),例如,游戏结束时用户点击“确定”按钮。

答案 3 :(得分:0)

现在这在admob中是非法的,你的id可能会被禁用,以及显示加载,后退按钮,简单应用程序的许多插页式等等。底线是,如果你想赚钱总而言之,你必须展示插页式广告,因为admob支付点击而不是视图,也没有人点击横幅广告。

因此,最佳做法是在点击X次后设置广告(设置"点击计数器")并将自己的ID设置为自我。或者您的帐户将被禁止,就像我做的那样