синхронизация сервис-воркеров не сработает в случае в android chrome ЧТО IM MISSING ??? То же самое и здесь: Синхронизация фона JavaScript Прекращает работу, если страница загружается / обновляется в офлайн-режиме
- отключите USB-кабель для разработки (для инструмента Chrome Dev)
- нажмите кнопку Android Home
- нажмите кнопку питания для сна (черный экран)
- тогда я жду 5 минут (по крайней мере)
- затем я нажимаю кнопку питания, чтобы проснуться
- затем я нажимаю myapp, чтобы разбудить приложение (приложение не закрывается, но установлено в спящий режим)
- Затем я вставляю usb-кабель для отладки
- затем я нажимаю какую-нибудь кнопку, чтобы запустить синхронизацию, после этого я вижу ---
в консоли REGISTER, но событие SYNC не запускается, если я снова нажимаю кнопку питания (черный экран), а затем снова нажимаю кнопку питания - тогда он просыпается или я выключаю Wi-Fi, а затем включаю Wi-Fi - тогда он проснется
И затем в консоли отображается РЕГИСТРАЦИЯ и СИНХРОНИЗАЦИЯ.
ЕСЛИ я поливаю 30 минут, то зарегистрированная синхронизация удаляется
КЛИЕНТСКАЯ СТОРОНА JS
var id = 'background-sync-' + (new Date()).getTime() + $.uniqid(6);
let postData = {
'type': 'background-sync',
'uuid': id,
};
registration.active.postMessage(postData);
СТОРОНА СЛУЖБЫ РАБОТНИКА
self.addEventListener('message', function (event) {
//console.log('message=' + event.data.type);
if (event.data.type === 'background-sync') {
registerSync(event.data.uuid, event.data);
}
});
self.addEventListener('sync', function (event) {
console.log('SYNC');
//event.waitUntil(syncIt(event.tag));
});
function registerSync(uuid, data) {
if (data != undefined && data != null) {
let id = data.id;
//append data to storage
syncStore[id] = data;
//this is important
syncStore[id]['sending'] = false;
}
console.log('REGISTER');
//console.log(data);
//console.log(self.registration.sync.getTags());
self.registration.sync.register(uuid)
.then(function () {
})
.catch(function (err) {
return err;
});
}