使用条款

Mix-Mind系统公司(以下简称“Mix-Mind”)所有文档,接收者有保密义务。未经Mix-Mind书面许可,任何人或任何机构不得向第三方披露、泄露有关本文件的任何内容或细节。Mix-Mind拥有修改、调整、增补本文件的权利。Mix-Mind系统™和Mix-Mind Systems™及相关延展标识为Mix-Mind公司在中国和/或其他国家或地区的注册商标或商标。

目录

Mix-Mind投放代码对接说明-JS

1 概述

媒体通过嵌入Mix-Mind广告投放代码向Mix-Mind Exchange服务器发送投放请求,Exchange服务器根据投放请求中的参数组装请求发给系统中的DSP,根据DSP的返回Exchange筛选出竞价成功的广告,实时返回被投放的广告信息。

投放代码接收返回的广告信息,从中解析出物料地址、跳转地址、曝光监测代码、点击监测代码等,将广告加入页面指定位置进行广告展示、监测。

媒体需登录Mix-Mind广告管理系统,获取所属广告位的投放代码。Mix-Mind投放支持以下种类的投放:

本文档用于说明JavaScript投放

  1. javascript投放代码说明
  2. javascript代码如何实现返量

2 JavaScript投放

2.1 说明

JavaScript投放即使用JavaScript动态在页面指定标记位置投放广告。此方式适用于普通页面广告(例如Banner、焦点图、浮层等)。

2.2 代码示例

从Mix-Mind获取JS投放基础代码(下称Part A)。Part A相当于一个工具包,用于加载投放所必要的JS代码。将Part A嵌入广告所在页面(建议放置在<head>内),若一个页面有多个广告位,无需重复嵌入多条Part A。Part A为异步加载,不会影响页面正常加载速度。

Part A样例如下:

<!-- 获取投放请求处理JS,建议放置在head内 -->
<script type="text/javascript">
(function (doc) {
    var js = doc.createElement("script"),
    fs = doc.getElementsByTagName("script")[0];
    js.charset = "utf-8";
    js.src = "http://js.ad.xelements.cn/xt_ad_serving.js";
    fs.parentNode.insertBefore(js, fs);
})(document);
</script>

当一个广告位录入Mix-Mind投放系统后,将会生成对应的一条JS代码(下称Part B)。Part B的功能是执行某一广告位的投放操作,包括请求投放服务器、展示广告等。将Part B嵌入页面对应广告位位置即可。

Part B样例如下:

<!--该div对应的是广告展示的位置-->
<div id="Mix-Mind_1"></div>
<script type="text/javascript">
(function(win) {
    var params = {};
    params["l"] = "1";      //Mix-Mind ad placement id
    // params["_id"]:非必须参数. 仅当媒体需要自定义广告位DIV id时需要设置,params["_id"]与DOM中对应的DIV id的值必须保持完全一致。默认值为params["_srv"]+'_'+params["l"]
    params["_id"] = "Mix-Mind_1"; // Ad placement DIV id
    params["_srv"] = "Mix-Mind";
    __xt_rpq = win.__xt_rpq || []; 
    __xt_rpq.push(params);
})(window);
</script>

下面的例子展示了一个HTML页面源码,包含两条广告位投放代码。

<head>
<!-- 获取投放请求处理JS,建议放置在head内 -->
<script type="text/javascript">
(function (doc) {
    var js = doc.createElement("script"),
        fs = doc.getElementsByTagName("script")[0];
    js.charset = "utf-8";
    js.src = "http://js.ad.xelements.cn/xt_ad_serving.js";
    fs.parentNode.insertBefore(js, fs);
})(document);
</script>
</head>
<body>
......
<!-- Mix-Mind投放系统ID=1的广告位所在页面位置 -->
<div id="Mix-Mind_1"></div>
<script type="text/javascript">
(function (win) {
    var params = {};
    params["l"] = "1";      //Mix-Mind ad placement id
    params["_id"] = "Mix-Mind_1"; // Ad placement DIV id
    params["_srv"] = "Mix-Mind"; 
    __xt_rpq = win.__xt_rpq || []; 
    __xt_rpq.push(params);
})(window);
</script>
......
<!-- Mix-Mind投放系统ID=2的广告位所在页面位置 -->
<div id="Mix-Mind_2"></div>
<script type="text/javascript">
(function (win) {
    var params = {};
    params["l"] = "2";      //Mix-Mind ad placement id
    params["_id"] = "Mix-Mind_2"; // Ad placement DIV id
    params["_srv"] = "Mix-Mind"; 
    __xt_rpq = win.__xt_rpq || []; 
    __xt_rpq.push(params);
})(window);
</script>
......
</body>

2.3 多广告位优化

当一个页面包含多条广告位时,您可以对Part B进行合并优化。此时多条广告位的投放请求合并成一条,可以大大提高广告投放请求的速度。

样例如下:

<head>
<!-- 获取投放请求处理JS,建议放置在head内 -->
<script type="text/javascript">
(function (doc) {
    var js = doc.createElement("script"),
        fs = doc.getElementsByTagName("script")[0];
    js.charset = "utf-8";
    js.src = "http://js.ad.xelements.cn/xt_ad_serving.js";
    fs.parentNode.insertBefore(js, fs);
})(document);
</script>
</head>
<body>
......
<!-- Mix-Mind投放系统ID=1的广告位所在页面位置 -->
<div id="Mix-Mind_1"></div>
......
<!-- Mix-Mind投放系统ID=2的广告位所在页面位置 -->
<div id="Mix-Mind_2"></div>
......
<script type="text/javascript">
(function (win) {
    var params = {};
    params["l"] = ["1", "2"];       //Mix-Mind ad placement id ARRAY
    params["_id"] = ["Mix-Mind_1", "Mix-Mind_2"]; // Ad placement DIV id ARRAY
    params["_srv"] = "Mix-Mind";
    __xt_rpq = win.__xt_rpq || []; 
    __xt_rpq.push(params);
})(window);
</script>
</body>

3 Iframe投放

Mix-Mind支持iframe方式包裹JavaScript投放代码,即一个广告位对应一个iframe标签,每个广告位单独发送曝光请求。使用iframe包装将会增多用户请求次数,并且在无法实现上述多广告位优化。

在广告位所在的页面中添加iframe引用xtad_iframe.html,并将广告位id以参数形式传入iframe:

<!-- Mix-Mind投放系统中ID=3的广告位所在页面位置 -->
<iframe width="{广告位宽度}" height="{广告位高度}" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" allowTransparency="true" src="http://js.ad.xelements.cn/xtad_iframe.html?l=3&_srv=Mix-Mind"></iframe>

javascript代码实现返量说明

媒体接入Exchange系统有两种返量实现方式

  1. 媒体自定义回调函数
  2. 媒体在Mix-MindAdExchange系统中设置上打底广告 说明:打底广告支持静态打底(图片/视频),动态打底(js代码)两种方式,打底广告会关联AdExchange系统中媒体的广告位,在所有Dsp都竞价失败时,Mix-MindAdExchange会返回打底广告,从而实现返量
设置打底广告方式

说明:只需要在Mix-MindAdExchange系统中添加关联打底广告即可

媒体自定义回调函数

Mix-Mind Exchange对接时,由媒体注册自定义回调函数,媒体嵌入的Mix-Mind投放代码会在收到Mix-Mind竞价服务器的响应后会调用通过_callback注册的js函数,媒体需要在该js函数中实现媒体自定义回调函数,通过调用媒体的回调函数来告之媒体该次广告投放请求Mix-Mind是否竞价成功以及对应的广告位是否存在默认物料的信息。媒体根据这些信息做判断并按照自身需要实现定制化需求

在Mix-Mind提供的JS代码中提供了一个callback机制可供媒体注册自己的回调函数。Mix-MindJS代码回调时会回传两个bool型参数,第一个参数flag1表示Mix-Mind竞价是否成功,第二个参数flag2表示该广告位是否存在默认物料。对应情形如下:

  1. 在Mix-Mind Exchange竞价成功时,媒体对Mix-Mind投放反馈结果进行统计,不需要再次投放物料,Mix-Mind负责完成物料渲染。

  2. 在Mix-Mind Exchange竞价失败,但该广告位存在默认物料时,媒体仅对Mix-Mind投放反馈结果进行统计,不需要再次投放物料,Mix-Mind负责完成默认物料的渲染。

  3. 在Mix-Mind Exchange竞价失败且该广告位不存在默认物料时,媒体不仅需要统计Mix-Mind投放反馈结果,还需要自行负责投放物料并完成渲染。

所以用媒体自定义回调函数的方式实现返量,是在!flag1&&!flag2的条件下调用媒体自定义回调函数

示例:
<head>
<!-- 获取投放请求处理JS,建议放置在head内 -->
<script type="text/javascript">
(function (doc) {
    var js = doc.createElement("script"),
        fs = doc.getElementsByTagName("script")[0];
    js.charset = "utf-8";
    js.src = "http://js.ad.xelements.cn/xt_ad_serving.js";
    fs.parentNode.insertBefore(js, fs);
})(document);
</script>
</head>
<body>
......
    <!-- 广告位所在页面位置 -->
    <div id="Mix-Mind_2"></div>
    <!-- 获取具体广告位请求JS-->
    <script type="text/javascript">
    (function(win) {
        var params = {};
        params["l"] = "2";
        params["_srv"] = "Mix-Mind";
        //Mix-Mind投放代码通过_callback注册的匿名回调函数,会在收到Mix-Mind竞价服务器的响应后调用
        params["_callback"] = function (flag1, flag2) {
            if(!flag1&&!flag2){
                // 调用媒体自定义回调函数
                custom_callback();
            }
        }; 
        __xt_rpq = win.__xt_rpq || [];
        __xt_rpq.push(params);
    })(window);
    </script>
    <!-- 媒体注册的自定义回调函数,通过该函数实现自身定制化需求 -->
    <!-- 该函数会在Mix-Mind竞价服务器返回投放请求的响应后调用,以告之媒体该次投放请求Mix-Mind的竞价结果以及该广告位是否存在默认物料等信息 -->
    <script type="text/javascript">
    function custom_callback() {
        // <![CDATA[
        // function body ...
        // ]]>
    }
    </script>
......

</body>