我很困惑,我可以使用此令牌(存储在indexedDb中)订阅设备主题或向设备发送推送通知吗?此令牌的意义是什么?此致谢谢
kg7wmglp1#
该数据库很可能是Firebase Cloud Messaging客户端存储设备令牌的方式。但未对此进行记录,因此您不应依赖现有的该数据库条目。相反,如果您希望使用标记(订阅主题或出于其他原因),请使用公共API获取标记:
messaging.getToken().then((currentToken) => { ... });
上述 * 可以 * 从indexeddb读取令牌,但它也可以从对FCM服务器的调用中主动获取令牌。
brgchamk2#
正如弗兰克所说,
const localStorageKey = 'webpush'; messaging.getToken().then((currentToken) => { if (localStorage.getItem(localStorageKey) !== currentToken) { localStorage.setItem(localStorageKey, currentToken); } ... });
Firebase将令牌存储在 IndexedDB 中。当令牌刷新时,IndexedDb将获取更新后的令牌。
(第一次)
这些代币完全一样。我的令牌改变是因为我的服务工作者在每次页面刷新时取消注册(在开发模式下这很奇怪)。然后它又重新注册。所以,如果服务工作者状态是未注册,firebase将创建新的令牌。但在生产模式下服务工作者工作得很好。
2条答案
按热度按时间kg7wmglp1#
该数据库很可能是Firebase Cloud Messaging客户端存储设备令牌的方式。但未对此进行记录,因此您不应依赖现有的该数据库条目。
相反,如果您希望使用标记(订阅主题或出于其他原因),请使用公共API获取标记:
上述 * 可以 * 从indexeddb读取令牌,但它也可以从对FCM服务器的调用中主动获取令牌。
brgchamk2#
正如弗兰克所说,
Firebase将令牌存储在 IndexedDB 中。当令牌刷新时,IndexedDb将获取更新后的令牌。
(第一次)
这些代币完全一样。
我的令牌改变是因为我的服务工作者在每次页面刷新时取消注册(在开发模式下这很奇怪)。然后它又重新注册。所以,如果服务工作者状态是未注册,firebase将创建新的令牌。但在生产模式下服务工作者工作得很好。