繁体   English   中英

Firebase 令牌错误 TOO_MANY_REGISTRATIONS

[英]Firebase token error TOO_MANY_REGISTRATIONS

在阅读了 100 多个线程并进行了谷歌搜索后,我仍然对以下错误消息感到困惑。

目前,我正在使用 Firebase 云消息传递,在很短的时间内,我试图从 Firebase 获取我的令牌,以便能够将消息发送到我的服务器。 我试过这两种方法:

String token = FirebaseInstanceId.getInstance().getToken(mySenderId, "FCM");

String token = FirebaseInstanceId.getInstance().getToken();

所以在日志中,我读到这个:

E/FirebaseInstanceId: Token retrieval failed: TOO_MANY_REGISTRATIONS
                                 java.io.IOException: TOO_MANY_REGISTRATIONS

根据其他帖子和答案,这是“设备上安装的应用程序太多,这些应用程序已注册到 C2DM/GCM/FCM”的原因。 我还读到过“设备上安装的最多 100 个 GCM/FCM 注册应用程序”的限制。

但这不仅仅是真的,不是吗? 我的意思是,这可能是真的,但这并不是这个问题的全部答案。 我一直在使用不同的设备进行工作和测试,而我当前的设备没有在 FCM 上注册 100 个应用程序。 事实上,我的设备甚至根本没有安装 100 个应用程序,远非如此!

有什么方法可以管理以前注册的设备和令牌吗? 我试过运行以下代码但没有任何运气:

FirebaseInstanceId.getInstance().deleteInstanceId();

我试图确定来自不同来源(包括文档)的信息,但没有理解这实际上是如何工作的。 不久前,我在旧的 C2DM 和最近的 GCM 上遇到了同样的问题。 几天前我已经与 Firebase 合并使用它的功能而不是改进的想法,但它仍然回荡在我身上。

在与 Google 团队直接交谈后,我从他们那里得到了以下答案:

该团队确认并澄清了他们的数据表明该设备不是真正的普通设备,这是:

  1. 虚拟设备(模拟器)被重复使用太多次

  2. 以自动化方式用于测试过多应用程序的真实设备

  3. 已使用系统分区的 CLONE 映像自定义的真实设备,从不同设备克隆

如果这是一个真实的设备,解决它的最好方法是恢复出厂设置为设备的真实系统映像。 由于此设备目前卡在 2 或 3 中,您介意出厂重置设备并让我们知道问题是否仍然重现吗?

我在我的设备上执行了恢复出厂设置,问题消失了。 我仍然不明白这究竟是如何出现的以及为什么。

我怀疑这些测试来自 Google 机器人,我刚刚发布了我的应用程序,并且在 firebase 身份验证中出现了三个登录名,其中的电子邮件似乎是假的,例如 johnniefernandez.39356@gmail.com。 我怀疑是机器人的所有电子邮件都以句点和数字结尾,例如“.39356” 我来自巴西,我通过 Analytics 看到用户来自美国,只有 3 个,所以我知道它们是测试,因为我还没有为美国发布我的应用程序。

我在内部测试中收到这些错误报告给 firebase crashlytics,奇怪的是它发生在 5 个用户身上,这很奇怪,因为只有我可以访问该应用程序。 所以我认为这可能是谷歌的自动化测试机器人。 这是日志

Non-fatal Exception: io.invertase.firebase.crashlytics.JavaScriptError: [messaging/unknown] java.io.IOException: java.util.concurrent.ExecutionException: java.io.IOException: TOO_MANY_REGISTRATIONS
       at .getToken(address at index.android.bundle:1:905545)
       at .?anon_0_(address at index.android.bundle:1:1790016)
       at .next((native):0:0)
       at .asyncGeneratorStep(address at index.android.bundle:1:65498)
       at ._next(address at index.android.bundle:1:65769)
       at .tryCallOne(InternalBytecode.js:53:16)
       at .anonymous(InternalBytecode.js:139:27)
       at .apply((native):0:0)
       at .anonymous(address at index.android.bundle:1:191460)
       at ._callTimer(address at index.android.bundle:1:190409)
       at ._callReactNativeMicrotasksPass(address at index.android.bundle:1:190573)

更有趣的是,报告这些崩溃时我并没有在测试应用程序。

此外,当我在真实设备(低端和高端设备)上打开我的应用程序时,我没有遇到任何这些崩溃报告。

设备信息为:

Device
Brand:Google
Model:sdk_goog3_x86_64
Orientation: Portrait
RAM free: 2.01 GB
Disk free: 29.95 GB

Operating System
Version:Android 13
Orientation: Portrait
Rooted:No

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM