diff --git a/index.html b/index.html index cf3fe35..129972d 100644 --- a/index.html +++ b/index.html @@ -4208,19 +4208,26 @@ window.PWAUtils = { } }, - // Метод для отмены отложенного промпта - cancelDelayedPrompt: () => { - if (window.pwaInstallPrompt) { - return window.pwaInstallPrompt.cancelDelayedPrompt(); - } - return false; - }, - // Метод для перезапуска отложенного промпта rescheduleDelayedPrompt: () => { - if (window.pwaInstallPrompt) { - window.pwaInstallPrompt.rescheduleDelayedPrompt(); + if (window.pwaInstallPrompt && window.pwaInstallPrompt.scheduleDelayedPrompt) { + // Отменяем существующий таймер и запускаем новый + if (window.pwaInstallPrompt.delayedPromptTimeout) { + clearTimeout(window.pwaInstallPrompt.delayedPromptTimeout); + } + window.pwaInstallPrompt.scheduleDelayedPrompt(); } + }, + + // Метод для отмены отложенного промпта + cancelDelayedPrompt: () => { + if (window.pwaInstallPrompt && window.pwaInstallPrompt.delayedPromptTimeout) { + clearTimeout(window.pwaInstallPrompt.delayedPromptTimeout); + window.pwaInstallPrompt.delayedPromptTimeout = null; + console.log('⏰ Delayed install prompt cancelled via PWAUtils'); + return true; + } + return false; } }; diff --git a/src/pwa/install-prompt.js b/src/pwa/install-prompt.js index 500165a..d7247dd 100644 --- a/src/pwa/install-prompt.js +++ b/src/pwa/install-prompt.js @@ -25,7 +25,7 @@ class PWAInstallPrompt { this.startInstallationMonitoring(); } - // Автоматический показ через 10 секунд для новых пользователей + // Автоматический показ модального окна через 10 секунд для новых пользователей this.scheduleDelayedPrompt(); console.log('✅ PWA Install Prompt initialized'); @@ -100,14 +100,21 @@ class PWAInstallPrompt { } scheduleDelayedPrompt() { - // Автоматический показ промпта через 10 секунд для новых пользователей + // Автоматический показ модального окна через 10 секунд для новых пользователей this.delayedPromptTimeout = setTimeout(() => { console.log('⏰ Checking if delayed install prompt should be shown...'); // Проверяем, нужно ли показывать промпт if (!this.isInstalled && this.shouldShowPrompt()) { - console.log('💿 Showing delayed install prompt after 10 seconds'); - this.showInstallOptions(); + console.log('💿 Showing delayed install modal after 10 seconds'); + + // Для iOS Safari показываем модальное окно с инструкциями + if (this.isIOSSafari()) { + this.showIOSInstallInstructions(); + } else { + // Для других устройств показываем fallback инструкции + this.showFallbackInstructions(); + } } else { console.log('💿 Delayed install prompt not shown - app is installed or dismissed'); } @@ -251,11 +258,14 @@ class PWAInstallPrompt { console.log('⏰ Delayed install prompt cancelled - showing prompt now'); } + // Для мобильных устройств показываем модальные окна, а не кнопки if (this.isIOSSafari()) { - this.showInstallButton(); + this.showIOSInstallInstructions(); } else if (this.isMobileDevice()) { - this.showInstallBanner(); + // Для мобильных показываем fallback инструкции вместо баннера + this.showFallbackInstructions(); } else { + // Для десктопа показываем кнопку this.showInstallButton(); } } @@ -417,18 +427,35 @@ class PWAInstallPrompt {