如何重现 TOO_MANY_REGISTRATIONS(Firebase 云消息传递)

Roh*_*ngh 8 android firebase cordova-plugins firebase-cloud-messaging

我在 PlayStore 上的 Android 应用程序的 FirebaseCrashlytics 控制台中看到此崩溃。

我的应用程序基于 Cordova,并使用https://github.com/fechanique/cordova-plugin-fcm Firebase 云消息传递插件。

以下是来自 Firebase Crashlytics Dashboard 的崩溃日志。

Fatal Exception: com.google.android.gms.tasks.RuntimeExecutionException
java.io.IOException: java.util.concurrent.ExecutionException: java.io.IOException: 
TOO_MANY_REGISTRATIONS
com.gae.scaffolder.plugin.FCMPlugin$1.onComplete

Caused by java.io.IOException
java.util.concurrent.ExecutionException: java.io.IOException: TOO_MANY_REGISTRATIONS

Caused by java.io.IOException: java.util.concurrent.ExecutionException: java.io.IOException: TOO_MANY_REGISTRATIONS
   at com.google.firebase.messaging.FirebaseMessaging.blockingGetToken(com.google.firebase:firebase-messaging@@23.0.0:9)
   at com.google.firebase.messaging.FirebaseMessaging.lambda$getToken$3$com-google-firebase-messaging-FirebaseMessaging(com.google.firebase:firebase-messaging@@23.0.0:1)
   at com.google.firebase.messaging.FirebaseMessaging$$ExternalSyntheticLambda10.run(:4)
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
   at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
   at com.google.android.gms.common.util.concurrent.zza.run(com.google.android.gms:play-services-basement@@17.6.0:2)
   at java.lang.Thread.run(Thread.java:923)
Run Code Online (Sandbox Code Playgroud)

罪魁祸首设备

我的应用程序在 Pixel 2 XL、Galaxy S20 FE 5G、ELS-NX9 上崩溃

我已经尝试过什么?

我尝试过使用 Pixel 2 XL 模拟器,但没有看到崩溃。

我有 3 个问题?

  • 这个问题的根本原因是什么?
  • 如何在模拟器上重现这个?
  • 如何解决这个问题?

我在 Stackoverflow 上找到的相关帖子

我也在这里看到了相关的帖子,但它没有回答我的问题。根据那里的答案之一,当应用程序在 Firebase 测试实验室上运行时,更有可能发生崩溃。但就我而言,这些崩溃是发生在真实用户身上,而不是机器人(测试实验室)身上。