Pour l'instant, Chrome ne prend pas en charge la transmission de données supplémentaires pour les notifications push de GCM. Je dois donc exécuter un fetch
à partir de mon agent de service chaque fois que je reçois une notification push. Jusqu'ici tout va bien.Comment conserver les données dans un service worker
Mais: Je dois inclure un paramètre de requête dans ma requête http exécutée en fetch
. Comment puis-je indiquer mon paramètre au technicien de maintenance?
Ce que j'ai essayé jusqu'à présent
En utilisant postMessage
pour dire à mon service Worker le paramètre de demande:
var serviceWorkerData = {};
self.addEventListener('message', function (evt)
{
console.log('service worker received', evt.data);
serviceWorkerData = evt.data.myData;
});
self.addEventListener('push', function(event)
{
event.waitUntil
(
fetch("http://my.url", {
method: 'post',
body: 'myData=' + serviceWorkerData
}).then(function(response)
{
//...
})
);
});
Pourquoi cela ne fonctionne pas
Mais ce n'est pas persistant, c'est à dire après que je ferme mon navigateur et l'ouvre à nouveau, mon serviceWorkerData
est perdu. localStorage
n'est pas disponible chez les travailleurs de service, alors comment puis-je obtenir la persistance ici?
Fonctionne comme un charme, se sent encore un peu mal cependant. –
Qu'est-ce qui ne va pas? – Marco
Abuser IndexedDB pour quelque chose d'aussi facile que mon problème. –