微信小程序 SDK 历史版
Last updated
Was this helpful?
Last updated
Was this helpful?
在使用前,请先阅读的介绍。
从 github 上下载 ,sensorsdata.min.js 和 sensorsdata_conf.js
把这两个文件放在小程序的 utils 目录下,然后在 app.js 第一行添加以下代码
现在在其他 Page 里就可以通过 getApp 来使用神策的追踪了
name: SDK 使用的一个默认的全局变量,会注册在 App 全局函数内,在 Page 中可以通过 app[name].track 来使用,默认值是 sensors 。
appid: (非必填参数)如果需要自动获取 openid ,需要在神策后端配置 appid 和 appsecret ,同时在这里指定 appid 。
server_url: 数据接收地址, 如果你使用的是 cloud 云版环境,地址类似于 : 请在微信开发设置,服务器域名的 request 合法域名内,把这个地址加上。
send_timeout: 请求发送超时时间(如果一个请求发送后,超过规定时间没响应,则继续发送下一条数据),默认为 1000 毫秒。
use_client_time: 因为客户端系统时间的不准确,会导致发生这个事件的时间有误,所以这里默认为 false ,表示不使用客户端时间,使用服务端时间,如果设置为 true 表示使用客户端系统时间。如果你在属性中加入 {$time: new Date()} ,注意这里必须是 Date 类型,那么这条数据就会使用你在属性中传入的这个时间。
autoTrack: 是否开启自动采集,五个参数的值默认为 true,即采集五个事件 $MPLaunch、$MPShow、$MPHide、$MPViewScreen、$MPShare(0.9以上版本的 SDK 支持,其中 $MPShare 事件1.9版本以上支持,详细介绍见本页第四点)。
show_log: 设置 true 后会在模拟器控制台打 logger,会显示发送的数据,设置 false 表示不显示。默认为 true 。
allow_amend_share_path: 设置 true 后会自动修改 Page.onShareAppMessage 中的 path 属性,新增一些参数包括当前用户的 distinct_id 等,如果要自动采集分享,必须设置为 true 。
is_plugin: 小程序中是否使用了插件,默认为 false 。小程序中如果使用了插件,该参数必须设置为 true 。
batch_send: 小程序中是否使用批量发送数据功能,默认为 false ,配置注意事项详见常见问题 。
datasend_timeout: 请求发送取消时间(请求发送后,在规定时间内未返回结果,则取消请求),默认为 1000 毫秒(1.12.9 及以上版本支持) 。
第一步:通过 npm i sa-sdk-miniprogram
集成 SDK
第二步:修改 src 目录下的 app.wpy,在 app.wpy 中引入 SDK
在进行任何埋点之前,都应当先确定如何标识用户。distinct_id 是神策用来标识用户的一段唯一的字符串。
在小程序中,会有下面 3 种 id 1. 默认情况下,我们会生成一个随机数 uuid ,保存在 weixin storage 中,我们暂时称这个为 uuid 2. 用户打开小程序,我们可以获得用户的 weixin openid ,我们暂时称这个为 openid 3. 客户用户账号体系中产生或保存的真实用户 id 。我们暂时称为 "你们服务端分配给用户具体的登录 ID"
如果不做任何操作,小程序会使用 uuid 作为 distinct_id ,但是这个 uuid 换了设备,或者删除小程序,会重新生成。 所以一般情况下,我们建议使用 openid 作为当前的 distinct_id。 因为获取 openid 是一个异步的操作,但是冷启动事件等会先发生,这时候这个冷启动事件的 distinct_id 就不对了。 所以我们会把先发生的操作,暂存起来,等获取到 openid 后再调用 sensors.init() 才会发数据。 下面是常见的两种获取 openid 的初始化代码。
默认情况下 ,SDK 会分配一个匿名 ID 来标识游客。当用户注册成功或登录成功时调用 login 方法,传入对应的用户 ID ;匿名 ID 会与对应的用户 ID 进行关联,关联成功之后视为同一个用户。 调用时机:注册成功、登录成功 、初始化 SDK(如果能获取到用户 ID)都需要调用 login 方法传入用户 ID。
第一次接入神策分析时,建议先追踪 3~5 个关键的事件,只需要几行代码,便能体验神策分析的分析功能。例如:
电商产品,可以追踪用户注册、浏览商品和下订单等事件。
事件公共属性:可以在 app.js 文件引入 sensorsdata.min.js 文件之后, init() 方法调用之前使用 registerApp() 方法设置公共属性。例如:
为了方便使用, 0.9 版本以上的小程序 SDK 已经可以自动追踪微信小程序中的冷启动,热启动,进入后台,页面浏览事件。
事件名称
相应小程序生命周期函数
触发时机
说明
$MPLaunch
App.onLaunch
小程序进程被杀死,重新打开时会触发
小程序初始化完成时,全局只触发一次
$MPShow
App.onShow
小程序启动,或从后台进入前台显示
启动小程序时
$MPHide
App.onHide
点击小程序右上角退出按钮、微信进入后台、进入小程序关于页面、手机锁屏、小程序进程被杀死时
小程序从前台进入后台
$MPViewScreen
Page.onShow
小程序启动打开页面、从后台进入前台打开页面时触发
每次打开页面都会调用一次
$MPShare
Page.onShareAppMessage
设置这个函数后,点击分享按钮触发
暂时只能获取到用户触发分享,无法监听是否分享成功的反馈
例如:在 sensorsdata_conf.js 中添加下面参数,开启 autoTrack 自动采集
用户可以在预置事件 $MPLaunch、 $MPShow、 $MPHide、 $MPViewScreen 等中通过 getApp().sensors.para.autoTrack[param] = value
添加自定义属性,其中 param 为 appLaunch, appShow, appHide, pageShow 等; value 为对象或返回值是对象的函数;
例如:
注意:该代码建议嵌入到相应js文件的顶部。
在小程序冷启动 appLaunch 和热启动 appShow 还有页面打开 pageShow,我们会自动解析普通网页二维码的 utm 参数 解析 utm 相关的属性 作为这 3 个事件的属性
在冷启动 appLaunch 里解析出来的 utm 值,会在小程序的生命周期内,用 $latest_utm 相关属性来一直保存着 在热启动 appShow 中如果有新的 utm 参数时, $latest_utm 值会覆盖 在下次重新冷启动的时候, $latest_utm 的值会重置,如果没有就不会有这个属性
在小程序 sdk 发现设备之前没有加载过 sdk ,且如果冷启动 appLaunch 能解析到 utm 值时,会 setOnceProfile 来设置用户属性
通过普通网页二维码进入小程序,appLaunch 和 appShow 会根据 query.q 来解析 utm 相关参数。
通过小程序码或分享到好友等方式进入小程序,appLaunch 和 appShow 会根据 query 来解析 utm 相关参数。
通过小程序跳转小程序,appLaunch 和 appShow 会根据 referrerInfo.extraData 来解析 utm 相关参数。
$latest_utm 相关属性取值时机、首次 utm 相关属性取值时机与其一致。
字段名称
类型
说明
版本
$lib
字符串
SDK 类型
$lib_version
字符串
SDK 版本
$screen_height
数值
小程序屏幕高度
$screen_width
数值
小程序屏幕宽度
$model
字符串
设备型号
$manufacturer
字符串
设备制造商
1.11.1 支持
$network_type
字符串
网络类型
$os
字符串
操作系统
$os_version
字符串
操作系统版本
$is_first_day
布尔类型
是否首日访问
$ip
字符串
SDK 发送数据请求携带的属性
$country
字符串
由 IP 解析得到
$province
字符串
由 IP 解析得到
$city
字符串
由 IP 解析得到
$latest_utm_source
字符串
最近一次付费广告系列来源
1.3 支持
$latest_utm_medium
字符串
最近一次付费广告系列媒介
1.3 支持
$latest_utm_term
字符串
最近一次付费广告系列字词
1.3 支持
$latest_utm_content
字符串
最近一次付费广告系列内容
1.3 支持
$latest_utm_campaign
字符串
最近一次付费广告系列名称
1.3 支持
$latest_scene
字符串
最近一次启动场景值
1.9 支持
注意: 1.$screen_height 在 1.11.1 版本之前字段名称为‘小程序窗口高度’,取的值是小程序可使用窗口高度 2.$screen_width 在 1.11.1 版本之前字段名称为‘小程序窗口宽度’,取的值是小程序可使用窗口宽度
字段名称
类型
说明
版本
$scene
字符串
启动场景
1.0以上
$url_path
字符串
页面路径
$utm_source
字符串
广告系列来源
0.9以上
$utm_medium
字符串
广告系列媒介
0.9以上
$utm_term
字符串
广告系列字词
0.9以上
$utm_content
字符串
广告系列内容
0.9以上
$utm_campaign
字符串
广告系列名称
0.9以上
$is_first_time
布尔类型
是否首次访问
1.8以上
$share_distinct_id
字符串
分享时的 distinct_id
1.9以上
$share_depth
数值
分享次数
1.9以上
$share_url_path
字符串
分享时的页面路径
1.9以上
$url_query
字符串
页面参数
1.10.4以上
字段名称
类型
说明
版本
$scene
字符串
启动场景
1.0以上
$url_path
字符串
页面路径
$utm_source
字符串
广告系列来源
0.9以上
$utm_medium
字符串
广告系列媒介
0.9以上
$utm_term
字符串
广告系列字词
0.9以上
$utm_content
字符串
广告系列内容
0.9以上
$utm_campaign
字符串
广告系列名称
0.9以上
$share_distinct_id
字符串
分享时的 distinct_id
1.9以上
$share_depth
数值
分享次数
1.9以上
$share_url_path
字符串
分享时的页面路径
1.9以上
$url_query
字符串
页面参数
1.10.4以上
字段名称
类型
说明
版本
event_duration
NUMBER
时长
1.1及以上
$url_path
字符串
页面路径
1.5及以上
字段名称
类型
说明
版本
$url_path
字符串
页面路径
0.9版本之前为 $url
$referrer
字符串
前向页面地址
0.9以上
$utm_source
字符串
广告系列来源
0.9以上
$utm_medium
字符串
广告系列媒介
0.9以上
$utm_term
字符串
广告系列字词
0.9以上
$utm_content
字符串
广告系列内容
0.9以上
$utm_campaign
字符串
广告系列名称
0.9以上
$url_query
字符串
页面参数
1.10.4以上
字段名称
类型
说明
版本
$share_depth
数值
分享次数
1.9以上
$url_path
字符串
分享时的页面路径
1.9以上
字段名称
类型
说明
版本
$first_visit_time
Datetime
首次访问时间
1.12.9 及以上版本
$utm_source
字符串
首次广告系列来源
1.0 及以上版本
$utm_medium
字符串
首次广告系列媒介
1.0 及以上版本
$utm_term
字符串
首次广告系列字词
1.0 及以上版本
$utm_content
字符串
首次广告系列内容
1.0 及以上版本
$utm_campaign
字符串
首次广告系列名称
1.0 及以上版本
直接设置用户的属性,如果存在则覆盖。
properties:object
,必选。
如果不存在则设置,存在就不设置。
properties:object
,必选。
先把下载下来的 sensorsdata.min.js 和 sensorsdata_conf.js 放在根目录 untils 目录下
小程序 server_url (数据接收地址)需要在微信公众平台---开发---开发设置---服务器域名中配置
小程序中服务器域名必须使用 https 协议。
在根目录的 app.js 中使用该方法
此方法可获取 SDK 版本、操作系统、操作系统版本、设备型号、网络类型、屏幕宽高、页面路径、最近一次渠道来源的相关属性。需要在获取完网络状态与设备信息、页面加载完成后调用此方法。
在 SDK 1.9版本加入了小程序的分享事件 $MPShare ,该事件在小程序中调用分享接口时触发。
$url_path 属性值会记录触发分享的页面地址。 $share_depth 属性值会记录分享的层级:A、B、C为三个不同的用户,若小程序一个页面依照 A -> B -> C 的顺序进行分享,则 A 的分享会被标记为1级分享,B 触发的分享会被标记为2级,C 则为3级分享。 其中,用户打开自己分享的页面是不会增加 $share_depth 的值。 若您希望在后续跟踪分享的效果,需要配置 allow_amend_share_path 为 true,这样神策会自动修改分享的path参数,path后面会新增参数包含distinct_id,分享次数,页面路径信息。在该分享页面被打开时,会自动解析到 $MPLaunch 和 $MPShow 中。
SDK 1.9.5版本以后,客户可以通过配置 sensorsdata_conf.js 文件中 autoTrack:false, 使 SDK 不再覆盖小程序原生的 App 和 Page 方法。 使用该配置后,小程序 SDK 不再采集预置事件,不能使用神策提供的小程序渠道追踪。
SDK 1.9.9 版本支持通过 sensors.init(para) 方法修改 sensorsdata_conf.js 中的配置参数
注意:
对于使用 wepy 框架开发的小程序,需要使用按照下面步骤操作
1.通过 npm i sa-sdk-miniprogram
集成 SDK
2.使用wepy build --no-cache
重新编译
1.可配置是否批量发送数据 batch_send:true ;默认情况下,会每隔 6s 或者每采集 6 条数据后合并发送一次; 2.可配置使用批量发送数据,且可配置批量发送数据的时间间隔或条数 batch_send : { send_timeout : 5000, max_length : 20 }; 3.批量发送可能存在重复发数据的问题,因为关闭小程序的时候,我们会默认发一次数据,可能数据没返回,下次会重发,所以这个版本含有默认去重的功能,使用这个功能必须升级神策分析系统到 1.11 及以上版本,已经是 1.11 版本以上的系统也需要小版本升级; 4.批量发送中有一个优化,如果是 $MPLaunch 事件会直接发送,不会等待,因为考虑到会有较多用户打开就关闭小程序,甚至永远不来,如果使用等待 6s 的批量发送策略,会导致数据丢失,跟其他统计工具对不上。
如果不需要我们的预置属性,可以通过 track 方法发送个对应的预置事件,加延迟的属性就可以(建议使用此方案)
如果需要我们的预置属性,需要在相应的生命周期函数中调用如下方法(预置事件 $MPViewScreen 设置自定义属性不支持这种方案 )
第一步:从 github 上下载 ,sensorsdata.js 和 sensorsdata_conf.js (其中未压缩的 sensorsdata.js 文件请联系神策值班同学获取)
第二步:将 sensorsdata_conf.js 中的导出方式代码 module.exports = conf;
修改为 export { conf };
第三步:修改 sensorsdata.js ,将sa.para = require('sensorsdata_conf.js');
修改为 import { conf } from './sensorsdata_conf'; sa.para = conf;
module.exports = sa;
修改为 export { sa };
第四步:将修改好的文件放到小程序项目的 utils 目录下
第五步:在项目的 main.js 中引入 SDK,sensorsdata.min.js 必须在 vue 之前引入,然后初始化
相关文档链接:
其中场景值的概念及取值可以参考微信小程序的官方介绍
1.如果是添加不需要延迟获取的属性,可以参考文档 描述的方案添加。 2.如果是需要延迟才能获取的属性,首先需要关闭 autoTrack 对应的预置事件,然后手动去发送。