title: StReport埋点上报

StReport埋点上报

使用场景

有数据上报需求的所有项目, 针对没有特殊需求的项目请在 <head> 标签中加入以下代码用于类似百度的自动埋点上报:

  1. <script src="//zhcdn01.xoyo.com/xassets/lib/st-report-sdk/0.2.x/st-report-sdk.min.js"></script>
  2. <script>
  3. // 如果 config 不进行设置或者为 undefined, 则当前网页将自动根据内置列表分类进行上报, 可直接使用 window.StReportSdk.autoTrack(); 即可.
  4. var config = {
  5. projectIdentifier: 'jx3',
  6. eventGroup: 'jx3_jiayuan_yuyue_pc_20200417',
  7. eventTags: ['pc','jiayuan']
  8. };
  9. window.StReportSdk.autoTrack(config);
  10. </script>

依赖

  1. <script src="//zhcdn01.xoyo.com/xassets/lib/st-report-sdk/x.x.x/st-report-sdk.js"></script>

其中x.x.x是版本号,请询问官网负责对接的同学当前应使用什么版本。

使用方法

一般情况下,让西山居运营平台官网组的同学提供一个写有各种埋点实现方法的js文件,直接在引用st-report-sdk.js之后,引入这个统计js文件即可;

  1. <head>
  2. <script src="//zhcdn01.xoyo.com/xassets/lib/st-report-sdk/0.2.4/st-report-sdk.min.js"></script>
  3. <script src="./tracker.js" type="text/javascript"></script>
  4. </head>

以下是生成的tracker.js文件的样例,可能会因为版本不同而不同。 特别要注意的是,和官网同学确认这个文件的语法是 es5 还是 es6 的。

  1. //初始化stReport时需要的参数
  2. var config = {
  3. projectIdentifier: 'jx3',
  4. eventGroup: 'jx3_jiayuan_yuyue_pc_20200417',
  5. name: '家园预约专题pc端',
  6. identify: 'jx3',
  7. eventTags: ['pc','jiayuan'],
  8. debug: true,
  9. };
  10. //引入stReport
  11. var stReportSdk = new StReportSdk.getInstance(config);
  12. //创建统计实现对象tracker
  13. var tracker = createTracker(stReportSdk)
  14. function createTracker(stReportSdk) {
  15. Number.isInteger =
  16. Number.isInteger ||
  17. function(value) {
  18. return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
  19. };
  20. //检测参数类型,参数类型若不符合,则上报失败
  21. function checkTypeHOF(type) {
  22. switch (type) {
  23. case 'int':
  24. return Number.isInteger;
  25. case 'float':
  26. return value => typeof value === 'number' && !Number.isInteger(value);
  27. case 'boolean':
  28. return value => typeof value === 'boolean';
  29. case 'string':
  30. return value => typeof value === 'string';
  31. default:
  32. setTimeout(() => {
  33. throw new Error('st-report: invalid value type = ' + type);
  34. }, 0);
  35. return null;
  36. }
  37. }
  38. return {
  39. loadPage: function() {
  40. stReportSdk.report({
  41. eventName: 'load_page',
  42. eventDescription: '页面加载(默认上报,页面全部加载完才上报)',
  43. eventDataValue: {
  44. td_pl: StReportSdk.getDiffRouteTime()
  45. },
  46. types: {
  47. td_pl: checkTypeHOF('int')
  48. }
  49. });
  50. },
  51. pageLeave: function() {
  52. stReportSdk.report({
  53. eventName: 'page_leave',
  54. eventDescription: '离开页面(默认上报)',
  55. eventDataValue: {
  56. td_pl: StReportSdk.getDiffRouteTime()
  57. },
  58. types: {
  59. td_pl: checkTypeHOF('int')
  60. }
  61. });
  62. },
  63. loadPageStart: function() {
  64. stReportSdk.report({
  65. eventName: 'load_page_start',
  66. eventDescription: '页面加载(默认上报,进入页面就上报)'
  67. });
  68. }
  69. }
  70. }

具体需要埋点的位置和业务点,也让官网组同学一并提供;一般会是一张图,如 https://static-xsjgw.xoyo.com/data/data/event/77/af/77afe3d6753c785cfadc07b5aff55155?_r=0.3783992622516392&_r=0.1111605430483964

最后,在业务中,调用刚刚创建的 tracker 对象中的各种上报方法实现数据上报即可

  1. tracker.loadPage();
  2. //点击上报
  3. $(".btn").on('click',function(){
  4. tracker.clickxxxx(arg1, arg2, ...argn)
  5. //业务代码
  6. })

数据核对

上报完成后,需要判断这个上报是否成功

方法如下: 打开控制台→选中network→选择image类型→过滤器中输入web?

失败的请求则表示上报失败。

最后,让官网同学在埋点后台的对应专题中确认所有上报点都成功后,则数据埋点完成啦~。