wap广告对接文档


一、投放方式

1.1 异步投放

TIP

异步投放只需要引用一次JS脚本即可,JS脚本放在head标签或body标签均可。投放代码放在body标签需要的地方即可,此处的投放代码指:

<div class="_gpunkxjudct"></div>
<script type="text/javascript">
  (window.slotbydup = window.slotbydup || []).push({
      id: "u6341556",
      container: "_gpunkxjudct",
      async: true
  });
</script>
<!-- 多条广告如下脚本只需引入一次 -->
<script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap.js" async="async" defer="defer" >
</script>

TIP

PC,WAP场景下广告投放,对广告位置,加载时机,页面性能有要求的媒体可以选择异步投放。

代码解析:

  1. 页面优先创建广告容器,包含class属性
  2. 创建广告单元,传入3个属性: a. id:广告位id b. container:广告容器class值 c. async:异步投放默认为true
  3. 引入广告脚本

TIP

提示:

  1. 媒体也可以自己创建一个广告容器,或者使用平台提供的容器。但是要包含class属性,并将class属性值填入到slotbydup操纵中的container属性中。
  2. 脚本加载位置,顺序,时机不做限制,每个页面部署一个脚本即可。

TIP

示例如下:

<html>
<head>
    <meta charset="utf-8" />
  	<title>Ad_Demo_Async_Multi</title>
  	<!-- 广告投放脚本 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap2.js"></script>
</head>
<body>
    <div>媒体内容片段1</div>
  	<!-- 广告投放代码 -->
    <script type="text/javascript">
        var s = "_" + Math.random().toString(36).slice(2);
        document.write('<div id="' + s + '"></div>');
        (window.slotbydup = window.slotbydup || []).push({
            id: 'u2671865',
            container: s
        });
  	</script>

    <div>媒体内容片段2</div>
  	<!-- 广告投放代码 -->
    <script type="text/javascript">
        var s = "_" + Math.random().toString(36).slice(2);
        document.write('<div id="' + s + '"></div>');
        (window.slotbydup = window.slotbydup || []).push({
            id: 'u2671865',
            container: s
        });
  	</script>

    <div>媒体内容片段3</div>
  	<!-- 广告投放代码 -->
    <script type="text/javascript">
        var s = "_" + Math.random().toString(36).slice(2);
        document.write('<div id="' + s + '"></div>');
        (window.slotbydup = window.slotbydup || []).push({
            id: 'u2671865',
            container: s
        });
  	</script>
</body>
</html>

1.2 同步投放

TIP

同步投放指从平台获取的整个代码都需要放在body标签中,投放代码如下所示:

<script type="text/javascript">
	var cpro_id = 'u2671865';
</script>
<script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap2.js"></script>

TIP

PC,WAP场景下广告投放,追求投放逻辑简单,无需额外操作,广告脚本确保可以同步加载的媒体可以选择。复制粘贴即可进行广告投放。

代码解析:

  1. 声明cpro_id变量
  2. 引入广告脚本文件,文件加载过程中cpro_id会被识别并使用

TIP

提示:

  1. 使用此投放方式时,在代码执行过程中会使用document.write创建广告容器。因此不要在页面加载完成后再加载同步投放代码
  2. 脚本要在cpro_id变量赋值之后再加载,确保脚本可以对cpro_id中代码位id进行处理。多个代码位需要多次加载脚本。

TIP

示例如下:

<html>
<head>
    <meta charset="utf-8" />
    <title>Ad_Demo_Sync_Multi</title>
</head>
<body>
    <div>媒体内容片段1</div>
    <!-- 广告投放代码 -->
    <script type="text/javascript">
        var cpro_id = 'u2671865';
    </script>
    <!-- 广告投放脚本 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap2.js"></script>
    <div>媒体内容片段2</div>
    <!-- 广告投放代码 -->
    <script type="text/javascript">
        var cpro_id = 'u2671865';
    </script>
    <!-- 广告投放脚本 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap2.js"></script>
    <div>媒体内容片段3</div>
    <!-- 广告投放代码 -->
    <script type="text/javascript">
        var cpro_id = 'u2671865';
    </script>
    <!-- 广告投放脚本 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap2.js"></script>
</body>
</html>

1.3 反屏蔽投放

TIP

反屏蔽投放指从平台获取的脚本放在body标签中,投放代码如下所示:

<script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap3.js "></script>

TIP

主要针对wap场景,很多厂商浏览器以及qq,uc等wap浏览器,默认带有广告屏蔽插件。使用反屏蔽投放,可以确保广告在有屏蔽插件的浏览器中也可以正常展现。

代码解析:

  1. 进行反屏蔽投放之前,需要优先申请反屏蔽域名,并进行配置和验证。
  2. 反屏蔽脚本由反屏蔽脚本域名+加密路径组成
  3. 页面中需要加载反屏蔽广告的位置,直接部署脚本即可
  4. 反屏蔽是个持续对抗的过程,无法做到一劳永逸,反屏蔽域名如果命中屏蔽规则,会弱化反屏蔽投放效果,需要媒体重新申请重新配置。

TIP

提示:

  1. 脚本不可以添加async和defer属性,会影响广告容器的正确绘制
  2. 反屏蔽脚本域名更换后,无需从平台从新获取脚本。直接修改部署到页面的脚本域名即可
  3. 反屏蔽域名更换后,新旧域名同时生效,无过渡期失效的问题
  4. 每次“获取反屏蔽脚本”都会返回不同的路径脚本。无需重复获取,任意一次脚本内容都可以进行投放

TIP

示例如下:

<html>
<head>
   	<meta charset="utf-8" />
   	<title>Ad_Demo_Anti_Multi</title>
</head>
<body>
    <div>媒体内容片段1</div>
    <!-- 广告投放脚本 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap3.js"></script>
    <div>媒体内容片段2</div>
    <!-- 广告投放脚本 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap3.js"></script>
    <div>媒体内容片段3</div>
    <!-- 广告投放脚本 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap3.js"></script>
</body>
</html>

二、投放方式对比

2.1 同步投放 VS 异步投放

TIP

同步投放和异步投放的区别:

  1. 异步投放中广告脚本script标签中添加了async和defer标记,如果页面加载时即投放广告,广告脚本的加载不会影响页面的渲染,而是和页面渲染同时进行的
  2. 异步投放可以传入自己的容器,从而控制广告渲染位置和时机

2.1 反屏蔽投放 VS 非反屏蔽投放

TIP

反屏蔽投放和非反屏蔽投放的区别:

  1. 根据使用场景,如果媒体广告集中在wap流量上(非端内h5),那么可以优先选择反屏蔽投放,保证广告投放效果。
  2. 如果不接入反屏蔽投放,再考虑使用同步还是异步投放,参考2.1。

注:反屏蔽投放和非反屏蔽投放选择其中一种进行投放即可,无需部署两套脚本逻辑。

三、环境对比

3.1 正式环境——浏览器

TIP

正式环境进行pc,wap广告投放,需要注意以下几点。

  1. 投放页面要以http或者https协议+正常域名(opens new window)(非localhost,非ip类型,比如127.0.0.1,非file://,非ftp://)的形式进行访问,页面广告才能正常绘制。
  2. 投放页面的网站**域名(或主域名)**需要存在于”媒体管理”中的”网站域名”。
  3. 投放页面中广告脚本不要使用iframe嵌套进行投放(跨域非跨域的iframe均不可)
  4. **端内流量,或者特殊场景流量下(非pc,wap浏览器环境)**需要观察广告检索请求,广告点击,是否可以正常携带cookie信息。

3.2 正式环境——pc客户端

TIP

pc客户端类型的广告投放方式与正常浏览器的广告投放类似,但是需要依赖一些前置条件:

  1. 媒体webview用域名(网址引入),如果没有域名是不能接入的,会被反作弊过滤掉;
  2. webview支持cookie留存 (1)如果支持cookie留存,就可以在webview中搞定一切,展现、点击等; (2)如果媒体不支持cookie留存,找相关客服人员申请权限。
  3. 广告点击后跳转时默认浏览器打开还是自己webview打开? (1)如果没有特殊的要求,且cookie能够留存住的话,建议在webview中完成一切; (2)对应像锁屏一样的场景,就需要跳转到默认浏览器,因为锁屏本身就会跳转到默认浏览器打开。

3.3 测试环境

TIP

投放页面要以http或者https协议+正常域名(opens new window)(非localhost,非ip类型,比如127.0.0.1,非file://,非ftp://)的形式进行访问,页面广告才能正常绘制。

四、 对外接口

TIP

对外接口,与广告投放是平行逻辑,

不可以在广告投放逻辑中新增closeAd和noAd的属性,进行事件监听

。比如:window.slotbydup = window.slotbydup || []).push({id: xxx,container:s,closeAd:function(){}});

是无法正常触发closeAd的方法的。

4.1 广告关闭接口

TIP

媒体使用该接口,定义回调方法,可以在用户点击“广告关闭”后,触发回调。一个页面只需要定义一次。

(window.slotbydup = window.slotbydup || []).push({
	 // 广告关闭回调方法 一个页面只需要定义一个
   closeAd: function (tu_index) {
   		// tuid_同页面内相同代码位id自增索引
   		console.log(tu_index);
   }
});

4.2 无广告返回接口

TIP

媒体使用该接口,定义回调方法,可以在“无广告返”回时,触发回调。一个页面只需要定义一次。

(window.slotbydup = window.slotbydup || []).push({
	 // 无广告返回回调方法 一个页面只需要定义一个
   noAd: function (tu_index, noadInfo) {
   		// tuid_同页面内相同代码位id自增索引
   		console.log(tu_index);
   		// 无广告返回原因{noadx: '联盟内部无广告返回状态码', queryid:'精确到本次检索的唯一id'}
   		console.log(noadInfo);
   }
});

4.3 有广告返回接口

TIP

该接口只针对屏保代码位开放。媒体使用该接口,定义回调方法,可以在“有广告返”回时,触发回调。一个页面只需要定义一次。

(window.slotbydup = window.slotbydup || []).push({
   // 有广告返回的回调
   haveAd: function (tu_index) {
   		// tuid_同页面内相同代码位id自增索引
   		console.log(tu_index);
   }
});

五、拉伸规则说明

TIP

拉伸规则是为了不同场景下,让广告尺寸更加适配媒体页面而提供的广告拉伸方案。目前平台可以选配的拉伸规则如下:

WAP流量:

  • 按屏幕宽度(默认)
  • 按父容器宽度
  • 按屏幕宽高(wap插屏)

PC流量:

  • 固定像素宽度(默认)
  • 按父容器宽度
  • 按父容器宽高(pc屏保)

5.1 WAP拉伸规则案例

<html>
<head>
    <meta charset="utf-8" />
    <title>WAP广告拉伸规则</title>
    <!-- 广告投放脚本 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap.js" async="async" defer="defer"></script>
</head>
<body>
    <div>媒体内容片段1</div>
    <!-- 广告容器1 -->
    <div class="_jnwj3fh9mjo"></div>
    <!-- 广告投放代码 -->
    <script type="text/javascript">
        (window.slotbydup = window.slotbydup || []).push({
            id: 'u6811714', // 拉伸规则:按屏幕宽度
            container: '_jnwj3fh9mjo'
        });
    </script>
    <div>媒体内容片段2</div>
    <!-- 广告父容器 -->
    <!-- 注意!!!按照父容器宽度 拉伸指的是广告宽度以 container2 宽度600px进行拉伸 -->
    <div id="container2" style="width: 600px">
        <!-- 广告容器2 -->
        <div class="_ace93fh9mkw"></div>
    </div>
    <!-- 广告投放代码 -->
    <script type="text/javascript">
        (window.slotbydup = window.slotbydup || []).push({
            id: 'u6811718', // 拉伸规则:按父容器宽度
            container: '_ace93fh9mkw'
        });
    </script>
    <div>媒体内容片段3</div>
    <!-- 反屏蔽广告投放 按照屏幕宽度拉伸 -->
    <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap4.js"></script>
    <div>媒体内容片段4</div>
    <div id="container4" style="width: 600px">
        <!-- 注意!!!按照父容器宽度 拉伸指的是广告宽度以 container4 宽度600px进行拉伸 -->
        <script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap5.js"></script>
    </div>
</body>
</html>

TIP

注意:

  1. 如案例中所示,按照父容器宽度拉伸的广告尺寸,是根据广告容器外层容器(container2 和 container4)的宽度计算广告宽度。
  2. WAP插屏广告宽高默认屏幕宽高,不受父容器尺寸限制。

5.2 PC拉伸规则案例

<html>
<head>
    <meta charset="utf-8" />
    <title>PC广告拉伸规则</title>
    <!-- 广告投放脚本 -->
<script type="text/javascript" src="https://fpvideo.shenshiads.com/h5tovue/bd/wap.js" async="async" defer="defer"></script>
</head>
<body>
    <div>媒体内容片段1</div>
    <!-- 广告容器1 -->
    <div class="_jnwj3fh9mjo"></div>
    <!-- 广告投放代码 -->
    <!-- 广告宽度按照平台配置宽高 -->
    <script type="text/javascript">
        (window.slotbydup = window.slotbydup || []).push({
            id: 'u6811743',// 拉伸规则:固定像素宽度
            container: '_jnwj3fh9mjo'
        });
    </script>
    <div>媒体内容片段2</div>
    <!-- 广告父容器 -->
    <!-- 注意!!!按照父容器拉伸指的是广告宽度以 container2 宽度600px进行拉伸 -->
    <div id="container2" style="width: 600px">
        <!-- 广告容器2 -->
        <div class="_ace93fh9mkw"></div>
    </div>
    <!-- 广告投放代码 -->
    <script type="text/javascript">
        (window.slotbydup = window.slotbydup || []).push({
            id: 'u6811744', // 拉伸规则:按父容器宽度
            container: '_ace93fh9mkw'
        });
    </script>
    <div>媒体内容片段3</div>
    <div id="container3" style="width: 600px; height: 400px;">
        <!-- 注意!!!按照父容器宽高拉伸指的是广告宽度以 container3 宽度600px高度400px 进行拉伸 -->
        <div class="_208jotaaam8"></div>
    </div>
    <!-- 广告投放代码 -->
    <script type="text/javascript">
        (window.slotbydup = window.slotbydup || []).push({
            id: 'u6811745', // 拉伸规则:按父容器宽 高  pc 屏保代码位
            container: '_208jotaaam8'
        });
    </script>
</body>
</html>

TIP

注意:

  1. 如案例中所示,按照父容器拉伸的广告尺寸,是根据广告容器外层容器(container2)的宽度计算广告宽度。
  2. PC屏保广告按照父容器(container3)计算广告的宽高尺寸。需要确保广告绘制的时候,广告容器的宽高尺寸可以正确获取到。
Last Updated:
Contributors: zhaochangchang