为了在我的Android应用中显示感兴趣的广告(我使用离子制作),我使用了以下代码:
<script type="text/javascript">
function runads(){
document.addEventListener("deviceready", onDeviceReady, false);
}
function initAds() {
if (admob) {
var adPublisherIds = {
ios : {
banner : "###############",
interstitial : "##################"
},
android : {
banner : "#############",
interstitial : "#########################"
}
};
var admobid = (/(android)/i.test(navigator.userAgent)) ? adPublisherIds.android : adPublisherIds.ios;
admob.setOptions({
publisherId: admobid.banner,
interstitialAdId: admobid.interstitial,
tappxIdiOs: "/XXXXXXXXX/Pub-XXXX-iOS-IIII",
tappxIdAndroid: "/XXXXXXXXX/Pub-XXXX-Android-AAAA",
tappxShare: 0.5
});
registerAdEvents();
} else {
alert('AdMobAds plugin not ready');
}
}
function onAdLoaded(e) {
if (e.adType === admob.AD_TYPE.INTERSTITIAL) {
admob.showInterstitialAd();
showNextInterstitial = setTimeout(function() {
admob.requestInterstitialAd();
}, 2 * 60 * 1000); // 2 minutes
}
}
// optional, in case respond to events
function registerAdEvents() {
document.addEventListener(admob.events.onAdLoaded, onAdLoaded);
document.addEventListener(admob.events.onAdFailedToLoad, function (e) {});
document.addEventListener(admob.events.onAdOpened, function (e) {});
document.addEventListener(admob.events.onAdClosed, function (e) {});
document.addEventListener(admob.events.onAdLeftApplication, function (e) {});
document.addEventListener(admob.events.onInAppPurchaseRequested, function (e) {});
}
function onDeviceReady() {
document.removeEventListener('deviceready', onDeviceReady, false);
initAds();
// display a banner at startup
admob.createBannerView();
// request an interstitial
admob.requestInterstitialAd();
}
我感兴趣的广告正在使用此代码完美展示。然后,我已将其上传到Google Play商店。很明显,我收到了Google Admob小组关于感兴趣的广告投放的消息。消息是 -
您好,我们警告您,您的应用目前违反了AdMob计划政策。重要的是,这需要您采取措施以确保广告投放不会中断。请阅读以下内容,了解有关您需要采取的行动的更多信息:
违规说明
布局鼓励意外点击 - 插页式广告:不允许发布商鼓励用户以任何方式点击AdMob插页式广告。请检查您是如何实施插页式广告的,并注意以下不符合规定的实施方式:在用户查看应用内容时意外加载的插页式广告。有关我们的政策和有关如何遵守的提示的详情,请参阅阅读以下内容:
在用户查看应用内容时意外加载的插页式广告。有关我们的政策和有关如何遵守的提示的详情,请参阅以下内容:AdMob广告展示位置政策广告插页式广告指南需要Android和iOSAction的AdMob预加载说明:请立即对您的应用进行更改,以符合AdMob计划政策。当前帐户状态:有效您在对应用进行必要的更改后,无需与我们联系。请注意,如果累积了其他违规行为,可能会禁用上面列出的应用广告投放。请注意,上面列出的应用只是一个示例,您拥有的其他应用可能存在相同的违规行为。我们建议您检查所有应用是否符合AdMob计划政策,以降低未来警告的可能性。有关我们的政策警告通知的详情,请访问我们的帮助中心。感谢您的合作。此致Google AdMob小组< / p>
我如何解决这个问题?
答案 0 :(得分:1)
可能发生的事情是加载插页式广告需要一些时间,因此您需要计划插页式广告的加载,并确保在您需要展示插页式广告时可以使用插页式广告。如果没有,启动admob.showInterstitialAd()
将加载interstital并在可用时显示(因为标记autoShowInterstitial
默认为true
,请参阅https://github.com/appfeel/admob-google-cordova/wiki/setOptions)。
有一个关于如何规划插页式广告的完整示例:https://github.com/appfeel/admob-google-cordova/wiki/showInterstitialAd。
您的基本操作是请求插页式广告,并让应用知道插页式广告是否可用。你的离子代码可能看起来像这样:
angular.module('myApp', ['admobModule'])
.constant('AdmobConfig', {
bannerId: /(android)/i.test(navigator.userAgent) ? "ca-app-pub-XXXXXXXXXXXXXXXX/ANDROID_BANNER_ID" : "ca-app-pub-XXXXXXXXXXXXXXXX/IOS_BANNER_ID",
interstitialId: /(android)/i.test(navigator.userAgent) ? "ca-app-pub-XXXXXXXXXXXXXXXX/ANDROID_INTERSTITIAL_ID" : "ca-app-pub-XXXXXXXXXXXXXXXX/IOS_INTERSTITIAL_ID",
})
.config(function (admobSvcProvider, AdmobConfig) {
admobSvcProvider.setOptions({
publisherId: AdmobConfig.bannerId,
interstitialAdId: AdmobConfig.interstitialId,
autoShowInterstitial: false,
});
})
.run(function ($rootScope, $ionicPlatform, $timeout, admobSvc) {
admobSvc.requestInterstitialAd();
$rootScope.isInterstitialAvailable = false;
$rootScope.isAppForeground = false;
$rootScope.$on(admobSvc.events.onAdLoaded, function onAdLoaded(evt, e) {
if ($rootScope.isAppForeground) {
if (e.adType === admobSvc.AD_TYPE.INTERSTITIAL) {
$rootScope.isInterstitialAvailable = true;
}
}
});
$rootScope.$on(admobSvc.events.onAdOpened, function onAdOpened(evt, e) {
if ($rootScope.isAppForeground) {
if (e.adType === admobSvc.AD_TYPE.INTERSTITIAL) {
$rootScope.isInterstitialAvailable = false;
$timeout(admobSvc.requestInterstitialAd, 1); // Immediately request next interstitial asap
}
}
});
$ionicPlatform.on('pause', function onPause() {
if ($rootScope.isAppForeground) {
$rootScope.isAppForeground = false;
}
});
$ionicPlatform.on('resume', function onResume() {
if (!$rootScope.isAppForeground) {
$timeout(admobSvc.requestInterstitialAd, 1);
$rootScope.isAppForeground = true;
}
});
})
.controller('YourController', function ($rootScope, admobSvc) {
var vm = this;
vm.pleaseShowInterstitial = function () {
if ($rootScope.isInterstitialAvailable) {
admobSvc.showInterstitialAd();
}
};
});
另请注意,前台应用程序有一个管理。这很重要,如果没有,用户可以将应用程序放在后台,并自动显示插页式广告。在您的情况下,它不是那么相关,因为您控制何时显示插页式广告,但我建议您保留此内容,以防您决定开始自动显示插页式广告:)