当前使用react native,react-native-firebase和react-native-push-notification。一切都很好,直到今天突然火警消息开始导致应用程序崩溃。错误消息如下:
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-native-firebase / app版本引起的,所以我将git上的项目还原为以前的可运行版本。但是,在清理和重建后,我仍然遇到相同的错误。即使在react native端未设置任何通知侦听器,也会发生这种情况,尽管我不确定实际的native代码需要什么。可能是什么问题?我正在使用以前可以正常运行的版本react-native-firebase / messaging(7.1.5)和react-native-firebase / app(7.2.0)。
我们尝试将其添加firebaseMessagingVersion = "20.2.1"
到根项目的ext部分中,android/build.gradle
从而为我们对其进行了修复。我们研究了该safeExtGet
方法,发现它会尝试从根项目文件中提取顶级变量。
通过这种方式,我们不需要接触节点模块。
ext { googlePlayServicesVersion = "16.+" firebaseVersion = "17.3.4" firebaseMessagingVersion = "20.2.1" }
这些版本完全相同。是的,它们在此“ @ react-native-firebase / app”:“ ^ 6.7.1”,“ @ react-native-firebase / messaging”:“ ^ 6.7.1”,
解决的问题:
转到react-native-push-notification / build.gradle
将def firebaseVersion = safeExtGet('firebaseVersion','+')更改为def firebaseVersion = safeExtGet('firebaseVersion','20 .2.1')
它选择的是20.2.2版本,该版本不稳定,并且会引起各种奇怪的问题。