Показывать рекламное объявление через 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-кликов (настроить "счетчик кликов") и ограничивать свои идентификаторы самим. Или ваша учетная запись будет заблокирована, как моя