Android 在没有google服务插件的情况下初始化firebase云消息传递

Android 在没有google服务插件的情况下初始化firebase云消息传递,android,firebase,firebase-cloud-messaging,Android,Firebase,Firebase Cloud Messaging,由于某些原因,我决定在不应用google服务插件的情况下初始化firebase sdk,并将google-services.json文件添加到project中 这是我在应用程序类中的代码 FirebaseApp.initializeApp(context, new FirebaseOptions.Builder() setApiKey("val").setProjectId("val"). setDatabaseUrl("val").setApplicationId("val").setGcmS

由于某些原因,我决定在不应用google服务插件的情况下初始化firebase sdk,并将google-services.json文件添加到project中

这是我在应用程序类中的代码

FirebaseApp.initializeApp(context, new FirebaseOptions.Builder()
setApiKey("val").setProjectId("val").
setDatabaseUrl("val").setApplicationId("val").setGcmSenderId("val").setStorageBucket("val").build());
在我的身材中,我加了这个

    implementation 'com.google.firebase:firebase-messaging:17.3.0'

firebase控制台在安装应用程序后不会向我显示任何安装情况,但当我使用控制台发送cloud mesage时,它会向我显示应用程序安装的设备数量!,(而且通知没有收到)

在没有谷歌服务插件的情况下发送云消息不是个好主意。Google services json中的所有密钥,当您希望向应用程序发送通知时,firebase将使用这些密钥。May,如果你在strings.xml中添加你的密钥,将会起作用,但这也不是个好主意


请阅读此文档:

我也有同样的问题,您的问题的答案很简单:您必须致电:

FirebaseApp.initializeApp(...
在您自己的自定义应用程序的onCreate()方法中,例如:

public class YourApplication extends Application {
        @Override
        public void onCreate() {
            FirebaseApp.initializeApp(context, new FirebaseOptions.Builder().
                    setApiKey("val").
                    setProjectId("val").
                    setDatabaseUrl("val").
                    setApplicationId("val").
                    setGcmSenderId("val").
                    setStorageBucket("val").build());
        }
    }

为什么??关于如何拥有多个firebase项目,而您没有使用google-services.json和google服务插件,您的firebase实例尚未初始化,您应该将其初始化为您自己的自定义应用程序类中的任何其他框架,以便让它在此时接收推送通知。

当您从firebase控制台发送通知时,仅当应用程序在后台时才会接收通知。要在应用程序处于前台时接收通知,您需要在FCM服务类的
onMessageReceived
中自己创建通知。查看文档了解更多信息。是的,我知道这一点,而且我有文档服务,但即使应用程序在后台,设备也不会收到通知,而且控制台也不会更新安装的号码google services插件唯一做的事情就是将这些键添加到strings.xml。您可以通过反编译APK和strings.xml来检查它。因此,无论你是否使用插件,完全可以不使用谷歌服务,正如Sam Stern(来自谷歌)所解释的: