Django PWA нельзя установить на Android
Я разработал простой проект django PWA (без опубликованного приложения django-pwa) для тестирования автономных функций. Я развернул свой проект на pythonanywhere: lecarrou.pythonanywhere.com. Когда я устанавливаю свое приложение на рабочий стол, оно становится доступным для установки (Chrome и Edge).
Но у меня возникают проблемы при попытке установки на мобильные устройства Android (Chrome, Edge, Firefox). Я протестировал множество конфигураций (последняя из которых соответствует структуре django-pwa), но у меня никогда не было возможности установить приложение, и событие beforeinstallprompt, похоже, не запускается. У меня есть build manifest.json, следующий "правилам". Я выполняю отладку с помощью Chrome DevTools :
- Активирован сервисный работник
- доступен манифест (отображение: автономное ; доступны значки ; start_url и scope: '/')
Вот столько тестов я провел :
- console.log(window.matchMedia('режим отображения: автономный)).'соответствует) возвращает значение false
- запускался вручную перед установкой, но не удалось выполнить
В течение нескольких дней я много раз открывал свое приложение в Chrome и переходил по нему.
Я понятия не имею, что происходит не так и как я могу решить эту проблему.
#serviceworker.js
const CACHE_NAME = "cdss-cache-v1";
const urlsToCache = [
'/',
'/cdss/select/',
'/cdss/screening/',
'/cdss/scoring/',
'/cdss/recommandation/',
'/static/css/styles.css',
'/static/js/script.js',
'/static/materialize/css/materialize.min.css',
'/static/materialize/js/materialize.min.js',
'/static/fonts/fonts.css',
'/static/fonts/lobster-v30-latin-regular.woff2',
'/static/fonts/material-icons-v143-latin-regular.woff2',
'/static/pwa/images/icons/72x72.png',
'/static/pwa/images/icons/96x96.png',
'/static/pwa/images/icons/128x128.png',
'/static/pwa/images/icons/144x144.png',
'/static/pwa/images/icons/152x152.png',
'/static/pwa/images/icons/192x192.png',
'/static/pwa/images/icons/384x384.png',
'/static/pwa/images/icons/512x512.png',
'/static/pwa/images/icons/favicon.ico',
// '/static/admin/'
// ajoute toutes les routes et fichiers nécessaires pour le mode offline
];
self.addEventListener("install", function(event) {
console.log("⚙️ Service Worker installé !");
event.waitUntil(
caches.open(CACHE_NAME)
.then(function(cache) {
return cache.addAll(urlsToCache);
})
);
});
self.addEventListener('activate', (event) => {
console.log("✅ Service Worker activé !");
});
self.addEventListener('fetch', (event) => {
console.log("🚀 Fetch event déclenché pour :", event.request.url);
event.respondWith(fetch(event.request).catch(() => new Response("⚠️ Erreur de requête interceptée par Service Worker")));
});
#файл manifest.json
{
"name": "CDSS Web",
"short_name": "CDSSWeb",
"description": "Clinical Decision Support System for TB",
"start_url": "/",
"scope": "/",
"display": "standalone",
"background_color": "#ffffff",
"theme_color": "#317EFB",
"icons": [
{
"src": "/static/pwa/images/icons/192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/static/pwa/images/icons/512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"screenshots": [
{
"src": "/static/pwa/images/screenshot1.png",
"sizes": "1080x1920",
"type": "image/png",
"form_factor": "wide"
},
{
"src": "/static/pwa/images/screenshot2.png",
"sizes": "1080x1920",
"type": "image/png"
}
],
"dir": "auto",
"lang": "en",
"orientation": "any",
"display_override": [
"standalone",
"window-controls-overlay",
"fullscreen"
],
"categories": [
"health"
]
}