How can I adapt my Chrome packaged apps for ChromeOS Kiosks following their depreciation? I've begun experimenting with PWAs as an alternative, and while they work online and offline on various devices, when installed as a Kiosk app, they only function online, offline functionality is required. Any insights on resolving this issue?
Service Worker
const CACHE_NAME = 'cache-v1';
const urlsToCache = [
'/', // Include the root URL to handle HTML updates
'https://server'
'https://server/index.html',
'https://server/Main.css',
'https://server/Main.js',
// Add more resources as needed
];
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME)
.then((cache) => cache.addAll(urlsToCache))
.then(() => self.skipWaiting())
);
});
self.addEventListener('activate', (event) => {
event.waitUntil(
caches.keys().then((cacheNames) => {
return Promise.all(
cacheNames.map((cacheName) => {
if (cacheName !== CACHE_NAME) {
return caches.delete(cacheName);
}
})
);
})
);
});
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request)
.then((cachedResponse) => {
if (cachedResponse) {
return cachedResponse;
}
return fetch(event.request)
.then((response) => {
// Check if we received a valid response
if (!response || response.status !== 200 || response.type !== 'basic') {
return response;
}
const responseToCache = response.clone();
caches.open(CACHE_NAME)
.then((cache) => cache.put(event.request, responseToCache));
return response;
});
})
.catch(() => {
return caches.match(event.request);
})
);
});
Manifest
{
"name": "Kiosk App 0_0_3_1",
"description": "DESCRIPTION",
"version": "0.0.3.0",
"manifest_version": 3,
"start_url": "./Main.html",
"display": "standalone",
"background": {
"service_worker": "service-worker.js"
},
"icons": [
{
"src": "./icon48.png",
"sizes": "48x48",
"type": "image/png"
},
{
"src": "./icon128.png",
"sizes": "128x128",
"type": "image/png"
},
{
"src": "./icon144.png",
"sizes": "144x144",
"type": "image/png"
}
],
"screenshots": [
{
"src": "/logo.gif",
"sizes": "600x600",
"type": "image/gif",
"form_factor": "wide",
"label": "Application"
},
{
"src": "/logo.gif",
"sizes": "600x600",
"type": "image/gif",
"label": "Application"
}
],
"permissions": [
"storage",
"contentSettings",
"webRequest",
{
"host_permissions": [
"*://*.google.com/*",
"*://www.googleapis.com/*",
"*://*.googleusercontent.com/*",
]
}
],
"kiosk_enabled": true,
"kiosk": {
"required_platform_version": "13982",
"always_update": true
}
}