【发布时间】:2020-10-08 12:45:50
【问题描述】:
【问题讨论】:
标签: firebase-cloud-messaging indexeddb
【问题讨论】:
标签: firebase-cloud-messaging indexeddb
这个数据库很可能是 Firebase 云消息传递客户端存储设备令牌的方式。然而,这没有记录,因此您不应依赖现有的此数据库条目。
如果您想使用令牌(订阅主题或其他原因),请使用public API to get the token:
messaging.getToken().then((currentToken) => {
...
});
上述可能从 indexeddb 读取令牌,但它也可能主动从对 FCM 服务器的调用中获取令牌。
【讨论】:
正如弗兰克所说,
const localStorageKey = 'webpush';
messaging.getToken().then((currentToken) => {
if (localStorage.getItem(localStorageKey) !== currentToken) {
localStorage.setItem(localStorageKey, currentToken);
}
...
});
Firebase 将令牌存储在索引数据库中。当令牌刷新时,IndexedDb 将获取更新后的令牌。
这些令牌完全相同。
我的令牌发生了变化,因为我的服务人员在每次页面刷新时都取消注册(在开发模式下很奇怪)。然后它再次注册。因此,如果服务工作者状态为未注册,firebase 将创建新令牌。但在生产模式下,Service Worker 工作得很好。
【讨论】: