firebase令牌错误也是_many_registrations



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

当前,我正在使用Firebase Cloud Messaging,并且很短,我试图从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注册应用程序"的限制。

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

有什么方法可以管理先前的注册设备和令牌?我尝试在没有任何运气的情况下运行以下代码:

FirebaseInstanceId.getInstance().deleteInstanceId();

我试图将来自不同来源的信息(包括文档)钉住,而不必了解其实际工作方式。不久前,我与旧C2DM遇到了同样的问题,最近也与GCM遇到了同样的问题。几天前,我已经与Firebase合并了,而是使用其功能,而改进的想法仍然回荡了我。

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

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

  1. 一个虚拟设备(模拟器)被重复多次

  2. 一种以自动化方式用于测试太多应用程序

  3. 的真实设备
  4. 已通过系统分区的克隆图像定制的真实设备,从其他设备克隆

如果这是一种真实的设备,则解决该设备的最佳方法是出厂设备 到设备的真实系统图像。由于此设备是概率 目前卡在2或3中,您是否介意出厂设备重置 让我们知道问题是否仍在重现?

我在设备上进行了出厂设置,问题已经消失。我仍然看不到这是如何出现的,为什么。

我怀疑这些测试来自Google机器人,我刚刚发布了我的申请,在Firebase身份验证中,三个登录名出现在似乎是假货的电子邮件中,例如Johnniefernande.39356@gmail.com。我怀疑的所有电子邮件都是机器人,以一段时间结尾,数字类似于" .39356"。我来自巴西和我通过分析看到,用户来自美国,只有3个,所以我知道它们是测试,因为我没有为美国发布我的应用程序。

我收到了内部测试中的firebase crashlytics报告这些错误应用程序。因此,我认为这可能是Google的自动测试机器人。这是日志

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

我们遇到了相同的问题,信任接受的答案,我们部署到生产(幸运的是仅占1%的用户),我们注意到这个问题也发生在真实的用户设备中。在我的情况下起作用的解决方案是扩展FirebaseMessagingService并获得令牌覆盖的onNewToken(token: String)

 class PushNotifService : FirebaseMessagingService() {
       ....
       override fun onNewToken(token: String) {
           // Do whatever you need with the token (eg: sending it to the server that will send you notifications)
           super.onNewToken(token)
        }
    }

相关内容

  • 没有找到相关文章

最新更新