Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
hello uni-app x
提交
8806dba3
H
hello uni-app x
项目概览
DCloud
/
hello uni-app x
通知
5995
Star
90
Fork
162
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
18
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello uni-app x
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
18
Issue
18
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
8806dba3
编写于
11月 12, 2024
作者:
M
mehaotian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 放开统计入口,新增统计测试例页面
上级
61b6099a
变更
9
显示空白变更内容
内联
并排
Showing
9 changed file
with
192 addition
and
305 deletion
+192
-305
App.uvue
App.uvue
+37
-37
main.uts
main.uts
+12
-12
pages.json
pages.json
+9
-0
pages/API/uni-stat/uni-stat.uvue
pages/API/uni-stat/uni-stat.uvue
+52
-0
uni_modules/uni-stat/plugin.uts
uni_modules/uni-stat/plugin.uts
+28
-12
uni_modules/uni-stat/readme.md
uni_modules/uni-stat/readme.md
+7
-182
uni_modules/uni-stat/utssdk/common/core/stat.uts
uni_modules/uni-stat/utssdk/common/core/stat.uts
+16
-7
uni_modules/uni-stat/utssdk/index.uts
uni_modules/uni-stat/utssdk/index.uts
+2
-2
uni_modules/uni-stat/utssdk/interface.uts
uni_modules/uni-stat/utssdk/interface.uts
+29
-53
未找到文件。
App.uvue
浏览文件 @
8806dba3
...
...
@@ -49,15 +49,15 @@
// 统计上报 - 应用启动
// #ifdef APP-ANDROID || APP-IOS || WEB
//
uni.report({
//
name: 'uni-app-launch',
//
options: res,
//
success(res_data) {
//
console.log(res_data);
//
}, fail(err) {
//
console.log(err);
//
}
//
})
uni.report({
name: 'uni-app-launch',
options: res,
success(res_data) {
console.log(res_data);
}, fail(err) {
console.log(err);
}
})
// #endif
// #ifdef APP
if (process.env.NODE_ENV !== 'development') { //真机运行可以注释此条件
...
...
@@ -90,14 +90,14 @@
// #ifdef APP-ANDROID || APP-IOS || WEB
// 统计上报 - 应用显示
//
uni.report({
//
name: 'uni-app-show',
//
success(res_data) {
//
console.log(res_data);
//
}, fail(err) {
//
console.log(err);
//
}
//
})
uni.report({
name: 'uni-app-show',
success(res_data) {
console.log(res_data);
}, fail(err) {
console.log(err);
}
})
// #endif
},
onHide: function () {
...
...
@@ -107,14 +107,14 @@
// #ifdef APP-ANDROID || APP-IOS || WEB
// 统计上报 - 应用进入后台
//
uni.report({
//
name: 'uni-app-hide',
//
success(res) {
//
console.log(res);
//
}, fail(err) {
//
console.log(err);
//
}
//
})
uni.report({
name: 'uni-app-hide',
success(res) {
console.log(res);
}, fail(err) {
console.log(err);
}
})
// #endif
},
// #ifdef APP-ANDROID
...
...
@@ -142,18 +142,18 @@
// #endif
onError(err : any) {
console.log('App onError', err)
//
// #ifdef APP-ANDROID || APP-IOS || WEB
//
// 统计上报 - 应用发生错误
//
uni.report({
//
name: 'uni-app-error',
//
options: err,
//
success(res) {
//
console.log(res);
//
}, fail(err) {
//
console.log(err);
//
}
//
})
//
// #endif
// #ifdef APP-ANDROID || APP-IOS || WEB
// 统计上报 - 应用发生错误
uni.report({
name: 'uni-app-error',
options: err,
success(res) {
console.log(res);
}, fail(err) {
console.log(err);
}
})
// #endif
},
methods: {
increasetLifeCycleNum() {
...
...
main.uts
浏览文件 @
8806dba3
// 仅测试 console.log 时机问题
import './test-main-console.uts'
// #ifdef APP-ANDROID || APP-IOS || WEB
//
import { uniStat } from '@/uni_modules/uni-stat/plugin.uts'
import { uniStat } from '@/uni_modules/uni-stat/plugin.uts'
// #endif
import App from './App.uvue'
import { createSSRApp } from 'vue'
//
//
统计配置
// const
collectItems = {
//
uniStatPageLog: true
//
}
// 统计配置
const uniStat
collectItems = {
uniStatPageLog: true
}
// const s
tatOptions = {
// debug: fals
e,
// collectItems:
collectItems,
//
}
const uniS
tatOptions = {
debug: tru
e,
collectItems: uniStat
collectItems,
}
export function createApp() {
const app = createSSRApp(App)
//
//
#ifdef APP-ANDROID || APP-IOS || WEB
// app.use(uniStat, s
tatOptions)
//
//
#endif
// #ifdef APP-ANDROID || APP-IOS || WEB
app.use(uniStat, uniS
tatOptions)
// #endif
// app.mixin({
// onReady() {
// setTimeout(() => {
...
...
pages.json
浏览文件 @
8806dba3
...
...
@@ -1217,6 +1217,15 @@
}
},
//
#ifdef
APP-ANDROID
||
APP-IOS
||
WEB
{
"path"
:
"pages/API/uni-stat/uni-stat"
,
"style"
:
{
"navigationBarTitleText"
:
"统计"
}
},
//
#endif
//
#ifdef
APP-ANDROID
||
APP-IOS
||
WEB
{
"path"
:
"pages/API/dialog-page/dialog-page"
,
"group"
:
"1,2,1"
,
...
...
pages/API/uni-stat/uni-stat.uvue
0 → 100644
浏览文件 @
8806dba3
<template>
<!-- #ifdef APP -->
<scroll-view style="flex:1">
<!-- #endif -->
<text class="instructions">
当前页面调用API均为模拟,请查看文档,在特定场景下使用以下 API。请在main.uts中设置统计debug配置为true,并点击按钮查控制台输出。
</text>
<button class="normal-button" type="default" @click="handleAppLunch">
创建本地通知消息 | createPushMessage
</button>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
</template>
<script>
export default {
data() {
return {
}
},
methods: {
handleAppLunch() {
const options = uni.getLaunchOptionsSync()
uni.report({
name: 'uni-app-launch',
options: options,
success(data) {
console.log(data);
}, fail(err) {
console.log(err);
}
})
}
}
}
</script>
<style>
.normal-button {
width: 100%;
}
.instructions {
margin-top: 10px;
margin-left: 10px;
margin-right: 10px;
background-color: #eee;
}
</style>
uni_modules/uni-stat/plugin.uts
浏览文件 @
8806dba3
...
...
@@ -7,13 +7,29 @@ const stat_instance = Stat.getInstance()
const lifecycle = defineMixin({
// onLaunch(options : OnLaunchOptions) { stat_instance.onLaunch(options, this) },
// @ts-ignore
onLoad() { stat_instance.onLoad(this) },
onLoad() {
if (this instanceof Page) {
stat_instance.onLoad(this)
}
},
// @ts-ignore
onShow() { stat_instance.onShow(this) },
onShow() {
if (this instanceof Page) {
stat_instance.onShow(this)
}
},
// @ts-ignore
onHide() { stat_instance.onHide(this) },
onHide() {
if (this instanceof Page) {
stat_instance.onHide(this)
}
},
// @ts-ignore
onUnload() { stat_instance.onUnload(this) },
onUnload() {
if (this instanceof Page) {
stat_instance.onUnload(this)
}
},
// onError(error : string) { stat_instance.onError(error) }
})
...
...
uni_modules/uni-stat/readme.md
浏览文件 @
8806dba3
# uni-app x 专用的 uni 统计插件
# uni统计 for uni-app x
>
> 注意:当前版本 uni 统计仅支持 uni-app x ,与 uni统计1.0和uni统计2.0 数据不兼容。
>
> uni统计for uni-app x需要单独下载使用,无需在 manifest.json 中配置开关,只需在前端代码中配置即可。
>
> 依赖 `Hbuilder X Alpha版 4.32+`。
## 配置 uni统计后台
与uni统计2.0后台配置一样,只是数据不互通,详情参考
[
创建 admin 项目
](
https://uniapp.dcloud.net.cn/uni-stat-v2.html#%E5%90%8E%E5%8F%B0%E6%8A%A5%E8%A1%A8%E9%85%8D%E7%BD%AE
)
## 前端配置
因为当前版本 uni统计是单独的插件,需要在插件市场中下载使用
[
下载uni统计
](
https://ext.dcloud.net.cn/plugin?name=uni-stat
)
### 配置说明
**uniStatistics说明**
|字段 | 类型 | 默认值 | 可选值 | 说明 |
|:-: |:-: |:-: |:-: |:-: |
|debug | Boolean |false | true/ false |开启统计调试模式 ,会产生大量日志,且会在开发阶段上报数据,应用发布请关闭此项 |
|reportInterval | Number |10 | - |前端数据上报周期 |
|collectItems |Object |- | - |采集项配置 |
**collectItems 采集项配置说明**
|字段 |类型| 默认值 |可选值 |说明|
|:-:|:-: |:-: |:-: |:-:|
|uniPushClientID| Boolean |false| true/false |是否开启推送PushClientID的采集|
|uniStatPageLog| Boolean |true| true/false |是否开启页面数据采集|
### 如何引用
在 main.uts 中 ,通过vue插件的方式加载 uni统计
```
js
import
App
from
'
./App.uvue
'
import
{
createSSRApp
}
from
'
vue
'
// 引入uni统计插件
import
{
uniStat
}
from
'
@/uni_modules/uni-stat/plugin.uts
'
// uni统计采集项配置
const
collectItems
=
{
uniStatPageLog
:
true
}
// uni统计基础配置
const
statOptions
=
{
debug
:
true
,
collectItems
:
collectItems
}
export
function
createApp
()
{
const
app
=
createSSRApp
(
App
)
// 载入uni统计插件 ,use 第二个参数不能为空,如需使用默认配置,请传入 {}
app
.
use
(
uniStat
,
statOptions
)
return
{
app
}
}
```
### 如何使用
因版本限制,uni统计无法自动采集应用相关的数据,如应用启动、进入后台、进入前台等信息,需要用户手动调用 uni.report() 来实现对应的数据采集。
**使用示例**
```
js
<
script
lang
=
"
uts
"
>
export
default
{
onLaunch
:
function
(
options
)
{
console
.
log
(
'
App Launch
'
)
uni
.
report
({
name
:
'
uni-app-launch
'
,
options
:
options
,
success
(
res
)
{
console
.
log
(
res
);
},
fail
(
err
)
{
console
.
log
(
err
);
}
})
},
onShow
:
function
()
{
console
.
log
(
'
App Show
'
)
uni
.
report
({
name
:
'
uni-app-show
'
,
success
(
res
)
{
console
.
log
(
res
);
},
fail
(
err
)
{
console
.
log
(
err
);
}
})
},
onHide
:
function
()
{
console
.
log
(
'
App Hide
'
)
uni
.
report
({
name
:
'
uni-app-hide
'
,
success
(
res
)
{
console
.
log
(
res
);
},
fail
(
err
)
{
console
.
log
(
err
);
}
})
},
onError
(
err
:
any
)
{
console
.
log
(
'
错误
'
);
uni
.
report
({
name
:
'
uni-app-error
'
,
options
:
err
,
success
(
res
)
{
console
.
log
(
res
);
},
fail
(
err
)
{
console
.
log
(
err
);
}
})
}
}
<
/script>
```
### 影响范围
`uni-app-launch`
是整个统计的入口,会采集应用启动的相关数据会影响的统计数据为:
-
日活
-
新增
-
总设备数
`uni-app-show`
是应用从后台进入前台调用,会影响:
-
日活
`uni-app-hide`
是应用从前台进入后台调用,会影响:
-
页面访问次数
### uni.report(OBJECT) 说明
**OBJECT参数说明**
|参数名 |类型 |必填 |说明 |
|:-: |:-: |:-: |:-: |
|name | String | 是 |事件名称 ,内置名称见下方
**name 内置事件说明**
|
|options | Any | 否 |事件自定义参数 |
|success | Function| 否 |接口调用成功的回调函数 |
|fail |Function | 否 |接口调用失败的回调函数 |
|complete | Function| 否 |接口调用结束的回调函数(调用成功、失败都会执行) |
**name 内置事件说明**
|事件名 |调用声明周期 |事件说明 |
|:-: |:-: |:-: |
|uni-app-launch | App.onLaunch| 应用启动 |
|uni-app-show | App.onShow | 应用进入前台 |
|uni-app-hide | App.onHide | 应用进入后台 |
|uni-app-error | App.onError | 应用发生错误 |
|title | any | 内容统计采集标题 |
**如何使用自定义上报**
```
js
// 参数支持字符串
uni
.
report
({
name
:
'
购买
'
,
options
:
'
购买成功
'
})
// 参数支持对象
uni
.
report
({
name
:
'
购买
'
,
options
:{
id
:
'
1000
'
,
name
:
'
上衣
'
,
price
:
'
998
'
,
msg
:
'
购买成功
'
// ...
}
})
```
uni统计
`uni-app x`
版本,
[
使用教程
](
https://uniapp.dcloud.net.cn/uni-stat-uniappx
)
uni_modules/uni-stat/utssdk/common/core/stat.uts
浏览文件 @
8806dba3
...
...
@@ -246,15 +246,24 @@ export class Stat {
return
}
if (name == 'uni-app-show') {
this.registerEvent(StatType.LifeCycleAppShow, null, null)
return
}
if (name == 'uni-app-hide') {
this.registerEvent(StatType.LifeCycleAppHide, null, null)
return
}
if (name == 'uni-page-show') {
this.report.pageShow(options as Page)
return
}
if (name == 'uni-page-hide') {
this.report.pageHide(options as Page)
return
}
if (name == 'uni-app-error') {
this.registerEvent(StatType.LifeCycleError, null, null, options)
...
...
uni_modules/uni-stat/utssdk/index.uts
浏览文件 @
8806dba3
...
...
@@ -25,5 +25,5 @@ export const report : Report = function (options : ReportOptions) {
}
export { Stat } from './common/core/stat.uts'
//
//
--- 导出统计类型 ---
// --- 导出统计类型 ---
export { UniStatOptions, UniStatCollectItemsOptions } from './interface.uts'
uni_modules/uni-stat/utssdk/interface.uts
浏览文件 @
8806dba3
export type ReportSuccess = {
/**
* 成功的详细信息
*/
errMsg : string,
}
...
...
@@ -9,12 +12,9 @@ export type ReportFail = {
errMsg : string,
}
export type ReportOptions = {
/**
* 自定义事件名称
* 内置名称(不允许覆盖):
* 自定义事件名称,内置名称(不允许覆盖):
* uni-app-launch : 应用启动
* uni-app-show : 应用进入前台
* uni-app-hide : 应用进入后台
...
...
@@ -34,28 +34,24 @@ export type ReportOptions = {
*/
fail ?: (res : ReportFail) => void
/**
* 接口调用成功的回调
* 接口调用成功的回调
函数
*/
complete ?: (res : any) => void
}
export type ReportResult = {
}
export type ReportResult = {}
/**
* 自定义事件信息
* @param {ReportOptions} options
*
*
* @tutorial https://uniapp.dcloud.net.cn/xxxx
* @platforms APP-IOS = ^9.0,APP-ANDROID = ^22
* @since 4.25
*/
export type Report = (options : ReportOptions) => void
interface Uni {
export
interface Uni {
/**
* 统计自定义事件
* @description 统计自定义事件上报
...
...
@@ -71,46 +67,21 @@ interface Uni {
* ```
* @remark
* - 该接口需要同步调用
* @uniPlatform {
* "app": {
* "android": {
* "osVer": "4.4.4",
* "uniVer": "3.6.11",
* "unixVer": "3.9.0"
* },
* "ios": {
* "osVer": "9.0",
* "uniVer": "3.6.11",
* "unixVer": "3.9.0"
* }
* }
* }
* @uniVueVersion 2,3 //支持的vue版本
*
*/
report(options : ReportOptions) : void,
}
// 统计插件参数类型
export type UniStatOptions = {
/* 是否开启debug模式,默认 false */
/**
* 是否开启debug模式
* @defaultValue false
*/
debug ?: boolean
/* 前端数据上报周期 ,默认 10s ,单位s */
/**
* 前端数据上报周期 ,单位s
* @defaultValue 10
*/
reportInterval ?: number
/* 多服务空间配置 */
uniCloud ?: UniCloudInitOptions
...
...
@@ -119,9 +90,15 @@ export type UniStatOptions = {
}
export type UniStatCollectItemsOptions = {
/* 是否开启推送PushClientID的采集,默认false */
/**
* 是否开启推送PushClientID的采集
* @defaultValue false
*/
uniPushClientID ?: boolean
/* 是否开启页面数据采集,默认true */
/**
* 是否开启页面数据采集
* @defaultValue true
*/
uniStatPageLog ?: boolean
}
...
...
@@ -194,7 +171,6 @@ export type PageParams = {
urlref_tt ?: string
}
/**
* 上传 unicloud 参数
*/
...
...
@@ -223,6 +199,9 @@ export type CustomUnicloudConfig = {
secretId ?: string
}
/**
* 事件类型
*/
export type EventParams = {
/** 事件名字*/
key : string
...
...
@@ -230,7 +209,6 @@ export type EventParams = {
value ?: string
}
/**
* 统计默认值
*/
...
...
@@ -330,7 +308,6 @@ export type StatDefault = {
em ?:string
}
/**
* 应用首次启动上报参数
*/
...
...
@@ -470,7 +447,6 @@ export type PageReportParams = {
t : number
/** 上报时机,参看 ReprotCstType */
cst ?: number
}
export type ErrorCallback = (is_err : boolean, errMsg : string) => void
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录