最初,我有一个正在运行的应用程序,并成功接收了推送通知。我在firebase中重组了我们的项目,我们已经删除了该应用并将其重新添加到控制台(在同一项目中)。我重新下载了google-services.json
文件,并注意到一些变化,例如mobilesdk_app_id
对于我正在测试的特定应用程序包而言。
如果我使用新更改进行全新安装,则可以成功收到推送通知。但是,如果我安装了带有旧google-services.json
的先前版本并进行升级而没有先卸载,则不会收到任何通知。我还看到升级后,在FirebaseMessagingService -> onNewToken
方法中没有得到新令牌的回调。
是否可以调试此问题?由于json文件已更改,我是否可以强制Firebase给我新的令牌?我正在从控制台发送这些通知,并以正确的应用为目标。我对于为什么可以使用新的json文件进行全新安装而不能从以前的版本进行升级感到困惑。
答案 0 :(得分:0)
升级应用不会触发生成新的 Firebase 设备令牌。因此,旧令牌是使用旧的 google-services.json 文件生成的,然后永远不会生成新令牌。
您只需卸载应用程序并重新安装即可解决此问题,这会使用新的 google-services.json 文件生成新令牌。
但如果您不想要求您的用户卸载并重新安装您的应用程序,您可以使用 FirebaseInstanceId.getInstance().deleteInstanceId();
后跟 FirebaseInstanceId.getInstance().getToken();
以强制生成新令牌。您必须在与主线程不同的线程中执行此操作。按照 this stackoverflow answer