Android上的Firebase消息在收到消息时突然崩溃
当前正在使用react-native、react-native firebase和react-native推送通知。一切都很好,直到今天firebase消息突然开始导致应用程序崩溃。错误消息如下所示:Android上的Firebase消息在收到消息时突然崩溃,android,firebase,react-native,firebase-cloud-messaging,abstractmethoderror,Android,Firebase,React Native,Firebase Cloud Messaging,Abstractmethoderror,当前正在使用react-native、react-native firebase和react-native推送通知。一切都很好,直到今天firebase消息突然开始导致应用程序崩溃。错误消息如下所示: Process: com.packagename, PID: 30087 java.lang.AbstractMethodError: abstract method "com.google.android.gms.tasks.Task com.google.fireba
Process: com.packagename, PID: 30087
java.lang.AbstractMethodError: abstract method "com.google.android.gms.tasks.Task com.google.firebase.iid.WithinAppServiceBinder$IntentHandler.zza(android.content.Intent)"
at com.google.firebase.iid.WithinAppServiceBinder.zza(com.google.firebase:firebase-iid@@20.2.2:9)
at com.google.firebase.iid.zzaw.zza(com.google.firebase:firebase-iid@@20.2.2:30)
at com.google.firebase.iid.zzaw.onServiceConnected(com.google.firebase:firebase-iid@@20.2.2:59)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:2067)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:2099)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8016)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)
当收到通知但未触发数据消息时,会发生此错误。此外,在导致崩溃之前会接收并处理通知
我认为这个错误可能是由于更改了react本机firebase/app版本引起的,所以我将git上的项目还原为以前的工作版本。但是,在清理和重建之后,我仍然会收到相同的错误。即使在react本机端没有设置通知侦听器,也会发生这种情况,尽管我不确定实际本机代码需要什么。可能是什么问题?我正在使用以前功能正常的react-native firebase/messaging(7.1.5)和react-native firebase/app(7.2.0)版本。这些版本的问题完全相同。是的,在这之前它们是功能性的 “@react native firebase/app”:“^6.7.1”, “@react native firebase/messaging”:“^6.7.1” 问题已解决:
它选择了不稳定的版本20.2.2给我们带来了各种奇怪的问题。我们尝试将
firebaseMessagingVersion=“20.2.1”
添加到根项目android/build.gradle
的ext部分,为我们解决了这个问题。我们研究了safeExtGet
方法,发现它将尝试从根项目文件中提取顶级变量
通过这种方式,我们不需要触摸节点模块
ext {
googlePlayServicesVersion = "16.+"
firebaseVersion = "17.3.4"
firebaseMessagingVersion = "20.2.1"
}
编辑2020年9月7日:我们已经发布了
firebase iid
和firebase messaging
版本20.2.3
,并修复了此问题,请升级至最新版本
[Firebaser here]昨天发布的
firebase messaging
和firebase iid
似乎包含可能导致此崩溃的错误。我们正在努力解决这个问题
目前,最好使用6月18日发布的版本:
com.google.firebase:firebase消息:20.2.1
com.google.firebase:firebase iid:20.2.1
这次升级为我解决了这个问题
implementation 'com.google.firebase:firebase-messaging:20.2.3'
这个案子对我有效:
implementation "com.google.firebase:firebase-messaging:20.2.3"
implementation "com.google.firebase:firebase-analytics:17.4.4"
Ref此问题已通过此依赖项的最新版本修复。
哇,真是太感谢了!我为此而疯狂。顺便说一句,对我来说它是firebaseMessagingVersion,以防其他人看到它并有相同的问题@tenkay我必须和你做同样的事情,
implementation”com.google.firebase:firebase消息:${safeExtGet('firebaseMessagingVersion','20.2.1')}“
当你重新安装节点模块时,这难道不会被删除吗?此外,它也不会被提交到版本控制(假设您git忽略node_模块)。我是RN新手,可能我误解了什么。是的,它会被删除,在这种情况下,我建议遵循公认的答案,但如果您需要更改节点_模块中的任何内容,补丁包是一个方便的解决方案这也是我最后要做的,我也有同样的问题,这救了我的命。非常感谢。是的,降级成功了。感谢您指出这一点。降级是正确的解决方案,请参阅下面我的答案以了解更多信息。感谢更新@sam stern!我也有这个问题,所以请让我们知道,无论何时您有消息,firebase Iid是否也可以通过将firebaseIidVersion=“20.2.1”
添加到android/build.gradle
?这对我很有效。我挠了两天的头。