fix(pwa): guarantee service worker registration on readyState and head script for WebAPK minting
This commit is contained in:
1 parent
4e625acb1b
commit
369a6a6e04
2 files changed
+18
-3
No files matched your search
@@ -45,6 +45,15 @@ export default function RootLayout({
|
||||
<script
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: `
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('/sw.js', { scope: '/' })
|
||||
.then(function(reg) {
|
||||
console.log('[Everclone PWA] Early SW registered, scope:', reg.scope);
|
||||
})
|
||||
.catch(function(err) {
|
||||
console.warn('[Everclone PWA] Early SW registration failed:', err);
|
||||
});
|
||||
}
|
||||
window.__everclone_install_prompt = null;
|
||||
window.addEventListener('beforeinstallprompt', function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
@@ -21,16 +21,22 @@ export default function PwaRegister() {
|
||||
useEffect(() => {
|
||||
// 1. Register Service Worker for PWA installability and Share Target
|
||||
if (typeof window !== 'undefined' && 'serviceWorker' in navigator) {
|
||||
window.addEventListener('load', () => {
|
||||
const registerSW = () => {
|
||||
navigator.serviceWorker
|
||||
.register('/sw.js')
|
||||
.register('/sw.js', { scope: '/' })
|
||||
.then((registration) => {
|
||||
console.log('[Everclone PWA] Service Worker registered (scope):', registration.scope);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('[Everclone PWA] Service Worker registration failed:', error);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
if (document.readyState === 'complete' || document.readyState === 'interactive') {
|
||||
registerSW();
|
||||
} else {
|
||||
window.addEventListener('load', registerSW);
|
||||
}
|
||||
}
|
||||
|
||||
// 2. Capture the install prompt for Android / Desktop PWA installation
|
||||
|
||||
Reference in new issue
Block a user