Android 上的 Firebase Messaging 在收到消息时突然开始崩溃
Firebase Messaging on Android suddenly started crashing when message received
目前正在使用 react native、react-native-firebase 和 react-native-push-notification。一切都很好,直到今天 firebase 消息突然开始导致应用程序崩溃。错误信息如下:
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-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",
问题已解决:
- 转到react-native-push-notification/build。gradle
- 改变
def firebaseVersion = safeExtGet('firebaseVersion', '+')
到
def firebaseVersion = safeExtGet('firebaseVersion', '20.2.1')
它为我们选择了不稳定的版本 20.2.2,并导致了各种奇怪的问题。
我们尝试将 firebaseMessagingVersion = "20.2.1"
添加到根项目 android/build.gradle
的 ext 部分,这为我们修复了它。我们查看了 safeExtGet
方法,发现它会尝试从根项目文件中提取顶级变量。
通过这种方式,我们不需要接触节点模块。
ext {
googlePlayServicesVersion = "16.+"
firebaseVersion = "17.3.4"
firebaseMessagingVersion = "20.2.1"
}
编辑 07/09/2020:我们已发布 firebase-iid
和 firebase-messaging
版本 20.2.3
,请修复此问题升级到最新版本。
[Firebaser here] 昨天发布的 firebase-messaging
和 firebase-iid
似乎包含一个可能导致此崩溃的错误。我们正在努力修复。
目前最好的办法是使用 6 月 18 日发布的版本:
https://firebase.google.com/support/release-notes/android#2020-06-18
com.google.firebase:firebase-messaging:20.2.1
com.google.firebase:firebase-iid:20.2.1
我们正在努力修复并希望尽快发布新版本。当我们这样做时,我会更新这个答案,发行说明将在此处提供:
https://firebase.google.com/support/release-notes/android
这次升级解决了我的问题
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"
此依赖项的最新版本已修复此问题。
https://firebase.google.com/support/release-notes/android#messaging_v20-2-3
目前正在使用 react native、react-native-firebase 和 react-native-push-notification。一切都很好,直到今天 firebase 消息突然开始导致应用程序崩溃。错误信息如下:
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-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",
问题已解决:
- 转到react-native-push-notification/build。gradle
- 改变 def firebaseVersion = safeExtGet('firebaseVersion', '+') 到 def firebaseVersion = safeExtGet('firebaseVersion', '20.2.1')
它为我们选择了不稳定的版本 20.2.2,并导致了各种奇怪的问题。
我们尝试将 firebaseMessagingVersion = "20.2.1"
添加到根项目 android/build.gradle
的 ext 部分,这为我们修复了它。我们查看了 safeExtGet
方法,发现它会尝试从根项目文件中提取顶级变量。
通过这种方式,我们不需要接触节点模块。
ext {
googlePlayServicesVersion = "16.+"
firebaseVersion = "17.3.4"
firebaseMessagingVersion = "20.2.1"
}
编辑 07/09/2020:我们已发布 firebase-iid
和 firebase-messaging
版本 20.2.3
,请修复此问题升级到最新版本。
[Firebaser here] 昨天发布的 firebase-messaging
和 firebase-iid
似乎包含一个可能导致此崩溃的错误。我们正在努力修复。
目前最好的办法是使用 6 月 18 日发布的版本: https://firebase.google.com/support/release-notes/android#2020-06-18
com.google.firebase:firebase-messaging:20.2.1
com.google.firebase:firebase-iid:20.2.1
我们正在努力修复并希望尽快发布新版本。当我们这样做时,我会更新这个答案,发行说明将在此处提供: https://firebase.google.com/support/release-notes/android
这次升级解决了我的问题
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"
此依赖项的最新版本已修复此问题。 https://firebase.google.com/support/release-notes/android#messaging_v20-2-3