重构PWA状态管理,统一检测方法并优化状态恢复逻辑

This commit is contained in:
jxxghp
2025-07-06 23:04:34 +08:00
parent 5d22cb84bf
commit 93ad0859e8
4 changed files with 203 additions and 145 deletions

View File

@@ -43,3 +43,29 @@ export const isPWA = async (): Promise<boolean> => {
}
return (window.navigator as any).standalone === true
}
// 同步检测PWA显示模式
export const isPWADisplayMode = (): boolean => {
return (
window.matchMedia('(display-mode: standalone)').matches ||
(window.navigator as any).standalone ||
document.referrer.includes('android-app://')
)
}
// 全面的PWA检测推荐使用
export const checkPWAStatus = async () => {
const hasServiceWorker = await isPWA()
const isStandaloneMode = isPWADisplayMode()
return {
// 是否有PWA功能Service Worker
hasPWAFeatures: hasServiceWorker,
// 是否在独立显示模式下运行
isStandaloneMode,
// 综合判断至少满足一个条件就认为是PWA环境
isPWAEnvironment: hasServiceWorker || isStandaloneMode,
// 完整的PWA体验既有功能又在独立模式下运行
isFullPWA: hasServiceWorker && isStandaloneMode,
}
}