IndexedDB firebase-messaging-store中的这个“标记”有什么意义

qij5mzcb  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(2)|浏览(169)

我很困惑,我可以使用此令牌(存储在indexedDb中)订阅设备主题或向设备发送推送通知吗?此令牌的意义是什么?
此致
谢谢

kg7wmglp

kg7wmglp1#

该数据库很可能是Firebase Cloud Messaging客户端存储设备令牌的方式。但未对此进行记录,因此您不应依赖现有的该数据库条目。
相反,如果您希望使用标记(订阅主题或出于其他原因),请使用公共API获取标记:

messaging.getToken().then((currentToken) => {
  ...
});

上述 * 可以 * 从indexeddb读取令牌,但它也可以从对FCM服务器的调用中主动获取令牌。

brgchamk

brgchamk2#

正如弗兰克所说,

const localStorageKey = 'webpush';
messaging.getToken().then((currentToken) => {
if (localStorage.getItem(localStorageKey) !== currentToken) {
   localStorage.setItem(localStorageKey, currentToken); 
}
...
});

Firebase将令牌存储在 IndexedDB 中。当令牌刷新时,IndexedDb将获取更新后的令牌。


(第一次)

这些代币完全一样。
我的令牌改变是因为我的服务工作者在每次页面刷新时取消注册(在开发模式下这很奇怪)。然后它又重新注册。所以,如果服务工作者状态是未注册,firebase将创建新的令牌。但在生产模式下服务工作者工作得很好。

相关问题