使用条款
Mix-Mind系统公司(以下简称“Mix-Mind”)所有文档,接收者有保密义务。未经Mix-Mind书面许可,任何人或任何机构不得向第三方披露、泄露有关本文件的任何内容或细节。Mix-Mind拥有修改、调整、增补本文件的权利。Mix-Mind系统™和Mix-Mind Systems™及相关延展标识为Mix-Mind公司在中国和/或其他国家或地区的注册商标或商标。
Mix-Mind投放代码对接说明-JS
媒体通过嵌入Mix-Mind广告投放代码向Mix-Mind Exchange服务器发送投放请求,Exchange服务器根据投放请求中的参数组装请求发给系统中的DSP,根据DSP的返回Exchange筛选出竞价成功的广告,实时返回被投放的广告信息。
投放代码接收返回的广告信息,从中解析出物料地址、跳转地址、曝光监测代码、点击监测代码等,将广告加入页面指定位置进行广告展示、监测。
媒体需登录Mix-Mind广告管理系统,获取所属广告位的投放代码。Mix-Mind投放支持以下种类的投放:
本文档用于说明JavaScript投放
JavaScript投放即使用JavaScript动态在页面指定标记位置投放广告。此方式适用于普通页面广告(例如Banner、焦点图、浮层等)。
从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>
当一个页面包含多条广告位时,您可以对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>
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>
说明:只需要在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表示该广告位是否存在默认物料。对应情形如下:
在Mix-Mind Exchange竞价成功时,媒体对Mix-Mind投放反馈结果进行统计,不需要再次投放物料,Mix-Mind负责完成物料渲染。
在Mix-Mind Exchange竞价失败,但该广告位存在默认物料时,媒体仅对Mix-Mind投放反馈结果进行统计,不需要再次投放物料,Mix-Mind负责完成默认物料的渲染。
在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>