有没有办法在服务工作者中存储用户ID和可能的其他信息?
因此,当您向其发送推送通知时,它能够使用本地存储的信息并对其执行某些操作吗?
我尝试使用localStorage,但它似乎没有认出来。
因为我收到了这个错误:
Uncaught ReferenceError: localStorage is not defined
答案 0 :(得分:4)
Service Workers because it does not have an asynchronous API中提供了本地存储空间。您可以使用IndexedDB代替,但不幸的是它有一个非常笨拙的API。
答案 1 :(得分:2)
最近希望完成同样的事情。仅仅通过UID,IndexedDB似乎太沉重了。但后来我意识到你可以通过服务工作者URL路径中的查询参数传递UID ...
navigator.serviceWorker.register(`/public/js/lib/service-worker.js?uid=${window.uid}`).then((reg) => {
...然后只需通过解析服务工作者中的location
来访问它。
答案 2 :(得分:1)
PARAMS en la llamda JS del servicio y recuperar el valor en self.location.search en service worker。
index.html
window.my_user_id = 16;
注册SW()
navigator.serviceWorker.register('PNServiceWorker.js?my_user_id='+window.my_user_id)
en el Service Worker, self.location.search 竞争者 el valor: ?uid=16
保存订阅服务器:
....
if (self.location.search !== undefined) {
body.params = self.location.search.substring(1); // my_user_id=16
}
var fetchdata = {
method: 'post',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(body),
}
var response = await fetch(strSubscriberURL, fetchdata);
return await response.json();
...