Android客户端FirebaseApp初始化错误

时间:2016-06-30 20:34:05

标签: android firebase-cloud-messaging

我已实施GCM,我正在尝试将GCM导入FCM。我不想使用google-services.json,因为我想在不同的环境(Dev,Stag,Prod)中使用不同的Google项目。

我尝试通过以下代码初始化应用

 FirebaseOptions.Builder options=new FirebaseOptions.Builder();
       options.setGcmSenderId("<<project id>>"); 
       options.setApplicationId("<<Project name>>"); 
       FirebaseApp firebaseApp = FirebaseApp.initializeApp(getApplicationContext(),options.build(),"MyTestFCM");
       String refreshedToken= FirebaseInstanceId.getInstance(firebaseApp).getToken();

我一直在Firebase App初始化

上获得异常

引起:java.lang.IllegalStateException:名称为[DEFAULT]的FirebaseApp不存在。可用的应用名称:MyTestFCM

如果我删除应用名称然后我没有得到令牌,那么当我重新运行应用程序时,我得到一个令牌。我试图从Mainactivity和Application类执行上面的代码。在这两个地方我都得到了同样的错误。

所以我的问题是如何在不使用google-services.json

的情况下初始化Firebase应用程序

谢谢, P

4 个答案:

答案 0 :(得分:1)

Firebase SDK需要具有&#34;默认&#34;通过google-services.json

配置的项目

完成后,您可以使用FirebaseInstanceId.getInstance(context).getToken(...)

向其他发件人ID注册FCM sdk

但请注意,最新的FCM功能(自动重试注册,主题订阅)仅适用于默认项目。

答案 1 :(得分:1)

事实证明,您需要使用google-services.json进行FCM,并处理多个构建变体情况,

  1. 从firebase控制台为不同的构建变体生成相应的google-services.json。
  2. 下载google-services.json
  3. 在项目中为变体创建文件夹,例如,如果您想要发布版本,请创建一个名称为&#34的文件夹;发布&#34;并将google-services.json放入其中。
  4. 当应用构建时,根据构建变体,它会在相应的文件夹中查找google-services.json,并从中获取项目详细信息。

    可在此主题中找到更多详细信息 google services issues 54

    感谢Arthur Thompson

答案 2 :(得分:0)

您是否检查过以确保将FIREBASE_URL设置为正确的字符串?你还确保有适当的应用程序设置配置吗?

上次发生这种情况时,我需要设置我的Android App配置。 https://support.google.com/firebase/answer/7015592

之后,您可以按照此设置进行操作。 https://firebase.google.com/docs/cloud-messaging/android/client

答案 3 :(得分:0)

请仔细检查,您已添加

申请插件:'com.google.gms.google-services' 在应用程序的gradle文件的底部,然后清理并重建项目