在没有Google服务插件的情况下初始化Firebase云消息传递

时间:2018-09-02 10:31:03

标签: android firebase firebase-cloud-messaging

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

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

FirebaseApp.initializeApp(context, new FirebaseOptions.Builder()
setApiKey("val").setProjectId("val").
setDatabaseUrl("val").setApplicationId("val").setGcmSenderId("val").setStorageBucket("val").build());

,并且在我的build.gradle中添加了此内容

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

在安装该应用程序后,firebase控制台没有显示任何安装,但是当我使用控制台发送云消息时,它显示了我已安装的设备数量!(并且该通知也未收到)

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,您的问题的答案非常简单:您必须致电:

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());
        }
    }

为什么?关于此post和此post关于如何拥有多个Firebase项目并且您没有使用google-services.json和google-services插件的说明,您的firebase实例未初始化,您应该初始化它与您自己的自定义应用程序类中的任何其他框架一样,现在可以接收推送通知。

答案 1 :(得分:-1)

这不是在没有google-services插件的情况下发送云消息的好主意。您在Google服务json中的所有密钥,当您要将通知发送到您的应用时,firebase将使用此密钥。可以,如果您在strings.xml中添加密钥,则可以使用,但这也不是一个好主意。

请阅读此文档:https://firebase.google.com/docs/android/setup