Да, возможно создать опросы с использованием PWA. PWA позволяет создавать интерактивные веб-приложения, которые могут работать офлайн и могут взаимодействовать с сервером для получения дополнительных данных или обновлений.
Что касается автоматической проверки наличия обновлений раз в час, то это тоже возможно реализовать в PWA. Для этого вам потребуется использовать функционал Service Worker, который является основным компонентом PWA.
Вы можете настроить Service Worker таким образом, чтобы раз в час он выполнял запрос к серверу для проверки наличия обновлений. Если сервер вернет значение 1, то можно добавить соответствующий бейдж на значок приложения.
Пример кода для настройки Service Worker:
```javascript
// Регистрация Service Worker
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('service-worker.js')
.then(function (registration) {
console.log('Service Worker зарегистрирован:', registration);
})
.catch(function (error) {
console.log('Ошибка при регистрации Service Worker:', error);
});
}
// Загрузка и установка новой версии приложения
self.addEventListener('install', function (event) {
event.waitUntil(
caches.open('my-app-cache').then(function (cache) {
return cache.addAll([
'/',
'/index.html',
'/css/style.css',
'/js/main.js'
]);
})
);
});
// Обновление приложения при появлении новой версии
self.addEventListener('fetch', function (event) {
event.respondWith(
caches.match(event.request).then(function (response) {
if (response) {
// Если запрос присутствует в кэше, вернуть его из кэша
return response;
} else {
// Если запрос не присутствует в кэше, выполнить запрос к серверу
return fetch(event.request);
}
})
);
});
```
В этом примере при регистрации Service Worker происходит загрузка и кэширование основных файлов приложения. При обращении к серверу с помощью fetch проверяется наличие запрошенных данных в кэше и либо возвращается из кэша, либо запрашивается с сервера.
Вы можете адаптировать этот пример под свои нужды, добавив проверку наличия обновлений и отображение бейджа в соответствии с вашими требованиями.