我正试图在我的iOS应用程序上显示横幅广告和插页式广告.但现在我对广告网络感到困惑.AdMob与DFP有何不同,哪个更适合投放广告.有人可以帮忙吗?提前致谢.
DFP广告管理系统完成在网页上展示所有广告后,我需要触发一些JavaScript - 或者至少在触发collapseEmptyDivs(隐藏不包含订单项的广告单元)时触发.
是否有人知道在这些事件发生后让DFP触发回调的方法?
我试图在两者Vue.js和AngularSPA中使用谷歌的DFP,但它似乎导致内存泄漏.
在Angular中,您可以看到概念验证https://github.com/jbojcic1/angular-dfp-memory-leak-proof-of-concept.对于广告,我使用的是ngx-dfp npm包(https://github.com/atwwei/ngx-dfp).要重现拉动并运行概念证明项目,请转到主页,该主页最初将在Feed中包含3个广告,并执行堆快照.之后,通过使用标题中的链接转到没有广告的页面,再次执行堆快照,您将看到在销毁插槽之后保留插槽引用,这会导致内存泄漏.
在Vue中,我有一个创建和销毁广告位的组件,我会在内容Feed中动态添加它们.当我离开页面时,组件被销毁,并且在beforeDestroy钩子中,我调用destroySlots,但似乎有些引用仍在那里.
这是我的dfp-ad组件:
<template>
<div :id="id" class="ad" ref="adContainer"></div>
</template>
<script>
export default {
name: 'dfp-ad',
props: {
id: { type: String, default: null },
adName: { type: String, default: null },
forceSafeFrame: { type: Boolean, default: false },
safeFrameConfig: { type: String, default: null },
recreateOnRouteChange: { type: Boolean, default: true },
collapseIfEmpty: { type: Boolean, default: true },
sizes: { type: …Run Code Online (Sandbox Code Playgroud) 我正在开发一个javascript渲染的移动网页插页式广告.布局完全响应,因此它将占用所提供的屏幕\ iframe的100%.
我现在希望通过DFP显示插页式广告.
起初我创建了一个大小合适的广告单元(320x480)并且工作得很好,但插页式广告仅限于iframe的边界.
我建立了一个名为Out-of-page的新订单项类型.文件指出:
它们可能包括弹出窗口和浮动行项目,有时也称为插页式广告.
但是当我尝试将插页式广告嵌入测试网站时,会发生iframe保持1x1,使得插页式广告不可见(如果我用调试器手动放大它,我看到了)
我的设置:
我在文档中读到:
如果您使用的是DoubleClick代码广告素材,则必须确保在DoubleClick代码的另一端(即另一个DFP广告管理系统广告联盟)上投放的广告代码已针对页外广告单元进行了正确编码.
就DFP广告管理系统页外插页式广告而言,广告"正确编码"是什么意思?如何强制插页式广告占据屏幕的所有尺寸?
javascript iframe responsive-design google-dfp double-click-advertising
这是我目前的代码.
// Head
<script async='async' src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
</script>
<script>
googletag.cmd.push(function() {
googletag.defineSlot('/xxxxxx/Mobile_ad', [[375, 60], [728, 60]], 'div-gpt-ad-154504231384304-0').addService(googletag.pubads());
googletag.pubads().enableSingleRequest();
googletag.enableServices();
});
</script>
// Body
<div style="width:100%;text-align:center;margin-bottom:10px">
<div id='div-gpt-ad-1545041384304-0'>
<script>
googletag.cmd.push(function() { googletag.display('div-gpt-ad-1545045413584304-0'); });
</script>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但它在侧边iframe中显示具有固定宽度和高度的横幅.
我怎样才能使这个响应?以前我使用自定义html和同步渲染,但现在已弃用.
实现这一目标的最佳方法是什么?
但为此,我必须提到屏幕的每个高度和宽度.
我正在使用Google DFP广告管理系统中的一些新功能,并且无法单独添加一个添加内容.我可以刷新页面上的所有广告,但我不能单独刷新一个.
我一直在尝试以下代码来获得一个添加刷新而没有运气:
var slot1 = googletag.display('/6900315/myad2', [300, 250], 'div-2');
googletag.pubads().refresh([slot1]);
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
完整来源:
<script type='text/javascript'>
var googletag = googletag || {};
googletag.cmd = googletag.cmd || [];
(function () {
var gads = document.createElement('script');
gads.async = true;
gads.type = 'text/javascript';
var useSSL = 'https:' == document.location.protocol;
gads.src = (useSSL ? 'https:' : 'http:') +
'//www.googletagservices.com/tag/js/gpt.js';
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gads, node);
})();
</script>
script type='text/javascript'>
googletag.cmd.push(function () {
googletag.pubads().enableAsyncRendering();
googletag.defineSlot("/69003153/myad1", [728, 90], "div-1").addService (googletag.pubads());
googletag.defineSlot("/69003153/myad2", [300, 250], "div-2").addService (googletag.pubads());
googletag.enableServices();
}); …Run Code Online (Sandbox Code Playgroud) 我使用Google发布商代码来抓取广告.
如何检查我是否收到特定广告位的广告或任何空白广告.我使用以下代码.
googletag.defineSlot("/1234/travel", [[300,250],[300x600]], "div-gpt-ad-123456789-0"))
<div id="div-gpt-ad-123456789-0" style="width: 728px; height: 90px">
<script type="text/javascript">
googletag.cmd.push(function() {
googletag.display("div-gpt-ad-123456789-0");
});
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
如何检查此div("div-gpt-ad-123456789-0")是否包含广告?
我正在使用谷歌DFP.
如果我使用谷歌的同步广告,我的网站加载缓慢,因为它需要在加载网站的同时加载广告,如果广告需要很长时间才能响应,那么页面的加载会暂停.
如果我使用异步广告,这不是问题,因为页面将加载或不加载广告.换句话说,它使网站加载速度更快.问题是,无论是否有广告显示,使用异步广告都会创建一个具有固定宽度和高度的div.因此,通常这会在我的网站上创建大量空白,因为并非所有广告位置都在使用.同步广告也是如此.
Google提供了第三种选择,它不会创建div,它只是使用javascript来显示广告,如果没有任何广告在该空间发布,那么它就不会显示任何空白,这很好,但是它表现得同步......
我想要的是使用异步广告的一些方法,如果没有广告发布,则不会获得空格.
谢谢.
我发现了一些网站,解释了如何在30-120秒后重新加载/刷新DFP广告管理系统广告,但没有一个网站解释是否可以使用Adsense广告.
我尝试过DFP广告管理系统 - 与Adsense相比,它非常混乱.
我目前的Adsense代码:
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- MYSITE- Responsive - #1 -->
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-123456789..."
data-ad-slot="123456789"
data-ad-format="auto"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
Run Code Online (Sandbox Code Playgroud) 我今天收到了来自AdMob的电子邮件说:
更改为原生广告政策:原生广告需要MediaView才能呈现视频或主要图片资源.为了帮助您更轻松地提供更好的广告体验,从10月29日开始,原生广告将要求MediaView呈现视频或主要图片资源.不符合此日期的广告单元将停止投放广告,这可能会影响您的广告收入.
我在我的Android应用程序中尝试了这一点,删除了单独的图像处理ImageView和视频MediaView,但我发现MediaView没有根据显示的图像高度调整视图的高度.
在Google的这个代码示例示例中,使用了固定的高度和宽度MediaView.我无法做到这一点,因为此屏幕响应屏幕大小,这将根据设备而变化.可以动态调整图像大小的事实是使用UnifiedNativeAds而不是使用横幅等预定义广告的主要好处之一.
这就是我需要显示的方法MediaView,match_parent用于宽度和wrap_content高度.
<com.google.android.gms.ads.formats.MediaView
android:id="@+id/ad_media"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:adjustViewBounds="true"
android:scaleType="fitXY"/>
Run Code Online (Sandbox Code Playgroud)
这就是我所需要的,并期望它看起来像使用 wrap_content
在之前的情况下,我们可以使用ImageView单独渲染图像,该wrap_content值正确地调整了图像的大小.
有人有解决方法吗?如何在没有硬编码MediaView高度的情况下遵循新的Google要求?
我完整的代码可以发现在这里,在GitHub上我的演示应用程序.
google-dfp ×10
javascript ×6
ads ×3
admob ×2
adsense ×2
gpt ×2
android ×1
angular ×1
asynchronous ×1
css ×1
html5 ×1
iframe ×1
ios ×1
jquery ×1
mediaview ×1
native-ads ×1
reload ×1
synchronous ×1
vue.js ×1
vuejs2 ×1