收费总览页面
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user