如何使用Service Worker存储用户ID

waz*_*waz 2 javascript google-chrome service-worker

有没有办法与服务工作者一起存储用户ID和其他信息?

这样,当您向其发送推送通知时,它就可以使用本地存储的信息并对其进行处理?

我尝试使用localStorage,但似乎无法识别它。

当我得到这个错误:

Uncaught ReferenceError: localStorage is not defined

Bre*_*hie 5

本地存储在Service Worker中不可用,因为它没有异步API。Service Worker设计为完全异步的,因此Service Worker上下文中没有可用的同步API。您可以改用IndexedDB,尽管遗憾的是它具有笨拙的API。


Roy*_*lak 5

最近想完成同样的事情。IndexedDB 只是传递 UID 就显得如此沉重。但后来我意识到你可以通过服务工作者 url 路径中的查询参数传递一个 UID ......

navigator.serviceWorker.register(`/public/js/lib/service-worker.js?uid=${window.uid}`).then((reg) => {
Run Code Online (Sandbox Code Playgroud)

...然后只需通过location在服务工作者内部解析来访问它。