Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase令牌错误\u注册过多\u_Android_Firebase_Google Cloud Messaging_Firebase Cloud Messaging - Fatal编程技术网

Android Firebase令牌错误\u注册过多\u

Android Firebase令牌错误\u注册过多\u,android,firebase,google-cloud-messaging,firebase-cloud-messaging,Android,Firebase,Google Cloud Messaging,Firebase Cloud Messaging,在阅读了100条线程和谷歌搜索之后,我仍然对下面的错误消息感到困惑 目前,我正在使用Firebase云消息传递,在非常短的时间内,我试图从Firebase获取我的令牌,以便能够向我的服务器发送消息。 我尝试过这两种方法: String token = FirebaseInstanceId.getInstance().getToken(mySenderId, "FCM"); String token = FirebaseInstanceId.getInstance().getToken();

在阅读了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合并使用了它的功能,而不是在这方面进行改进的想法,但它仍然在我脑海中回荡

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

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

  • 虚拟设备(仿真器)重复使用次数过多

  • 以自动化方式使用的真实设备,用于测试太多的应用程序

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

  • 如果这是一个真正的设备,最好的解决方法是工厂重置 到设备的真实系统映像。因为这个装置是有问题的 目前卡在2或3中,您介意在出厂时重置设备吗 让我们知道这个问题是否还存在


    我已经在我的设备上执行了出厂重置,问题消失了。我仍然不知道这到底是怎么出现的,为什么

    我怀疑这些测试来自Google robots,我刚刚发布了我的应用程序,在firebase身份验证中,出现了三个登录名,其中的电子邮件似乎是假的,比如Johnnie Fernandez。39356@gmail.com. 我怀疑所有的电子邮件都以句号和“.39356”这样的数字结尾
    我来自巴西,通过分析我发现用户来自美国,只有3个,所以我知道他们是测试,因为我还没有在美国发布我的应用程序。

    你有没有尝试在不同的设备或模拟器上运行,看看是否都会产生相同的错误?我一直在不同的设备上尝试是的。在我测试过的4台设备中,基本上有2台出现了这个问题。目前我正在测试Nexus6p,目前它工作正常,在接收令牌时没有错误。例如,华为P10的错误包括。我还没有试过一个模拟器。值得补充的是,它以前使用过我的华为P10。当我读到你的错误时,我想到了两个问题。1)
    senderId
    与多个令牌链接。2) (我想这是不可能的)是同一个令牌与多个
    发送者链接。那么,你能不能确保以上这些都不是真的?如果你能把注册客户的代码发到firebase上,你能再解释一下你的意思吗?senderId链接到多个令牌是什么意思?该令牌是由Firebase no?生成的?因此,我在getToken(…)方法中提供的唯一内容是senderId本身以及“FCM”。但是无论如何,getToken()方法没有指定任何内容,并且假定它也用于生成令牌。如果我登录Firebase控制台,只有1个senderId可供使用。我今天在测试时遇到了“注册过多”错误。案例2似乎解释了这一点:一个真正的设备以自动化的方式用于测试太多的应用程序。或者,每次调用
    .getToken(mySenderId,“FCM”)
    时,它都会添加另一个条目并将其计为另一个应用程序。所以也许可以找到一种方法来移除所有以前的标记。@Pierre-你确定是这样吗?这毫无意义,因为谷歌在应用程序启动时推荐应用程序请求getId()。根据我的经验,FCM只返回相同的id-除非该应用程序已被删除并重新安装。@Studytowel否我不确定,但为什么如果我的应用程序是我设备上唯一的应用程序,它会将此错误告知我?谷歌有时说的话和实际发生的事并不总是一样的。那么这可能是GCM服务上的一个bug。有没有办法防止这种情况发生?