小程序统计文档

小程序 SDK 的下载、初始化、自动采集事件、手动上报接口与指标口径。

产品边界

小程序统计不复用网站的 URL、referrer、PV 与跳出率口径:来源是宿主平台的场景值(scene),页面是页面路由(pages/…),数据写入独立的 mini_events 表,控制台有自己的 13 个报表页。

接入流程

1
添加小程序在控制台「我的小程序」添加,获得 APP_KEY。
2
放入 SDK 并初始化下载 SDK 放进项目,在 app.js 顶部、App() 之前初始化。
3
配置合法域名并验证把采集域名加入 request 合法域名;打开一次小程序,「接入检测」显示已接入。
4
上报业务事件用 fmeng.track 上报下单、支付等事件,再配置转化目标与漏斗。

下载 SDK

SDK 已发布到 npm(fmeng-mini-sdk),不依赖任何厂商模块,自动识别微信 wx / 支付宝 my / 抖音 tt / 百度 swan 运行时。推荐用 npm 安装,然后在微信开发者工具中执行「工具 - 构建 npm」:

bash
npm install fmeng-mini-sdk

不用 npm 的项目,可以直接下载文件放进小程序目录(如 libs/fmeng-mini-sdk.js),require 的路径改成对应文件:

约 4 KB(gzip),无依赖。

初始化

在 app.js 最顶部初始化。必须在 App() 之前执行,SDK 才能自动包装 App 与 Page 的生命周期:

javascript
// app.js
const { initMiniAnalytics } = require('fmeng-mini-sdk') // 下载文件接入时改为 './libs/fmeng-mini-sdk.js'
const fmeng = initMiniAnalytics({
appKey: 'APP_KEY', // 控制台「小程序设置 - 接入代码」里复制
endpoint: 'https://你的统计域名/collect/mini',
// platform 缺省按运行时推断;autoTrack 缺省开启
})
App({
fmeng, // 挂到 App 上,页面里用 getApp().fmeng
onLaunch() {},
})
正式环境需要在小程序管理后台「开发 - 开发设置 - 服务器域名」把采集域名加入 request 合法域名;开发者工具里可先勾选「不校验合法域名」。

可选参数:autoTrack(false 关闭或按项配置 { app, page, share, error, performance })、appVersion(缺省读取正式版版本号)、batchSize(每批条数,默认 10)、flushInterval(攒批毫秒数,默认 3000)、sessionTimeout(会话超时,默认 30 分钟无活动)。

自动采集

开启自动采集(默认)后,以下事件无需写代码:

事件触发时机关键字段
app_launchApp.onLaunchscene, query, page_route
app_showApp.onShow(冷启动与切回前台)scene, query, page_route
app_hideApp.onHide,随后立即发送duration(本次前台时长)
page_viewPage.onShowpage_route, query
shareonShareAppMessage / onShareTimeline(页面定义了才采集)share_source, page_route
errorApp.onError / onUnhandledRejectionmessage, stack, source
performancePage.onLoad → onReadypage_ready

每批请求还会带上机型、系统版本、网络类型与屏幕尺寸;访客 ID 与会话 ID 保存在本地存储,30 分钟无活动后开始新的访问。

手动上报

在页面里通过 getApp().fmeng 调用。自定义事件名 ≤64 个字符,属性最多 30 个,值为字符串、数字或布尔:

javascript
const fmeng = getApp().fmeng
// 业务事件:可用于事件分析、转化目标与漏斗
fmeng.track('add_cart', { sku: 'A100', price: 99 })
// 关联业务用户 ID;退出登录时传 null
fmeng.identify('user-10086')
// 端内性能:首屏、接口、setData、帧率(渲染完成时间已自动采集)
fmeng.performance('pages/goods/detail', { first_screen: 820, request: 180, set_data: 24, fps: 58 })
// 手动上报错误
fmeng.error('支付回调失败', { source: 'pay.js' })
// 关闭自动采集时手动上报生命周期
fmeng.appLaunch({ scene: options.scene, query: options.query })
fmeng.pageView('pages/index/index')
fmeng.appHide()

框架与多端

Taro、uni-app 等框架由框架自己调用 App() / Page(),SDK 改写不到全局函数时,用 wrapApp / wrapPage 包装选项对象:

javascript
// Taro(React)示例
import { initMiniAnalytics } from 'fmeng-mini-sdk'
export const fmeng = initMiniAnalytics({ appKey: 'APP_KEY', endpoint: 'https://你的统计域名/collect/mini' })
// 原生写法同样可用:App(fmeng.wrapApp({ ... }))、Page(fmeng.wrapPage({ ... }))

支付宝、抖音、百度小程序使用同一份 SDK,平台由运行时自动识别;场景值体系各不相同,报表按原值展示(场景值名称与分类目前只覆盖微信)。

指标口径

  • 打开次数:进入前台的次数(app_show),冷启动与从后台切回都算一次。
  • 访问人数:去重用户;新用户为首次打开时间落在所选范围内的用户。
  • 访问次数:会话数,30 分钟无活动后再打开算新的一次访问。
  • 次均停留:每次访问的前台时长(app_hide 上报的时长之和;缺失时用首末事件间隔)。
  • 跳出率:只浏览了 1 个页面的访问 ÷ 有页面浏览的访问。
  • 页面停留:同一次访问中下一次页面浏览或切到后台的时间减去本次浏览时间,单次最长计 30 分钟。
  • 留存:首次打开日期在所选范围内的新用户,第 N 天仍有打开的比例(N = 1~7、14、30)。
  • 性能:耗时类取 P75(75% 的样本不慢于该值),帧率取 P25(75% 的样本不低于该值)。
没有找到答案?登录控制台后可在右上角铃铛查看系统公告,也可以在关于页找到联系方式。