如何使用服务工作者存储用户标识

时间:2015-10-20 12:40:52

标签: javascript google-chrome service-worker

有没有办法在服务工作者中存储用户ID和可能的其他信息?

因此,当您向其发送推送通知时,它能够使用本地存储的信息并对其执行某些操作吗?

我尝试使用localStorage,但它似乎没有认出来。

因为我收到了这个错误:

Uncaught ReferenceError: localStorage is not defined

3 个答案:

答案 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();
...