本手册讲解如何正确添加AdMonitor监测代码(适用于普通硬广监测部分, 有关可见曝光监测部分请点击这里)。AdMonitor监测代码按形式可以分为Flash代码JS代码URL代码三大类。一般地,Flash物料相关的监测采用Flash代码,网页相关的监测采用JS代码,其他无法使用Flash和JS代码的情况下采用URL代码,需要媒体确保秒针监测代码在广告素材正确展示后才能被触发。

1. 非Flash硬广监测

对于非Flash硬广监测,请查看本节说明。

1.1. 非Flash硬广点击

监测硬广点击采用URL代码。使用URL代码替换原目标URL。当用户点击广告链接时,他/她会首先访问AdMonitor监测服务器记录点击,而后迅速跳转到目标页。

  • 点击URL代码样例 【代码编号1a-1】

    http://e.cn.miaozhen.com/r.gif?k=CAID&p=SPID0&ae=MiniSiteID&af=KeywordID&o=http://www.miaozhen.com

点击代码由两部分组成。Part A (例子中的前半部分,以o=结尾),包含发送给AdMonitor服务器的CAIDSPIDMiniSiteIDKeywordID等信息。Part B (例子中的后半部分)是目标URL。如果在AdMonitor生成点击代码时,目标URL还没有确定,则点击代码只包含Part A。你需要在目标URL(即Part B)确定时,将其自行拼接在Part A之后。

有时,不需跳转到某一目标链接(例如,不希望秒针进行跳转或者监测页内按钮的点击次数,此时秒针仅负责记录点击数,不负责跳转),则可以仅仅使用Part A,但需修改页面的HTML代码配合。

以下是一个监测点击数的HTML代码的例子,点击后会直接到达KFC网站(不经过秒针服务器跳转)。

  • 点击监测 HTML代码 样例 【代码编号1a-2】

    <a href="http://kfc.com.cn" target="_blank" onclick="var i=new Image(1,1); i.onload=i.onerror=function(){};
    i.src='http://e.cn.miaozhen.com/r.gif?k=CAID&p=SPID0&ae=MiniSiteID&af=KeywordID&o=';">点击进入KFC</a>

以下是一个监测点击数的JS代码的例子,把其加入到您的JS代码相应位置可完成点击监测功能(如监测一个页面内部按钮弹窗)。

  • 点击监测 JS代码 样例 【代码编号1b-2】

    (function() {
      var url = "http://e.cn.miaozhen.com/r.gif?k=CAID&p=SPID0&ae=MiniSiteID&af=KeywordID&o=";
      var img =  new Image(1,1);
      img.onload = img.onerror = function() {};
      img.src = url;
    })();
Tip
点击代码的常见问题
  1. 为什么当使用拼接的点击代码时,用户无法跳转到目标页?

    请分情况解决:

    1. Part B中含有特殊字符“#”

      当你自行拼接点击代码时,建议Part B部分使用“URL-encode” 编码(编码规则同JavaScript中的“encodeURIComponent”函数),用以避免可能的浏览器兼容性问题。当Part B没有进行编码时,如果遇到Part B中有特殊字符时可能会无法跳转。你需要自行将Part B进行“URL-encode” 编码,或者联系秒针AE重新经过AdMonitor系统生成点击代码(系统会将Part B编码)。例如,使用编码后的Part B:

      http%3a%2f%2fwww.facebook.com%2f%23!%2fPanteneANZ

      来代替原始的URL:

      http://www.facebook.com/#!/PanteneANZ

      此时完整的点击代码类似:

      http://e.cn.miaozhen.com/r.gif?k=CAID&p=SPID0&ae=MiniSiteID&af=KeywordID&o=http%3a%2f%2fwww.facebook.com%2f%23!%2fPanteneANZ
    2. 目标URL在监测代码中重复了两次

      请先确认是不是拼接时多复制了一次目标URL。

      如果你使用某些投放系统来管理点击代码和目标地址。那么拼接工作可能已经由系统自动完成。你只需将Part A和目标URL分别输入到投放系统中的不同位置即可。

  2. 我修改了Part B的目标URL。为什么不能跳转,却来到一个提示页面?

    请按照如下流程排查:

    • 请检查你使用的监测代码(Part A和Part B),确认他们都是正确的。

    • 联系AdMonitor AE请求帮助,记得提供出现问题的点击代码和目标URL。

      • 出于安全考虑,只有当点击代码中的目标URL的域名在AdMonitor的白名单之中时,服务器才会执行跳转。如果你修改了目标URL的域名,你需要联系AdMonitor AE将新的域名加入到白名单中。

  3. 某些媒体不支持监测代码含有“&”字符?

    • 请将代码中的“&”字符全部替换为“%5E”即可。例如:

      http://e.cn.miaozhen.com/r.gif?k=CAID%5Ep=SPID0%5Eae=MiniSiteID%5Eaf=KeywordID%5Eo=

1.2. 非Flash硬广曝光

对于非Flash硬广,有JS和URL两种代码可选。

JS代码

在硬广所在页面添加JS代码,用于监测页面PV,从而可测得到硬广曝光。但媒体需保证代码和硬广同时同页上下线。粘贴代码到网页,使其出现在HTML页面源代码的<body>和</body>之间。

  • 硬广JS代码样例 【代码编号1b-1】

    <noscript><div style='display:none'>
    <img src='http://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID' width='1' height='1' border='0' />
    </div></noscript>
    <script type='text/javascript'>
    //<![CDATA[
    //Miaozhen Code Start
      _mzh=window._mzh || [];
      _mzh.push(
        ['_clear'], ['_set_k', 'CAID'], ['_set_p', 'SPID'],
        ['_send', 'http://g.cn.miaozhen.com/x.gif']
      );
      (function(){
        var mz=document.createElement('script');
        mz.type='text/javascript';mz.async=true;mz.src='http://js.miaozhen.com/t.js';
        var t=document.getElementsByTagName('script')[0]; t.parentNode.insertBefore(mz,t);
      })();
    //Miaozhen Code End
    //]]>
    </script>
URL代码

在媒体无法支持使用Flash代码和JS代码监测曝光的情况下(例如视频贴片广告、客户端广告等),可使用URL代码(又称短代码,1x1像素)。

将URL直接提供给媒体输入其投放系统当中。媒体需保证仅仅当每次广告曝光时,此URL才会被访问一次,特别注意轮播的情况,如果没有显示监测的广告,不得使用此URL。访问需从浏览广告的用户端发出,不接受媒体服务器使用此URL代为访问。如果为客户端广告,要求客户端通过IE浏览器的API访问,使得IE Cookie可用。

媒体可以在URL代码后面直接拼接随机数的方式避免浏览器缓存,但并不必须。AdMonitor服务器已经使用HTTP no-cache方法防止浏览器缓存。

  • URL曝光代码样例 【代码编号1a-3】

    http://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID0&rt=2
  • 有些媒体采取自己的JS代码发送秒针URL监测请求,此时请特别注意JS的发送方式,应当使用Image.onload(),Image.onerror()防止局部变量被销毁,否则可能会导致部分监测请求无法发出,造成数据差异。具体见下例:

    • JS代码样例 【代码编号1b-3】

      (function() {
        var url = "http://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID0&rt=2";
        var img =  new Image(1,1);
        img.onload = img.onerror = function() {};
        img.src = url;
      })();
  • 有些形式的广告(如EDM)可能需要HTML代码监测,HTML代码是URL短代码简单包装后的结果。下面例子包含了集中常见的包装方式(img形式、iframe形式)。

    • HTML代码样例(img) 【代码编号1a-4】

      <div style="display:none"><img src=
      "http://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID0&rt=2"
      width="1" height="1" border="0" /></div>
    • HTML代码样例(iframe) 【代码编号1a-6】

      <iframe src="http://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID0&rt=2" width="0" height="0" frameborder="0" scrolling="no">
      </iframe>

2. Flash硬广监测

对于Flash硬广监测,请查看本节说明。

由于秒针AE不是Flash专业制作人员,无法应对较复杂的Flash物料。故一般情况下,Flash代码由创意公司根据秒针所给代码和以下说明,将监测代码按照需求嵌入。秒针AE拿到物料后,负责检查代码添加的正确性。

首先准备Flash物料文件(.fla文件),确认此物料除去秒针监测代码外,都已制作完成。即,播放此Flash可以完成所有功能,并且点击Flash可以直接来到Landing Page。

2.1. Flash硬广曝光

Flash曝光代码是一段Action Script代码用于监测Flash广告曝光。

使用Flash打开物料,在某图层(或新建图层)的第一帧(或需要监测的某帧,例如15s处)位置右键点击“动作”。查看左侧窗口中显示的AS版本,如果显示为“ActionScript 1.0 & 2.0”,则为A S2.0,如果显示为“ActionScript 3.0”则为AS 3.0。将对应版本的AS代码粘贴进右侧空白窗口即可。

以下是Flash代码样例(包括AS 2.0及AS 3.0版本):

  • AS2.0 【代码编号1c-1】

    this._lockroot=true;
    _root.miaozhen_caid="CAID"; _root.miaozhen_spid="SPID";
    _root.miaozhen_ver="47"; _root.miaozhen_ext="";
    if(!_root.mz_obj) _root.mz_obj=new Object();
    if(!_root.mz_obj.spl) _root.mz_obj.spl=new Array();
    var mz_spl=_root.mz_obj.spl;
    for(i=0;i<mz_spl.length;i++) {
      if(mz_spl[i]==_root.miaozhen_spid){mz_f=1;break;}
    }
    if(!mz_f) {
      import flash.external.*;
      mz_spl.push(_root.miaozhen_spid);
      if(ExternalInterface.available) { try {
        _root.miaozhen_loc=String(ExternalInterface.call("function(){return document.location.href;}"));
        _root.miaozhen_ref=String(ExternalInterface.call("function(){return document.referrer;}"));
      } catch(mz_e) {} }
      var mz_a=System.security;
      mz_a.allowDomain("js.miaozhen.com"); mz_a.allowInsecureDomain("js.miaozhen.com");
      var mz_c=_root.createEmptyMovieClip(_root.miaozhen_spid,_root.getNextHighestDepth());
      mz_c.loadMovie("http://js.miaozhen.com/c.swf");
    //PLACEHOLDER-1
    }
  • AS3.0 【代码编号1c-2】

    import flash.external.*;
    import flash.display.Loader;
    import flash.net.URLRequest;
    addEventListener(Event.ENTER_FRAME,function(e:Event):void {
      e.currentTarget.removeEventListener(e.type,arguments.callee);
      var caid="CAID",spid="SPID",ver="47",ext,loc,ref;
      var str="function(){return encodeURIComponent(document.";
      if(ExternalInterface.available) { try {
        loc=String(ExternalInterface.call(str+"location.href);}"));
        ref=String(ExternalInterface.call(str+"referrer);}"));
      } catch(r) {} }
      if(!Stage.prototype.mz_obj)Stage.prototype.mz_obj=new Object();
      var obj=Stage.prototype.mz_obj;if(!obj.spl)obj.spl=new Array();
      var f=0;for(var i=0;i<obj.spl.length;i++)if(obj.spl[i]==spid){f=1;break;}
      if(!f) {
        obj.spl.push(spid);
        var url="http://js.miaozhen.com/c.swf#caid="+caid+"&spid="+spid;
        if(ver)url+="&ver="+ver; if(ext)url+="&ext="+ext;
        if(loc)url+="&loc="+loc; if(ref)url+="&ref="+ref;
        var req:URLRequest=new URLRequest(url);
        var ldr:Loader=new Loader();ldr.load(req);addChild(ldr);
    //PLACEHOLDER-1
      }
    });

2.2. Flash硬广点击

在Flash中,只需将Landing Page URL替换为URL点击代码即可。具体方法可参考以下例子。

例子:打开Flash物料,点击编辑——查找和替换,搜索范围“当前文档”,搜索Landing Page URL:http://www.kfc.com.cn

你可能会搜索到类似如下代码 (AS 2.0) 【代码编号1c-3】

on (release) {
  getURL("http://www.kfc.com.cn", "_blank");
}

或者类似如下代码 (AS 3.0) 【代码编号1c-4】

navigateToURL(new URLRequest("http:// www.kfc.com.cn", "_blank");

只需将其中http://www.kfc.com.cn部分替换为URL点击代码即可:

http://e.cn.miaozhen.com/r.gif?k=CAID&p=SPID0&ae=MiniSiteID&af=KeywordID&o=http://www.kfc.com.cn

2.3. Flash硬广内页/按钮等

将URL代码(曝光短代码或点击代码不加目标地址)给到创意公司。创意公司按照如下模板,替换其中的URL代码(红色),将其加入适当位置,使得在按钮点击/显示内页的同时,语句被执行。

  • 例子 Flash按钮点击:

    • AS2.0 【代码编号1c-5】

      new LoadVars().load("http://e.cn.miaozhen.com/r.gif?k=CAID&p=SPID0&ae=MiniSiteID&af=KeywordID&o=");
    • AS3.0 【代码编号1c-6】

      sendToURL(new URLRequest("http://e.cn.miaozhen.com/r.gif?k=CAID&p=SPID0&ae=MiniSiteID&af=KeywordID&o="));
  • 例子 Flash内页曝光:

    • AS2.0 【代码编号1c-7】

      new LoadVars().load("http://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID0");
    • AS3.0 【代码编号1c-8】

      sendToURL(new URLRequest("http://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID0"));

3. UTM代码(点击到达)

本节介绍手动将硬广来源信息添加在Landing Page URL上的方法(即UTM代码)。此方法适用于如下情况:

  1. 解决移动端浏览器禁用第三方Cookie导致Minisite无法区分硬广来源的问题(同时兼容PC端)。

  2. 秒针不监测点击,但是监测Minisite点击到达并区分硬广来源。

修改需两个步骤:

  1. Landing Page嵌入秒针MiniSite JS代码。

  2. 修改Landing Page URL,添加硬广来源参数。

例如:原来的Landing Page URL是http://www.kfc.com.cn/index.html

则使用如下Landing Page URL替代原来的URL【代码编号1a-5】:

http://www.kfc.com.cn/index.html?mz_ca=CAID&mz_sp=SPID

4. 监测代码合成

对于Flash曝光代码,因为代码较为复杂,故一般秒针不负责添加(或合成)其他第三方代码的工作。如客户需求同时使用两套Flash曝光代码,请各自添加。

对于点击代码,不推荐使用多个第三方代码合成的方式,因为连续跳转会增大流失率。如确有需求,原则是“谁在前谁合成”,即秒针只负责合成那些秒针点击代码在前的。

如确有特殊情况需要秒针合成,请按照如下说明:

  • Flash硬广曝光合成

    • 请将Flash曝光代码的“//PLACEHOLDER-1”那一行,替换为如下代码:

      • AS 2.0:

        _root.createEmptyMovieClip("mz_other_1",_root.getNextHighestDepth()).loadMovie("http://需合成的URL监测代码");
      • AS 3.0:

        sendToURL(new URLRequest("http://需合成的URL监测代码"));
  • URL短代码合成(曝光、点击)

    • 利用秒针URL代码(短代码)的跳转功能合成代码。只需将&o=加入到URL代码最后面,再连接其他URL代码即可。曝光和点击URL代码均适用,例如:

      • 合成硬广曝光代码

        http://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID0&rt=2&o=http://需合成的URL监测代码
      • 合成硬广点击代码:

        http://e.cn.miaozhen.com/r.gif?k=CAID&p=SPID0&ae=MiniSiteID&af=KeywordID&o=http://需合成的URL监测代码
  • 其他合成例子

    • DoubleClick合成

      • 硬广曝光 DoubleClick在秒针之前

        http://ad.doubleclick.net/imp;v1;f;256331574;0-0;0;79249356;1|1;47753502|47768920|1;;cs=l;%3fhttp://g.cn.miaozhen.com/x.gif?k=CAID&p=SPID0&rt=2&?[timestamp]

5. 监测代码常见字段说明

类别 参数 含义
- dx= IPDX配置字段。
- o= 落地页(目标链接)地址。
- ni=__IESID__ IES服务字段。
- ns=__IP__ 媒体回传IP值。
- v=__LOC__ 媒体回传监测来源页面地址。
- ro=sm 跳转到落地页时,会在落地页后面拼接utm参数。
MMA mo=__OS__ 符合MMA标准的设备ID识别宏。回传操作系统信息。
MMA m0=__OPENUDID__ 符合MMA标准的设备ID识别宏。iOS OpenUDID。
MMA m0a=__DUID__ 符合MMA标准的设备ID识别宏。Windows Phone DUID.
MMA m1=__ANDROIDID1__ 符合MMA标准的设备ID识别宏。未加密的Android ID。
MMA m1a=__ANDROIDID__ 符合MMA标准的设备ID识别宏。加密的Android ID。
MMA m2=__IMEI__ 符合MMA标准的设备ID识别宏。加密的IMEI。
MMA m4=__AAID__ 符合MMA标准的设备ID识别宏。未加密的AAID (Android Advertising ID)。
MMA m5=__IDFA__ 符合MMA标准的设备ID识别宏。未加密的iOS IDFA (Idendifier For Advertising)。
MMA m6=__MAC1__ 符合MMA标准的设备ID识别宏。加密的MAC地址。保留分隔符":"。
MMA m6a=__MAC__ 符合MMA标准的设备ID识别宏。加密的MAC地址。去除分隔符":"。
剧目监测 nd=__DRA__ 用于回传剧目ID或剧目名称。
剧目监测 np=__POS__ 用于回传贴片位序。
剧目监测 nn=__APP__ 用于回传APP名称。
离线监测 TIME=__TIMESTAMP__ 符合中广协标准的离线上报时间戳。