From 15340dd550a52f9d02b163278294ae1ee0415d11 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 7 Jul 2025 14:25:12 +0000 Subject: [PATCH] Improve PWA install support detection for various platforms Co-authored-by: jxxghp --- src/composables/usePWAInstall.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/composables/usePWAInstall.ts b/src/composables/usePWAInstall.ts index 070d881f..05ffb30d 100644 --- a/src/composables/usePWAInstall.ts +++ b/src/composables/usePWAInstall.ts @@ -78,9 +78,17 @@ export function usePWAInstall() { installPrompt.value = null } - // 检查是否支持PWA安装 + // 检查是否支持 PWA 安装 + // 使用 "onbeforeinstallprompt" 事件的存在性来判断,而不是检查 + // BeforeInstallPromptEvent 构造函数(在运行时并不存在)。 + // 对于不触发 beforeinstallprompt 的 iOS Safari,同样允许通过 + // "添加到主屏幕" 的方式安装,因此这里也认为是支持的。 const isPWASupported = computed(() => { - return 'serviceWorker' in navigator && 'BeforeInstallPromptEvent' in window + const hasServiceWorker = 'serviceWorker' in navigator + const supportsInstallPromptEvent = 'onbeforeinstallprompt' in window + const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) + + return hasServiceWorker && (supportsInstallPromptEvent || isIOS) }) // 获取安装指南(针对不同平台)