如何将两个或多个google-services.json文件整合在一起,以便在同一个项目中使用不同的Google FCM服务

时间:2017-05-25 09:36:23

标签: json firebase firebase-cloud-messaging google-play-services

我正在制作一个项目,我希望整合不同的 FCM google-service.json ,如何在同一个文件中集成不同的项目密钥我试过2个项目这样但不起作用我们需要添加在我们的项目中。

    {
          "project_info": {
            "project_number": "60554696754247",
            "firebase_url": "https://project-1fca7.firebaseio.com",
            "project_id": "project-1fca7",
            "storage_bucket": "project-1fca7.appspot.com"
          },
          "client": [
            {
              "client_info": {
                "mobilesdk_app_id": "xxxxxxxxxxxxx",
                "android_client_info": {
                  "package_name": "com.company.project1"
                }
              },
              "oauth_client": [
                {
                  "client_id": "xxxxxxxxxxxxxxxx",
                  "client_type": 3
                }
              ],
              "api_key": [
                {
                  "current_key": ""
                }
              ],
              "services": {
                "analytics_service": {
                  "status": 1
                },
                "appinvite_service": {
                  "status": 1,
                  "other_platform_oauth_client": []
                },
                "ads_service": {
                  "status": 2
                }
              }
            }
          ],
          "project_info": {
            "project_number": "13052496681",
            "firebase_url": "https://project-2ebf8.firebaseio.com",
            "project_id": "project-2ebf8",
            "storage_bucket": "project-2ebf8.appspot.com"
          },
          "client": [
            {
              "client_info": {
                "mobilesdk_app_id": "xxxxxxxxxxxxxxx",
                "android_client_info": {
                  "package_name": "com.company.project2"
                }
              },
              "oauth_client": [
                {
                  "client_id": "xxxxxxxxxxxxxx",
                  "client_type": 3
                }
              ],
              "api_key": [
                {
                  "current_key": "xxxxxxxxxxxxxxxx"
                }
              ],
              "services": {
                "analytics_service": {
                  "status": 1
                },
                "appinvite_service": {
                  "status": 1,
                  "other_platform_oauth_client": []
                },
                "ads_service": {
                  "status": 2
                }
              }
            }
          ],

          "configuration_version": "1"
        }

1 个答案:

答案 0 :(得分:0)

目前还不清楚您的用例是什么,但值得注意的是,使用google-services.json文件是完全可选的,在您的情况下,您可能希望跳过它并配置手动应用。

documentation here解释了插件如何处理JSON文件。

基本上,插件会创建一个strings.xml文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <! -- Present in all applications -->
    <string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string>

    <! -- Present in applications with the appropriate services configured -->
    <string name="gcm_defaultSenderId" translatable="false">1035469437089</string>
    <string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string>
    <string name="ga_trackingId" translatable="false">UA-65557217-3</string>
    <string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string>
    <string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
    <string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>

</resources>

由于您正在谈论FCM,因此相关部分为google_app_idgcm_defaultSenderIdgoogle_api_key。如果您在应用程序中使用这些名称创建字符串,Firebase将自动初始化。

如果您想使用多个应用,正如您所说,您需要手动初始化FirebaseApp,如下所示:

FirebaseApp customApp = FirebaseApp.initializeApp(this, 
       new FirebaseOptions.Builder()
           .setApplicationId(...)
           .setApiKey(...)
           .setGcmSenderId(...)
           .build(), 
       "custom-app-name");