JavaScript SDK 快速接入

最后更新于:2018-10-26 09:12:34

在使用前,请先阅读数据模型的介绍。

1. 事件设计表(示例)

事件设计表一般是由神策分析师和你们对接的同事,针对具体业务需求一起梳理的需要做埋点的 Excel 表。

事件和用户属性设计
事件表 用户表
事件名 事件属性 数据类型 用户属性 数据类型
搜索事件( search ) 搜索关键词( searchKeyWorld ) 字符串(String) 邮箱( email ) 字符串(String)

2. 引入 SDK

需要采集数据的页面都需要引入这段代码,来实现全埋点的功能,默认采集三个事件即 $pageview(页面浏览事件)、$WebClick(元素点击事件,点击图功能)、$WebStay(视区停留事件,触达图)。 贴异步加载的代码片段。

<script>
(function(para) {
  var p = para.sdk_url, n = para.name, w = window, d = document, s = 'script',x = null,y = null;
  w['sensorsDataAnalytic201505'] = n;
  w[n] = w[n] || function(a) {return function() {(w[n]._q = w[n]._q || []).push([a, arguments]);}};
  var ifs = ['track','quick','register','registerPage','registerOnce','clearAllRegister','trackSignup', 'trackAbtest', 'setProfile','setOnceProfile','appendProfile', 'incrementProfile', 'deleteProfile', 'unsetProfile', 'identify','login','logout','trackLink','clearAllRegister'];
  for (var i = 0; i < ifs.length; i++) {
    w[n][ifs[i]] = w[n].call(null, ifs[i]);
  }
  if (!w[n]._t) {
    x = d.createElement(s), y = d.getElementsByTagName(s)[0];
    x.async = 1;
    x.src = p;
    y.parentNode.insertBefore(x, y);
    w[n].para = para;
  }
})({
      sdk_url: '在 github 下载新版本的 sensorsdata.min.js ',
      name: 'sa',
      server_url:'数据接收地址',
      heatmap: {
         //是否开启点击图,默认 default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭
         clickmap:'default',
         //是否开启触达注意力图,默认 default 表示开启,自动采集 $WebStay 事件,可以设置 'not_collect' 表示关闭
         scroll_notice_map:'not_collect'
      }
    });
    sa.quick('autoTrack'); //神策系统必须是1.4最新版及以上
</script>

将以上代码放入 html 的 head 里面,一般最好放在稍微靠前点的位置。 您在 sa.track() 时,只要保证写在上面引用的代码的下面就可以,不需要等 window.onload 后再执行。

从 npm 获取, npm install sa-sdk-javascript , 这里获取后建议使用 webpack 等工具来打包。这里获取到的是最新版本。 贴初始化代码片段。

import sa from'sa-sdk-javascript';
sa.init({
  server_url: '...',
  heatmap: {
     //是否开启点击图,默认 default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭
     clickmap:'default',
     //是否开启触达注意力图,默认 default 表示开启,自动采集 $WebStay 事件,可以设置 'not_collect' 表示关闭
     scroll_notice_map:'not_collect'
  }
  .......
});
sa.login(user_id);
sa.quick('autoTrack');
var sa = require('sensorsdata.min.js');
sa.init({
  server_url: '...',
  heatmap: {
     //是否开启点击图,默认 default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭
     clickmap:'default',
     //是否开启触达注意力图,默认 default 表示开启,自动采集 $WebStay 事件,可以设置 'not_collect' 表示关闭
     scroll_notice_map:'not_collect'
  }
  .......
});
sa.login(user_id);
sa.quick('autoTrack');

用 webpack 打包的话,既可以使用 amd 的方式,也可以使用 node module 的写法,最终都能被 webpack 打包成功。但是因为 SDK 需要浏览器环境,所以不能直接在 nodejs 中使用,如果需要可以使用我们的 Node SDK 。

2.1 数据接收地址 server_url 获取方式

3. 埋点示例

3.1 事件 Event

<input type="text" placeholder="输入搜索关键词" id="keyWord"/>
<button type="button" id="search">搜索</button>
<script>
document.getElementById("search").onclick = function(){
        //页面本身的搜索功能外加一个神策的自定义方法
        sa.track("search",{
            searchKeyWord:$('#keyWord').val()
        });
}
</script>

3.2 用户 Profile

sa.setProfile({email:'xxx@xx'});

3.3 匿名 ID 和真实 ID 关联

通过调用 login 方法,传入对应的用户 ID 之后,匿名 ID 与对应的用户 ID 进行关联,关联成功之后可视为同一个用户。 调用时机:注册成功、登录成功 、初始化SDK(如果能获取到 用户ID )、都需要调用 login 方法传入 用户注册 ID。

sa.login('userID');

4. 埋点示例数据校验

浏览器控制台查看发送是否正常并且有 log 日志。

神策分析平台埋点管理查看数据接收是否正常。 Debug 及导入中的数据 埋点管理已接收,已校验,已入库,报错

神策分析模块查看具体的数据。