提交 eeb2ae01 编写于 作者: M mehaotian

Merge branch 'master' of github.com:dcloudio/unidocs-zh

# Conflicts:
#	docs/uni-stat-v2.md
......@@ -32,7 +32,7 @@ app端nvue专用组件。在app-nvue下,如果是长列表,使用list组件
> **注意**
> - 相同方向 `<list>` 或者 `<scroll-view>` 互相嵌套时,Android 平台子 `<list>` 不可滚动,iOS 可以,iOS 有Bounce效果, Android仅可滚动时有
> - `<list>` 需要显式的设置其宽高,可使用 position: absolute; 定位或 width、height 设置其宽高值。
> - list是区域滚动,不会触发页面滚动,无法触发pages.json配置的下拉刷新、页面触底onReachBottomDistance、titleNView的transparent透明渐变。
> - list是区域滚动,不会触发页面滚动,无法触发pages.json配置的下拉刷新、页面触底onReachBottomDistance、titleNView的transparent透明渐变、style的transparentTitle导航栏透明
> - Android 平台,因 `<list>` 高效内存回收机制,不在屏幕可见区域的组件不会被创建,导致一些内部需要计算宽高的组件无法正常工作,例如 `<slider>`、`<progress>`、`<swiper>`
#### 子组件
......
## uni统计2.0
uni统计2.0是基于uniCloud开发的开源、免费统计平台。
uni统计2.0 是基于 uniCloud 开发的开源、免费统计平台。
## 产品特色
`uni统计2.0``uni统计1.0`一样,均支持全域流量统计,无需在各端接不同的sdk、无需在不同后台查看数据。使用uni统计,一张报表可查看所有端(iOS、Android、H5及各家小程序)的运营数据。
`uni统计2.0``uni统计1.0`一样,均支持全域流量统计,无需在各端接不同的 sdk、无需在不同后台查看数据。使用 uni 统计,一张报表可查看所有端(iOS、Android、H5 及各家小程序)的运营数据。
相比`uni统计1.0``uni统计2.0`还有如下特色功能:
**1. 开源**
前端采集数据的SDK、云端接收数据的云函数、云端跑批统计的云函数、展示统计结果的管理报表,所有代码全部开源。
前端采集数据的 SDK、云端接收数据的云函数、云端跑批统计的云函数、展示统计结果的管理报表,所有代码全部开源。
**2. 私有部署**
使用传统`saas`类统计产品时,所有App数据都上报在统计厂商统一的数据库中,也就是中央化部署模式。
使用传统`saas`类统计产品时,所有 App 数据都上报在统计厂商统一的数据库中,也就是中央化部署模式。
`uni统计2.0`基于`uniCloud`实现,云函数、统计数据全部托管在开发者自己的服务空间中,开发者对自己的统计数据拥有完整的控制权。
**3. 自由定制**
`uni统计2.0`所有代码是完全开源的,开发者可在开源代码基础上,轻松扩展统计维度,自由定制报表样式。
**uni统计新老版本对比**
**uni 统计新老版本对比**
|功能|uni统计1.0|uni统计2.0|
|:-:|:-:|:-:|
|是否开源|否|是|
|是否免费|是|是|
|部署方式|中央部署|私有部署|
|定制方式|不可定制|方便定制|
| :-: | :-: | :-: |
|是否开源 |否|是|
|是否免费 |是|是|
|部署方式 |中央部署|私有部署|
|定制方式 |不可定制|方便定制|
## 前端配置
......@@ -38,16 +38,16 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。
### 全局设置
` manifest.json -> uniStatistics` 下的 `enable` 字段设置为 `true|false` ,来开启关闭 `uni统计`
`manifest.json -> uniStatistics` 下的 `enable` 字段设置为 `true|false` ,来开启关闭 `uni统计`
设置 `version` 属性为 `"2"` 来开启新版统计
```js
//...
"uniStatistics": {
"enable": true,//全局开启
"version": "2" // 开启新版uni统计,值为字符串
},
//...
"uniStatistics": {
"enable": true,//全局开启
"version": "2" // 开启新版uni统计,值为字符串
},
//...
```
......@@ -56,11 +56,11 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。
`uniStatistics` 支持分平台设置,比如若需仅开启微信平台的 `uni统计`,则在`mp-weixin`节点下设置 `uniStatistics ->enable` 即可,如下:
```js
//...
"mp-weixin":{
"uniStatistics": {
"enable": true //微信平台开启统计
}
//...
"mp-weixin":{
"uniStatistics": {
"enable": true //微信平台开启统计
}
}
```
......@@ -70,33 +70,31 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。
- 应用在运行、调试时不会上报统计数据,仅在发行后,并启动新版的App、h5、小程序,才会上报数据。
- 如需在开发运行阶段调试查看上报数据 ,可开启 debug 模式 ,后文查看详情
:::
### 域名白名单
由于各家小程序对可访问的域名要配置白名单,否则无法联网。
注意选择对应的服务商域名(文章后面章节会有服务空间相关配置)
|服务提供商| request合法域名|
|:-:|:-:|
|阿里云 |api.bspapp.com |
|腾讯云 |tcb-api.tencentcloudapi.com|
| 服务提供商 | request 合法域名 |
| :--------: | :-------------------------: |
| 阿里云 | api.bspapp.com |
| 腾讯云 | tcb-api.tencentcloudapi.com |
## 统计管理后台配置
新版统计与之前不同的是需要用户自行管理部署统计后台,使用了 [uni-admin](https://uniapp.dcloud.io/uniCloud/admin.html#uni-admin-%E6%A1%86%E6%9E%B6-%E5%8E%9F%E5%90%8D-unicloud-admin)
来管理 `uni统计`数据。
### 创建 uni-admin
使用 `HBuilderX 3.4.x `版本新建 `uni-app` 项目,选择 `uni-admin` 项目模板,如下图:
使用 `HBuilderX 3.4.x`版本新建 `uni-app` 项目,选择 `uni-admin` 项目模板,如下图:
![download-admin](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/80406bf5-f96a-4a66-9430-a339a4054c96.png)
创建完成后,可以跟随`云服务空间初始化向导`初始化项目,创建并绑定云服务空间
![download-admin](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/7fd34451-2313-4d01-8caf-39f277780642.png)
### 运行 uni-admin
接下来所有操作都是基于新创建的 `uni-admin` 项目来操作
......@@ -104,11 +102,12 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。
### 目录结构
注意:创建完成后确保 `uniCloud -cloudfunctions` 目录下包含了 `uni-stat-report` 云函数
![目录结构](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/c20bd7bf-d52e-4038-80d6-a2e76c80a091.png
)
![目录结构](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/c20bd7bf-d52e-4038-80d6-a2e76c80a091.png)
### 配置 uni-id
打开`uni-config-center` 配置 `uni-id``passwordSecret``tokenSecret`字段 (测试期间跳过本条也可以)
- `passwordSecret` 字段 ,用于加密密码入库的密钥
- `tokenSecret` 字段 ,为生成 token 需要的密钥
......@@ -147,13 +146,14 @@ uni统计2.0是基于uniCloud开发的开源、免费统计平台。
## 关联服务空间
客户端和管理后端都已经准备好了,但是现在还不能从客户端直接上报数据到管理后端,所以需要关联客户端和管理后端的服务空间
1. 在客户端项目右键并选择 `创建uniCloud云开发环境 -> 阿里云|腾讯云`
![关联前后台数据](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/b2ad84ed-a69a-43dc-b8d1-6efaafd96a14.png)
2.`uniCloud`目录右键并选择`关联云服务空间或项目`,在打开的窗口中选择上一节`uni-admin`关联的服务空间(两个项目务必关联同一个服务空间,且uni-admin中所有云函数、公共模板等都已经上传部署到该服务空间)
2.`uniCloud`目录右键并选择`关联云服务空间或项目`,在打开的窗口中选择上一节`uni-admin`关联的服务空间(两个项目务必关联同一个服务空间,且 uni-admin 中所有云函数、公共模板等都已经上传部署到该服务空间)
![关联前后台数据](https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f184e7c3-1912-41b2-b81f-435d1b37c7b4/14744bf3-c88e-4408-b2fa-0ecf0dcf4fe1.png)
......@@ -271,56 +271,55 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 `
2. 分别在数据`上报数据接收器(uni-stat-receiver)``定时任务云函数(uni-stat-cron)`下的`package.json`文件中添加redis拓展库。
3. 重新上传部署数据`上报数据接收器(uni-stat-receiver)``定时任务云函数(uni-stat-cron)``配置中心(uni-config-center)`
``` javascript
```javascript
//配置uni-stat-receiver的redis拓展库
{
"name": "uni-stat-receiver",
"dependencies": {
"uni-id": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id",
"uni-stat": "file:../common/uni-stat"
},
"extensions": {
"uni-cloud-jql": {},
"uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。
}
"name": "uni-stat-receiver",
"dependencies": {
"uni-id": "file:../../../../uni-id/uniCloud/cloudfunctions/common/uni-id",
"uni-stat": "file:../common/uni-stat"
},
"extensions": {
"uni-cloud-jql": {},
"uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。
}
}
//配置uni-stat-cron的redis拓展库
{
"name": "uni-stat-cron",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"uni-stat": "file:../common/uni-stat"
},
"extensions": {
"uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。
},
"cloudfunction-config": {
"concurrency": 1,
"memorySize": 512,
"timeout": 600,
"triggers": [
{
"name": "uni-stat-cron",
"type": "timer",
"config": "0 0 * * * * *"
}
]
}
"name": "uni-stat-cron",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"uni-stat": "file:../common/uni-stat"
},
"extensions": {
"uni-cloud-redis": {} // 配置为此云函数开启redis扩展库,值为空对象留作后续追加参数,暂无内容。如拷贝此配置项到package.json文件,切记去除注释。
},
"cloudfunction-config": {
"concurrency": 1,
"memorySize": 512,
"timeout": 600,
"triggers": [
{
"name": "uni-stat-cron",
"type": "timer",
"config": "0 0 * * * * *"
}
]
}
}
```
### 定时任务配置说明
`cron` 参数用于配置定时任务触发时间,一般无需修改此项。
......@@ -347,12 +346,12 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 `
**阿里云服务空间开启步骤:**
1. 因阿里云服务空间默认不支持分钟级定时器,必须先向DCloud申请分钟级定时器后再开启。[申请方式](https://uniapp.dcloud.io/uniCloud/price.html#aliyun)
2. 修改uni统计配置项将`cronMin`参数的值改为`true`
1. 因阿里云服务空间默认不支持分钟级定时器,必须先向 DCloud 申请分钟级定时器后再开启。[申请方式](https://uniapp.dcloud.io/uniCloud/price.html#aliyun)
2. 修改 uni 统计配置项将`cronMin`参数的值改为`true`
3. 修改`定时任务云函数(uni-stat-cron)`下的`package.json`文件中的触发器配置。
4. 重新上传部署`定时任务云函数(uni-stat-cron)``配置中心(uni-config-center)`
``` javascript
```javascript
//config选项为阿里云定时器的cron表达式 将原小时级表达式 "config": "0 0 * * * * *" 更改为分钟级表达式 "config": "0 * * * * * *" 后重新上传部署云函数即可.
"cloudfunction-config": {
"concurrency": 1,
......@@ -370,11 +369,11 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 `
**腾讯云服务空间开启步骤:**
1. 修改uni统计配置项将`cronMin`参数的值改为`true`
1. 修改 uni 统计配置项将`cronMin`参数的值改为`true`
2. 修改`定时任务云函数(uni-stat-cron)`下的`package.json`文件中的触发器配置。
3. 重新上传部署`定时任务云函数(uni-stat-cron)``配置中心(uni-config-center)`
``` javascript
```javascript
//config选项为阿里云定时器的cron表达式 将原小时级表达式 "config": "0 0 * * * * *" 更改为分钟级表达式 "config": "0 * * * * * *" 后重新上传部署云函数即可.
"cloudfunction-config": {
"concurrency": 1,
......@@ -401,15 +400,17 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 `
|checkTime|错误检测间隔时间,单位`分钟`。|
### 日志清理配置说明
`cleanLog`参数用于配置定时清理过期的日志,减少数据库数据的存储量,提升uni统计性能。注意:因为留存统计的需要,基础会话日志和用户会话日志要至少保存31天的日志,否则会对留存统计造成影响。
`cleanLog`参数用于配置定时清理过期的日志,减少数据库数据的存储量,提升 uni 统计性能。注意:因为留存统计的需要,基础会话日志和用户会话日志要至少保存 31 天的日志,否则会对留存统计造成影响。
|参数|说明|
| :-: |:-:|
|open|是否开启日志清理:true:是;false:否|
|reserveDays|各项日志的保留天数配置,参数格式:`日志类型:保留天数`,例如: `sessionLog:31`代表保留31天的会话日志,保留天数设置为0时表示永久保留(此举会累积大量无用数据,不推荐)|
**目前可配置的日志类型有:**
|字段|说明|
......@@ -431,12 +432,99 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 `
## 开源代码解读
### 前端SDK说明
uni-app 框架内置
### uni-admin说明
**前端页面结构**
为了突出目标,仅注释出 uni 统计相关的文件夹及文件,其余与普通 uni-app 项目相同。新增页面可参考 uni-stat 中相似页面。
```bash
├── cloudfunctions
├── common # 样式
│ │── uni.css # 公共样式
│ └── uni-icons.css # icon样式
├── components # 自定义组件
├── js_sdk # js sdk
│ └── uni-stat # uni统计相关工具方法
│ └── util.js
├── pages # 页面
│ └── uni-stat # uni统计页面
│ │── channel # 渠道(app)
│ │ │── channel.vue # 页面(下同)
│ │ └── fieldsMap.js # 字段配置(下同)
│ │── device # 设备统计
│ │ │── activity # 渠道/场景分析
│ │ │ │── activity.vue
│ │ │ └── fieldsMap.js
│ │ │── comparison # 平台对比
│ │ │ │── comparison.vue
│ │ │ └── fieldsMap.js
│ │ │── overview # 今日概览
│ │ │ │── overview.vue
│ │ │ └── fieldsMap.js
│ │ │── retention # 留存
│ │ │ │── retention.vue
│ │ │ └── fieldsMap.js
│ │ │── stickiness # 粘性
│ │ │ │── stickiness.vue
│ │ │ └── fieldsMap.js
│ │ └── trend # 趋势分析
│ │ │── trend.vue
│ │ └── fieldsMap.js
│ │── error # 错误分析
│ │ │── error.vue
│ │ └── fieldsMap.js
│ │── event # 事件分析
│ │ │── event.vue
│ │ └── fieldsMap.js
│ │── index # 统计首页
│ │ │── index.vue
│ │ └── fieldsMap.js
│ │── page-ent # 入口页
│ │ │── page-ent.vue
│ │ └── fieldsMap.js
│ │── page-res # 受访页
│ │ │── page-res.vue
│ │ └── fieldsMap.js
│ │── scene # 场景值(小程序)
│ │ │── scene.vue
│ │ └── fieldsMap.js
│ └── user # 用户统计
│ │── activity # 渠道/场景分析
│ │ │── activity.vue
│ │ └── fieldsMap.js
│ │── comparison # 平台对比
│ │ │── comparison.vue
│ │ └── fieldsMap.js
│ │── overview # 今日概览
│ │ │── overview.vue
│ │ └── fieldsMap.js
│ │── retention # 留存
│ │ │── retention.vue
│ │ └── fieldsMap.js
│ │── stickiness # 粘性
│ │ │── stickiness.vue
│ │ └── fieldsMap.js
│ └── trend # 趋势分析
│ │── trend.vue
│ └── fieldsMap.js
├── static
├── store
├── admin.config.js
├── App.vue
├── main.js
├── mainfest.json
├── pages.json
├── postcss.config.js
└── uni.scss
```
### 服务端说明
** 1. 服务端构成**
**1. 服务端构成**
- `uni-config-center/uni-stat 配置模块`:给`uni-stat 公共模块`提供运行必要的配置参数。
- `uni-stat 公共模块`:数据处理模块,包括收集上报数据的处理入库及定时任务的数据处理。
- `uni-stat-receiver 上报数据接收器`:接收客户端上报数据并转发给公共模块处理。注意:该云对象依赖于`uni-id`公共模块。
......@@ -451,7 +539,10 @@ uni统计配置项存放于uniCloud配置中心(`uni-config-center`)下的 `
- `index.js文件` 代理入口文件。
## 扩展和自定义方式
<!-- ## 扩展和自定义方式
uni统计提供了基础的数据报表,如不能达到预期的数据采集,可以在客户端通过 `uni.report(eventKey,param)` 自由上报数据 ,并通过 uni-admin 增加页面 ,自行统计数据。
### uni.report 基础用法
......@@ -476,14 +567,6 @@ uni.report('购买',{
})
```
### 完整扩展示例
**使用 uni.report(eventKey,param) 上报数据**
**uni-admin增加展示页面**
**获取数据**
**增加详情页面**
-->
......@@ -16,7 +16,7 @@ JQL语法相关文档已移至:[JQL语法](uniCloud/jql.md)
`DB Schema`中,配置数据操作的权限和字段值域校验规则,阻止前端不恰当的数据读写。详见:[DB Schema](https://uniapp.dcloud.net.cn/uniCloud/schema)
如果想在数据库操作之前或之后需要在云端执行额外的动作(比如获取文章详情之后阅读量+1),`clientDB`提供了action云函数机制。在HBuilderX项目的`cloudfunctions/uni-clientDB-actions`目录编写上传js,参考:[action](uniCloud/jql?id=action)
如果需要数据库操作之前或之后,云端执行关联逻辑(比如获取文章详情后,文章阅读量+1),`clientDB`提供了action云函数机制。在HBuilderX项目的`cloudfunctions/uni-clientDB-actions`目录编写上传js,参考:[action](uniCloud/jql?id=action)
**注意**
......
......@@ -11,7 +11,7 @@
- sql是一种字符串表达式,写法形如:
```
select * from table1 where field1="123"
select * from table1 where field1="value1"
```
- nosql是js方法+json方式的参数,写法形如:
......@@ -19,7 +19,7 @@ select * from table1 where field1="123"
```js
const db = uniCloud.database()
let res = await db.collection('table').where({
field1: '123'
field1: 'value1'
}).get()
```
......@@ -42,7 +42,7 @@ sql写法,对js工程师而言有学习成本,而且无法处理非关系型
如果要表达`或`关系,需要用`or`方法,写法更复杂
```js
field1:dbCmd.gt(4000).or(dbCmd.gt(6000).and(dbCmd.lt(8000)))
field1:dbCmd.gt(0).or(dbCmd.lt(-5))
```
2. nosql的联表查询写法,比sql还复杂
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册