Показывать рекламное объявление через AdMob в Ionic каждые 2 минуты

Я использую плагин AdMob в Ionic, и с этим кодом я показываю рекламу 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 ответа

Решение

Если вы хотите показывать это каждые 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);

 }

Вы можете увидеть простое использование setInterval в этом примере jsFiddle:

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);

Надеюсь, это поможет немного прояснить ситуацию.

Я являюсь автором плагина cordova admob, если вы используете Ionic 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
});

Кстати, показ промежуточной рекламы на основе временного интервала не очень хорошая идея, так как это может привести к ухудшению работы пользователей и нарушению правил Google.

Будет лучше подготовить Interstitial() в фоновом режиме, а затем showInterstitial(), когда какая-то страница или состояние изменятся, например, когда геймер закончится и пользователь нажмет кнопку ОК.

Используя плагин на 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);

Поскольку к настоящему времени это запрещено в admob, ваш идентификатор, вероятно, будет отключен для этого, а также будет отображаться добавление при загрузке, кнопки возврата, многие вставки для простых приложений и т. Д. В итоге, если вы вообще хотите зарабатывать деньги, Вы должны показывать промежуточную рекламу, так как admob платит за клики, а не за просмотры, и никто никогда не нажимает на баннер.

Поэтому лучше всего показывать рекламу после X-кликов (настроить "счетчик кликов") и ограничивать свои идентификаторы самим. Или ваша учетная запись будет заблокирована, как моя

Другие вопросы по тегам