Firebase令牌错误TOO_MANY_REGISTRATIONS

Fat*_*ajk 8 android firebase google-cloud-messaging firebase-cloud-messaging

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

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

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

String token = FirebaseInstanceId.getInstance().getToken();
Run Code Online (Sandbox Code Playgroud)

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

E/FirebaseInstanceId: Token retrieval failed: TOO_MANY_REGISTRATIONS
                                 java.io.IOException: TOO_MANY_REGISTRATIONS
Run Code Online (Sandbox Code Playgroud)

根据其他帖子和答案,这是"在C2DM/GCM/FCM上注册的设备上安装的应用程序太多"的原因.我还读到"设备上安装了Max 100 GCM/FCM注册应用程序"的限制.

但这不仅仅是真的,是吗?我的意思是,这可能是真的,但这不是这个问题的全部答案.我一直在使用不同的设备进行测试,而我目前的设备没有在FCM注册100个应用程序.事实上,我的设备甚至没有安装100个应用程序,远离它!

有没有办法管理以前注册的设备和令牌?我试图运行以下代码,没有任何运气:

FirebaseInstanceId.getInstance().deleteInstanceId();
Run Code Online (Sandbox Code Playgroud)

我试图确定来自不同来源(包括文档)的信息,但没有理解这实际上是如何工作的.我刚才和旧的C2DM有过同样的问题,最近也和GCM有过同样的问题.几天前我和Firebase合并使用了它的功能而不是改进的想法,但它仍然回应着我.

Fat*_*ajk 12

在与Google团队直接对话后,我得到了以下答案:

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

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

  2. 一个真实的设备,以自动方式测试太多的应用程序

  3. 一个真实的设备,它已经使用系统分区的CLONE映像进行了自定义,CLONED来自不同的设备

如果这是一个真实的设备,解决它的最佳方法是将工厂重置为设备的真实系统映像.由于此设备目前可能卡在2或3中,您是否介意重置设备并让我们知道问题是否仍然存在?

我已经在我的设备上执行了恢复出厂设置,问题就消失了.我仍然没有看到它是如何出现的,以及为什么.

  • 有办法防止这种情况发生吗? (6认同)
  • 我有同样的问题。实际上发生在我身上两次,我没有使用任何机器人测试,只是正常的应用程序测试,所以在应用程序的开发/生产版本之间切换很多。恢复出厂设置不是一个选项:( (3认同)
  • 我今天在使用 [Firebase 测试实验室设备](https://firebase.google.com/docs/test-lab/overview#choose-yourdevice-type) 进行测试时遇到了 TOO_MANY_REGISTRATIONS 错误。这似乎可以通过案例 2 来解释:_以自动化方式使用真实设备来测试太多应用程序_。 (2认同)
  • @StinkyTowel 不,我不确定,但是为什么如果我的应用程序实际上是我设备上唯一的应用程序,它会将此错误喷到我身上?谷歌有时说的和实际发生的并不总是一样的。那么这可能是 GCM 服务上的错误。 (2认同)
  • 我同意@Anton的观点,作为开发人员,不可能将用户的设备恢复出厂设置,甚至不可能。 (2认同)

小智 10

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