2025年前端埋点sdk(前端埋点sdk开发)

前端埋点sdk(前端埋点sdk开发)在进行埋点前 需要确定在哪里埋点 埋哪些点等 即需要梳理清楚明确的埋点需求 在 QuickTrackin 平台中将明确的埋点需求称为埋点方案 并为埋点方案设计了规范模板 如下 在埋点方案中 明确的所需埋点内容有 1 事件主体 指 谁 触发了这个事件 分为设备 ID 和账号 ID 上报的事件务必具备其中之一 设备 ID 在小程序中一般为 openid

大家好,我是讯享网,很高兴认识大家。



在进行埋点前,需要确定在哪里埋点、埋哪些点等,即需要梳理清楚明确的埋点需求。在QuickTracking平台中将明确的埋点需求称为埋点方案,并为埋点方案设计了规范模板。如下:image.png
讯享网

image.png

在埋点方案中,明确的所需埋点内容有:

1、事件主体:指“谁”触发了这个事件,分为设备ID账号ID,上报的事件务必具备其中之一。

  • 设备ID:在小程序中一般为openid,小程序中嵌入的h5页面设备ID也需要设置为小程序的openid。
  • 账号ID:客户端用户登录后账号标识,当一个用户在不同的设备进行登录时,设备ID会发生变化,但是账号ID不会发生变化。例如一个用户使用手机和pad分别登录。

2、用户属性:针对账号ID的属性,例如账号ID为“testdemo@111”的用户,“生日”为“1999-02-13”,“会员等级”为“铂金”等。“生日”和“会员”等级就为用户属性。

3、渠道属性:广告投放的属性,例如投放渠道、投放方式、投放内容等。

4、全局属性:在全局设置一次后,每一个事件都会携带的属性

5、页面浏览事件:页面加载时上报的事件(埋点方案中页面编码和事件编码相等的事件,也是标记为蓝色的事件)

6、点击、曝光、自定义事件:客户端用户与客户端发生任意交互时上报的事件。

由于各小程序平台均有自己的设备ID生成逻辑,所以QuickTracking SDK不会自动生成任何设备ID,但是QuickTracking SDK的日志依赖设备ID,所以在进行埋点之前,需要设置设备ID。如果是微信小程序,SDK支持授权QuickTracking自动获取openid。或者开发者获取openid/unionid等官方小程序ID后手动上传作为设备ID,否则,QuickTracking SDK将无法进行任何日志上报。

手动上传方式如下:

请注意:示例为微信小程序的代码调用示例,其他小程序平台逻辑相似

PS:目前QuickTracking支持自动采集微信小程序openid,需要在产品中进行授权。授权方式如下,点击后按照要求填写内容即可。

image.png

image

授权后,设置设备ID代码方式为:

如果之前已经使用了手动设置openid,现希望改为上述的QuickTracking自动采集微信小程序openid,还需要注意以下内容:

  1. 移除metainfo中设置_hold=BLOCK的SDK阻塞上报逻辑
  2. 注释掉之前手动设置「_anony_id=openid」的相关逻辑代码,也就是移除从wx.login中获取openid的相关代码。
  3. 注意,务必确保关于设置appKey和收数域名的内容不受影响。

用户登录时,以及登录态进入小程序时需要设置账号ID。因为设置后的每一条日志都将携带账号ID,但退出小程序再进入后触发的事件不会携带账号ID。所以需要在用户登录时,以及登录态进入小程序时设置账号ID:

若需要在小程序端上获取QuickTracking的设备ID时,可以在metainfo中获取_anony_id,以微信小程序为例:

若需要在小程序端上获取QuickTracking的账号ID时,可以在metainfo中获取_user_id,以微信小程序为例:

通过预置事件编码 $\(_user_profile</span> 上报用户属性,事件类型为其他事件。</p><p id="8a917bf086gfr">在上报用户属性之前,需要先<span style="color:rgb(245, 34, 45)">设置</span><span style="color:rgb(232, 50, 60)">_user_id上报用户账号,</span>否则QuickTracking流量分析对用户属性不会进行关联计算。确认上报用户的账号ID后,上报用户属性示例如下:</p><p id="9d1da640abh8n"></p><p id="9e3753a0abxdq">上述内容中,3行不能发生任何变化,仅可自定义4、5、6行。</p><p id="9fbfef70abgc2"></p><p id="e1b2c83186c94">渠道属性无需进行任何埋点,但是需要唤起小程序的URL中携带这些渠道属性,且属性key务必以“utm_”开头,因为SDK识别的关键字为“utm_”。例如:</p><p id="2c4a16a086jdo"><span style="text-decoration:underline;color:rgb(0, 32, 92)"><b><u>qaplus/product?</u></b></span><span style="text-decoration:underline;color:rgb(254, 3, 0)"><b><u>utm_channel=gzh</u></b></span></p><p id="511f1ac08635z"></p><p id="58f665f0867jt"><span style="color:rgb(64, 64, 64)">PS:如果渠道属性已经与市面上渠道投放公司进行了合作,无法使用utm_开头,可以使用全局属性API将渠道属性进行埋点上报(属性key依然需要以“utm_”开头)。</span></p><p id="a1e89bd0abn90"></p><p id="a07b99b087lxs"><span style="color:rgb(254, 3, 0)"><b>全局属性的生命周期为应用启动到应用隐藏</b></span></p><p id="1fb7e3c0e16m7">使用aplus.appendMetaInfo进行全局属性上报时,如果和已经存在的全局属性key重复,则更新已有值;如果和已经存在的全局属性key不一致,则插入新的全局属性。</p><p id="75d5f0d0e1z9x"></p><p id="2b059100e1amo"><b>接口</b>:</p><p id="7d80d4d0e1hyj"><b>示例</b>:</p><p id="c1ba2710e1zdt">使用aplus.setMetaInfo进行全局属性上报时,仅会以最后一次上报为准。即先清空已有全部全局属性,再将本次setMetaInfo设置的全局属性放入。</p><p id="e1a1b980e10hb"></p><p id="c327c0d0e18c3"></p><p id="p-iq0-t5b-llt"><b>接口:</b></p><p id="ce329af086h4b"></p><p id="aada30a0ablqw"><b>示例:</b></p><p id="139be2a0e1086">1、页面浏览事件分为SDK自动埋点(全埋点)和代码埋点两种方式,<span style="color:rgb(254, 3, 0)"><b>默认页面浏览事件的全埋点是开启的。</b></span></p><p id="164c3590e1xoa">2、页面浏览事件需要埋点的内容为:</p><ul id="182c4032e1ruy"><li id="182c4030e1fgj"><p id="1ae3bf10e182u">事件编码:也就是页面编码,在页面浏览事件中事件编码即为页面编码。<img id="13c6ed7021qkl" src="https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN//p.png" alt="image.png" placement="break" class="image break"></p></li><li id="2404a140e12sx"><p id="24561ca0e1qn5">页面浏览事件的事件属性:具体属性见埋点方案</p></li><li id="8e1496e021ar0"><p id="8e146fd021bxm"><img id="8eaah" src="https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN//p.png" alt="image.png" placement="break" class="image break"></p></li></ul><p id="3519f390e1x7r">pageConfig为全局设置页面的页面编码的方式,具体示例如下:</p><p id="4448d2a0e1mp6">其中</p><ul id="54d5bb11e11du"><li id="54d59400e10qz"><p id="5526c140e1dmr">pageName表示页面编码</p></li><li id="55a9fb01e1oxu"><p id="596ccf60e1k33">pageTitle表示页面标题</p></li><li id="59da5e41e1nnk"><p id="5fe7e5f0e1j7i">skipMe为是否关闭该页面的自动浏览事件采集(true表示关闭,false表示开启)</p></li></ul><p id="6cf82ac0e1uy6"><span style="color:rgb(254, 3, 0)"><b>注意:</b></span>skipMe设置的优先级<span style="color:rgb(254, 3, 0)">低于</span>关闭页面浏览事件自动采集的总开关aplus-disable-apv</p><p id="29ab29c0e1w22"></p><p id="016377a0e1siy">SDK识别到页面的<span style="color:rgb(254, 3, 0)"><b>onHide</b></span>时,上报页面浏览事件,上报的内容为:</p><ul id="03df9b32e1fot"><li id="03df9b30e1gbq"><p id="06d13ce0e1665">当前客户端时间</p></li><li id="074d98d1e1eam"><p id="0979eeb0e1x9c">页面path</p></li><li id="0a02a6b1e1ueg"><p id="0ee8c560e1nah">页面编码(默认为页面path,如果设置了pageConfig,则取值为映射pageConfig的page_name)</p></li><li id="1fa0dc81e1tji"><p id="21ab0460e1ftv">页面标题(默认为页面title,如果设置了pageconfig,则取值为映射的page_title)</p></li><li id="223fca50e110z"><p id="24843c10e1cyb">页面停留时长:从<span style="color:rgb(254, 3, 0)"><b>onShow</b></span>到<span style="color:rgb(254, 3, 0)"><b>onHide</b></span>的时间</p></li></ul><h4 id="29d26b60e1jky">6.2.1 关闭页面自动埋点</h4><p id="2c52ada0e1dgn">页面自动上报默认是开启的,如果需要关闭自动页面上报,API如下:</p><p id="39171c60e1h93">如果仅须关闭某一页面的自动页面上报,可以在pageconfig中设置skipMe为true关闭。</p><h4 id="4a6e80c0e1cg4">6.2.2 设置自动页面浏览事件的事件属性</h4><p id="5be1lbr">在页面onhide钩子触发之前,可以调用updatePageProperties动态设置页面编码和页面浏览事件的事件属性。</p><p id="5f4c73d0e1gld">API说明:</p><p id="6deb20d0e1xke">其中</p><ul id="6f92dd62e1pz2"><li id="6f92dd60e11cw"><p id="796eab20e1l6r">\)params: 页面事件属性集合,object类型,不支持多层嵌套,其中预制字段page_name,用于动态设置自动页面事件的页面编码

  • \(page_path:可选字段,string类型,如果不传,默认为当前页面路径</p></li></ul><p id="83c1f2d0e1bjl">示例</p><p id="a5b1ff70e1hrm"><b>API</b></p><p id="a7dd1cd0e1gv1">sendPV 方法将发送一条页面 PV 日志,其 API 定义如下:</p><p id="b7cbf080e15qz">其中</p><ul id="baeb0ad1e1668"><li id="baeae3c0e1jfl"><p id="bcdfaee0e1ucy">\)pageEventConfig 为页面事件的配置,只需要写死{ is_auto: false } 即可

  • \(properties 为本次页面事件的扩展参数,其取值为一个object类型,不能多层嵌套,若无可传空对象'{}'</p><ul id="aa1b0bce172sr"><li id="b41d8e12edyiv"><p id="c788bmd">duration:其中duration作为预制字段,用于手动PV功能下记录本次页面浏览的页面停留时长,计算duration的逻辑需要开发者根据业务场景自行设计实现。自动PV功能下,duration计算逻辑由sdk内部实现</p></li></ul></li></ul><p id="ca0f79ce5ad6t"></p><p id="c9ad1e50e1kr3">示例</p><p id="28afd09c5939l"></p><p id="cbead950e1m8q"><span style="color:rgb(254, 3, 0)"><b>注意:</b></span></p><p id="e313a6c0e1lct"><span style="color:rgb(254, 3, 0)">页面标题(page_title)默认为pageConfig中的值,如果这里设置了,则为这里设置的值。</span></p><p id="e563b140e1ply"><span style="color:rgb(254, 3, 0)">页面编码(page_name)默认为pageConfig中的值,如果这里设置了,则为这里设置的值。</span></p><p id="ed801bc0e1qp9"></p><p id="0abcb270e1c2u">除了页面浏览事件外的事件都使用'action':'aplus.record'进行埋点,事件需要埋点的内容有:</p><ul id="0c88bfe2e1kav"><li id="0c88bfe0e1h3b"><p id="0e0a2fc0e1mxs">事件编码:<img id="daab5ed021sid" src="https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN//p.png" alt="image.png" placement="break" class="image break"></p></li><li id="1863e010e1ams"><p id="16a39270e1l9h">事件属性:<img id="075apj4" src="https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN//p.png" alt="image.png" placement="break" class="image break"></p></li><li id="27121d70e12wz"><p jc="justify" id="e11mz" style="text-align:justify">页面编码(可选):SDK默认采集页面path,如果页面path在pageConfig中进行了映射,并设置了page_name,则取值为pageConfig中的page_name。如果在事件埋点时,在事件属性中设置了page_name,则取值为事件属性中的page_name。<span style="color:rgb(254, 3, 0)">也就是取值优先级为:</span></p><p id="43b3aca0e1pui"><span style="color:rgb(254, 3, 0)"><b>事件属性中的page_name &gt; pageConfig中的page_name &gt; 页面path</b></span><img id="5bae68b021q4w" src="https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN//p.png" alt="image.png" placement="break" class="image break"></p></li><li id="801e49c0e1y0a"><p jc="justify" id="8064a190e1vmd" style="text-align:justify">页面标题(可选):SDK默认采集页面title,如果页面path在pageConfig中进行了映射,并设置了page_title,则取值为pageConfig中的page_title。如果在事件埋点时,在事件属性中设置了page_title,则取值为事件属性中的page_title。<span style="color:rgb(254, 3, 0)">也就是取值优先级为</span></p></li></ul><p id="8ce1n5o"><span style="color:rgb(254, 3, 0)"><b>事件属性中的page_title &gt; pageConfig中的page_title &gt; 页面title</b></span></p><p id="9f14c570e1vfc"></p><p id="9e024400e16p2">事件埋点分为SDK自动埋点(全埋点)和代码埋点两种方式,<span style="color:rgb(254, 3, 0)"><b>默认点击和曝光的全埋点是关闭的。</b></span></p><p id="48b29890e1azb">EXP特指曝光事件</p><p id="575d5380e1fbi">CLK特指点击事件</p><p id="64aa7a40e11j3">OTHER特指除点击和曝光事件外的其他自定义事件</p><p id="8e3c9140e1za0">由SDK内部帮助开发者处理曝光时机,并自动采集元素曝光行为。<span style="color:rgb(254, 3, 0)"><b>触发时机为控件展示在可视区域内面积超过50%,时间超过300ms。</b></span></p><p id="91857ab0e1fcd">以微信为例, UI部分:</p><p id="9fa5cff0e1l3i">sdk 配置部分:</p><p id="a1bcac90e1f3t">自动曝光前置回调函数,默认值为undefined,如需开启,需设置:</p><p id="6faygo"></p><p id="6f2b40501a3z5"><span style="color:rgb(254, 3, 0)">请注意:针对跨自定义组件的后代选择器,需要使用 &gt;&gt;&gt; 语法,帮助SDK获取元素DOM数据,参考示例:</span></p><p id="96e3b5501afrs"></p><p id="b10a3730e1m8t">从版本1.1.0开始,为减少开发者埋点工作量,sdk也支持通过配置部分信息,让SDK自动采集页面内的点击事件。(<span style="color:rgb(245, 34, 45)">支付宝、百度小程序需要基础库2.x版本以上才支持</span>)</p><p id="b3d7d620e1lkv">以微信为例, UI部分:</p><p id="57b4b060e1s7y">sdk 配置部分:</p><p id="83a020b0e1565">自动点击前置回调函数,默认值为undefined,如需开启,需设置:</p><p id="0feaf85ff6k5m"></p><p id="3194e92a5f42e">从版本 2.4.2 开始,开发者某些场景下需要采集页面内绑定事件函数的元素点击行为,为了减少7.5节开发者配置化的工作量,sdk已支持此种场景的自动采集。</p><p id="f3c90bef78iys">默认不采集绑定事件函数元素的点击行为,如需开启需要</p><p id="fc75a4c999b5d">使用场景:</p><p id="528f89da2c1v9">以微信小程序场景举例</p><p id="de58b9659c60p">当用户触发onClick事件时,sdk 会上报一条事件编码为\)$_mp_item_click的事件,采集字段包括:
    • 事件属性
      • (默认采集)methodName:“onClick”
      • (用户自定义属性)custom_property:“1111”
    • 全埋点属性
      • element_id: “my_bottom_tab”
      • element_type: “元素类型,开发者按需补充”
      • element_name: “元素名称,开发者按需补充”
      • element_class_name: “元素class,开发者按需补充”
      • element_content: “元素内容,开发者按需补充”
      • element_selector: “css筛选器,开发者按需补充”
      • element_path: “元素路径,开发者按需补充”

    备注:全埋点属性仅开发者在元素上配置了数据属性data-element_xxx后生效。

    分享裂变是增长黑客策略的一个关键概念,它依靠用户之间的社交联系来实现信息的相互传递,从而促进新用户的获取。

    完成分享裂变的SDK功能集成,您将可以使用QuickTracking平台分享趋势模型,通过分享回流相关指标衡量营销活动的拉新效益。

    1. 支持查看TOP分享用户和不同分享回流层级的分享回流效果指标。
    2. 支持回流指标灵活组合配置,查看最具裂变拉新能力和分享回流转化能力的TOP用户,追踪用户分享裂变链路与分享回流关系,快速定位关键意见消费者。

    版本要求

    小程序 sdk v2.2.0版本及以上

    功能

    当被分享人打开小程序时,用于获取来源分享id 和来源分享 url 的 API

    请求参数

    返回参数

    Object 类型

    调用示例

    注:考虑到小程序平台在onShareAppMessage和onShareTimeline API上的能力差异,SDK提供了两种API使用方式来请求分享参数,分别是支持Promise返回和支持函数回调方式返回。开发者请根据产品所需适配的平台自行选择

    基于支持 promise 的方式使用

    基于 callback 的方式使用

    版本

    小程序 sdk v2.2.0版本及以上

    功能

    请求用于构建分享链需要的分享id

    请求参数

    返回参数

    如果请求参数不包含 callback,返回

    调用示例

    注:考虑到小程序平台在onShareAppMessage和onShareTimeline API上的能力差异,SDK提供了两种API使用方式来请求分享参数,分别是支持Promise返回和支持函数回调方式返回。开发者请根据产品所需适配的平台自行选择

    基于支持 promise 的方式使用

    方式1:在自定义方法中获取分享id,然后在 onShareAppMessage onShareTimeline 中通过返回结果上报分享信息

    方式2:在onShareAppMessage中调用分享参数获取API,然后在 onShareAppMessage 中通过promise返回结果上报分享信息

    注:因 onShareTimeline 方法不支持 promise 返回,因此 onShareTimeline 仍需考虑通过 setState 方式获取分享 id

    基于 callback 的方式使用

  • 小讯
    上一篇 2025-04-19 15:42
    下一篇 2025-04-28 21:58

    相关推荐

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
    如需转载请保留出处:https://51itzy.com/kjqy/188227.html