收费总览页面

This commit is contained in:
zhouyanli
2026-08-07 16:36:05 +08:00
parent d8faa12083
commit 5b23e48e2c
12 changed files with 163 additions and 61 deletions

View File

@@ -4,6 +4,7 @@ import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
let pushCIDRetryCount = 0
const MAX_RETRY = 5
let retryTimer = null
let pushCIDFetching = false // 防止并发请求
// 应用启动时执行
onLaunch(() => {
@@ -13,27 +14,32 @@ onLaunch(() => {
})
// #ifdef APP-PLUS
// 只有 App 平台才获取 CID,延迟 1 秒等推送服务就绪
// 延迟 2 秒等推送服务完全就绪后再获取 CID
setTimeout(() => {
getPushCID()
}, 1000)
}, 2000)
// #endif
})
onShow(() => {
console.log('App Show')
// #ifdef APP-PLUS
// 每次回到前台都重新获取 CID,防止 CID 过期失效
// 从后台恢复时,如果 CID 已经获取过且未过期,不再重复请求
const existingCid = uni.getStorageSync('push_cid')
if (existingCid) {
console.log('已有缓存 CID,跳过重复获取')
return
}
pushCIDRetryCount = 0
setTimeout(() => {
refreshPushCID()
}, 500)
}, 1000)
// #endif
})
onHide(() => {
console.log('App Hide')
// 清除重试定时器,避免后台无效重试
pushCIDFetching = false
if (retryTimer) {
clearTimeout(retryTimer)
retryTimer = null
@@ -43,9 +49,12 @@ onHide(() => {
// 刷新 CID(每次 onShow 调用,比对更新)
function refreshPushCID() {
if (pushCIDFetching) return
const oldCid = uni.getStorageSync('push_cid') || ''
pushCIDFetching = true
uni.getPushClientId({
success: res => {
pushCIDFetching = false
const newCid = res.cid
if (!newCid) {
console.warn('获取到的 CID 为空,视为失败')
@@ -62,6 +71,7 @@ function refreshPushCID() {
}
},
fail: err => {
pushCIDFetching = false
console.error('获取推送 CID 失败', err)
scheduleRetry()
}
@@ -70,8 +80,11 @@ function refreshPushCID() {
// 启动时首次获取 CID(重试更积极)
function getPushCID() {
if (pushCIDFetching) return
pushCIDFetching = true
uni.getPushClientId({
success: res => {
pushCIDFetching = false
const cid = res.cid
if (!cid) {
console.warn('获取到的 CID 为空,视为失败')
@@ -84,6 +97,7 @@ function getPushCID() {
// TODO: 将 CID 上报到服务器
},
fail: err => {
pushCIDFetching = false
console.error('获取推送 CID 失败', err)
scheduleRetry()
}