当应用被多个Firebase项目杀死时,未收到FCM通知

时间:2019-12-13 15:50:54

标签: android firebase firebase-cloud-messaging

我已遵循此documentation,并使用了多个Firebase项目,这些项目在登录时会动态切换。结果,我不得不删除google-services插件和google-services.json并使用FirebaseApp.initializeApp以编程方式设置配置。到目前为止,一切正常,但是当应用程序被彻底终止并收到通知时,出现错误,并且未收到通知:

E/AndroidRuntime: FATAL EXCEPTION: Firebase-NotificationMessageHandler
    Process: com.example.app, PID: 8005
    java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
        at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@19.3.0:184)
        at com.google.firebase.messaging.zzo.zza(com.google.firebase:firebase-messaging@@20.1.0:120)
        at com.google.firebase.messaging.zzo.zza(com.google.firebase:firebase-messaging@@20.1.0:1)
        at com.google.firebase.messaging.FirebaseMessagingService.zzc(com.google.firebase:firebase-messaging@@20.1.0:50)
        at com.google.firebase.messaging.zze.run(com.google.firebase:firebase-messaging@@20.1.0:2)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at com.google.android.gms.common.util.concurrent.zza.run(Unknown Source:6)
        at java.lang.Thread.run(Thread.java:764)

在所有其他情况下,我会相应地收到通知。使用google-services插件和google-services.json,即使应用被终止,我也可以通过FCM接收消息,但这不是一个选择,因为我无法使用google-services动态切换Firebase项目。插入。

我总是将FirebaseApp初始化为默认应用:FirebaseApp.initializeApp(context, configuration)

关于如何解决此问题的任何提示?

3 个答案:

答案 0 :(得分:1)

使用data messages代替notification messages解决了该问题。现在,即使该应用被终止/关闭,我也可以动态切换Firebase项目并接收通知。

更多信息:https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages

答案 1 :(得分:0)

您应该在Application的onCreate()中调用FirebaseApp.initializeApp(context,configuration)

答案 2 :(得分:0)

  

根据文档,

     

通知消息-FCM自动将消息显示到   最终用户设备代表客户端应用。通知讯息   具有一组预定义的用户可见键和可选数据   自定义键值对的有效负载。

     

数据消息-客户端应用程序负责处理数据消息。   数据消息仅具有自定义键值对。

这是Test FCM Notification with POSTMAN!

的全文