夜猫子的知识栈 夜猫子的知识栈
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夜猫子

前端练习生
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 封装路由跳转
  • 调用微信小程序位置插件
  • Uniapp请求的ts封装
  • I18国际化
  • uniapp路径与base64互相转化
  • 使用webview渲染html字符串
  • 移动端IOS安全区兼容
  • H5调用微信jssdk
  • uni统计使用
    • 基础使用
      • 1.开启统计
      • 2.添加白名单
      • 3.部署后台 admin 项目
      • 4.关联服务空间
      • 5.添加应用
    • 拓展
      • 1.节约资源
      • 2.内容统计
      • 3.采集的数据
      • 3.用户统计
      • 4.支付统计
  • 原生三方SDK集成探索
  • UNiAPP中使用虚拟列表
  • 《Uniapp》笔记
夜猫子
2025-11-12
目录

uni统计使用

# 基础使用

# 1.开启统计

在业务 App 项目的 manifest.json 里,选择 uni统计配置 项,根据需求,选择开通 uni统计 ,勾选 2.0 开启新版统计。

可选择开启调试模式将上报数据打印到控制台。

将 manifest.json -> uniStatistics 下的 debug 字段设置为 true|false ,可以开启关闭 uni统计调试模式

# 2.添加白名单

如果是小程序之类的需要为部署的 uni 统计对应的云厂商域名配置白名单。

# 3.部署后台 admin 项目

两种方式:

  1. 插件市场通过 uni-admin (opens new window) 插件一键部署在你的 uniapp 服务空间上。
  2. 手动创建项目,并完成关联服务空间、部署云端资源等操作。

# 4.关联服务空间

# (1)创建云开发环境

右键并选择 创建uniCloud云开发环境 -> 支付宝云|阿里云|腾讯云(数据量大推荐使用支付宝云 + 扩展数据库 (opens new window)),会创建出一个云服务目录。

# (2)为云环境关联云服务

目录右键并选择关联云服务空间或项目,在打开的窗口中选择对应uni-admin项目关联的服务空间

# 5.添加应用

运行 uni-admin 项目 添加要统计的 uniapp 应用,然后默认配置每个整点零几分就可以看到数据了

# 拓展

# 1.节约资源

  • 开启 redis 缓存:先在服务空间内购买 redis ,然后修改 uni统计配置项,redis->false

  • 关闭内容统计:pageDetailStat->false

  • 关闭实时统计:realtimeStat->false

    uni统计配置项:uni-config-center目录下右键下载公共模块,在 uni-stat/config.json 中修改配置

  • 修改上报时间:默认上报时间为 10 秒,可以增加上报时间间隔

    在 uni统计配置 -> 前端数据上报周期 中修改

# 2.内容统计

内容统计是统计制定页面的访问、分享等数据,需要制定访问规则,需要 url 携带特定的参数。

  1. 页面 不同 url 表示一个不同的页面,如在 pages.json --> pages 下的每一项都表示一个不同页面

  2. 内容页 相同的 url,不同的参数值表示一个内容页面,即同一个页面会有不同的内容统计(目的) 比如统计某个商品详情的访问情况,"商品url"?pid=="pid123",针对pid为pid123的商品详情地址统计的数据就是需要的结果

  3. 内容名称 可以让用户直观感受的名称,如某个商品的详情,某个新闻的描述可通过一下方式定义

    • 采集原生导航栏标题(通过 pages.json 获取)
    • 采集 uni.setNavigationBarTitle() (opens new window)
    • 采集 uni.reprot() (opens new window)

# 3.采集的数据

在应用中上报的数据可以在绑定的服务空间->云数据库中找到。

用户统计和页面统计:uni-stat-result 表中。

支付统计:uni-stat-pay-result 表中。

自定义事件(通过 uni.report 上报):uni-stat-event-logs 表中。

image-20251121093654512

查询表中数据:(类似 ORM(对象关系映射)的链式调用风格)

const db = uniCloud.database();
db.collection("uni-stat-result")
	.get()
	.then((res) => {
		console.log("uni-stat-result 全部数据:", res.result.data);
	})
	.catch((err) => {
		console.error("查询失败:", err);
	});
1
2
3
4
5
6
7
8
9

更复杂的查询:

比如按照时间和维度分组计算统计数据,并获取每组的最后开始时间

db.collection(this.tableName)
  .where(`start_time==19700000`)
  .field(
    `${stringifyField(
      fieldsMap
    )}, dimension, stat_date.date_str as stat_time, start_time`
  )
  .groupBy(`stat_time, dimension`)
  .groupField(
    stringifyGroupField(fieldsMap) + ",last(start_time) as start_time"
  )
  //.field(`pay_total_amount,pay_order_count, dimension, start_time`)
  .get()
  .then((res) => {
    console.log(res);
  });

// 对应的MySQL语法
SELECT [field指定的字段]
FROM [this.tableName对应的表名]
WHERE [where条件]
GROUP BY [groupBy指定的字段]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 3.用户统计

需在uni-stat/config.json中开启 pageDetailStat,开启后会产生大量日志,请按需开启。

用户数据存在于服务空间 uni-id-users 表中。

用户统计依赖 uni-id 体系,如果一定要使用 uni-admin 的用户统计,要么使用 uni-id 用户体系,要么你自己在业务中将用户数据统计好,更新到 uni-stat-result 表中。或者通过 uni.report自主上报或者和后端约定接口,然后后台自主实现。

迂回方案:

维护两套用户体系,用户注册时同时为其注册 uni-id,用户登录时判断 uni-id 中是否存在对应用户没有则为其注册并静默登录。优点是侵入少可维持现状,缺点是承担维护两份用户体系的成本。

1.修改云函数,取消注册校验

2.提取出注册、登录、退出方法

const uniIdCo = uniCloud.importObject("uni-id-co", {
  // 是否自动弹窗
  errorOptions: {
    type: "toast",
  },
});
// 登录
uniIdCo
  .login({
    username: "user1",
    password: "123456@user1",
  })
  .then((e) => {});
// 注册
uniIdCo
  .registerUser({
    username: "user1",
    password: "123456@user1",
    password2: "123456@user1",
  })
  .then((e) => {});
// 退出
async function logout() {
  // 1. 已经过期就不需要调用服务端的注销接口	2.即使调用注销接口失败,不能阻塞客户端
  if (uniCloud.getCurrentUserInfo().tokenExpired > Date.now()) {
    try {
      await uniIdCo.logout();
    } catch (e) {
      console.error(e);
    }
  }
  uni.removeStorageSync("uni_id_token");
  uni.setStorageSync("uni_id_token_expired", 0);
  this.setUserInfo(
    {},
    {
      cover: true,
    }
  );
  uni.$emit("uni-id-pages-logout");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# 4.支付统计

需要接入 uni-pay,且 uni-pay 部分依赖于 uni-id 体系。

编辑 (opens new window)
上次更新: 2026/1/9 14:58:42
H5调用微信jssdk
原生三方SDK集成探索

← H5调用微信jssdk 原生三方SDK集成探索→

最近更新
01
UNiAPP中使用虚拟列表
01-09
02
原生三方SDK集成探索
11-12
03
前端性能优化
11-04
更多文章>
Copyright © 2019-2026 Study | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式