如何在一个Firebase项目中使用两种不同的语言?

时间:2018-11-09 04:03:02

标签: android ios firebase

我已经使用Firebase开发了Android应用程序,并且已经使用Firebase开发了iOS应用程序。我以为我必须在Firebase中创建两个不同的项目。现在,为了使两者互相交谈,我被告知将两者放在同一个项目中。

我被要求去configuring multiple apps,但是看完之后,我有点困惑。任何澄清将不胜感激。

我想将我的iOS项目连接到我拥有的Android项目。

我了解我需要进入“概述”并添加另一个应用程序并选择“ IOS”。

我假设一旦执行此操作,就会得到一个新的GoogleService-Info.plist文件?而且我还假设我用旧的正确的替换了新的plist文件?

我不明白的是以下部分:

  

在您的应用程序中使用多个项目

     

有时您需要使用相同的API访问不同的项目-例如,访问多个数据库实例。在大多数情况下,会有一个中央Firebase应用程序对象来管理所有Firebase API的配置。此对象将作为常规设置的一部分进行初始化。但是,如果您想从一个应用程序访问多个项目,则需要一个不同的Firebase应用程序对象来分别引用每个对象。初始化这些其他实例由您决定。

     

在两种情况下,您都需要先创建一个Firebase选项对象来保存Firebase应用程序的配置数据。可以在以下类的API参考文档中找到有关这些选项的完整文档:

     

enter image description here

     

以下示例显示了如何使用这些类支持应用程序中的多个项目:

     

iOS:

// Configure with manual options.
let secondaryOptions = FirebaseOptions(googleAppID: "1:27992087142:ios:2a4732a34787067a", gcmSenderID: "27992087142")
secondaryOptions.bundleID = "com.google.firebase.devrel.FiroptionConfiguration"
secondaryOptions.apiKey = "AIzaSyBicqfAZPvMgC7NZkjayUEsrepxuXzZDsk"
secondaryOptions.clientID = "27992087142-ola6qe637ulk8780vl8mo5vogegkm23n.apps.googleusercontent.com"
secondaryOptions.databaseURL = "https://myproject.firebaseio.com"
secondaryOptions.storageBucket = "myproject.appspot.com"
     

Android:

// Manually configure Firebase Options
FirebaseOptions options = new FirebaseOptions.Builder()
        .setApplicationId("1:27992087142:android:ce3b6448250083d1") // Required for Analytics.
        .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw") // Required for Auth.
        .setDatabaseUrl("https://myproject.firebaseio.com") // Required for RTDB.
        .build();
     

初始化此选项对象后,可以使用它来配置其他Firebase应用程序实例。请注意,在下面显示的所有示例中,我们使用字符串secondary。此名称用于检索应用程序实例,并将其与其他实例(包括默认实例(名为[DEFAULT]))区分开。您应该选择一个适合其他Firebase项目预期用途的字符串。

     

以下代码片段演示了如何连接到备用实时数据库(其他Firebase功能的API遵循相同的模式)。

     

iOS:

// Configure an alternative FIRApp.
FirebaseApp.configure(name: "secondary", options: secondaryOptions)

// Retrieve a previous created named app.
guard let secondary = FirebaseApp.app(name: "secondary")
  else { assert(false, "Could not retrieve secondary app") }


// Retrieve a Real Time Database client configured against a specific app.
let secondaryDb = Database.database(app: secondary)
     

Android:

// Initialize with secondary app.
FirebaseApp.initializeApp(this /* Context */, options, "secondary");

// Retrieve secondary app.
FirebaseApp secondary = FirebaseApp.getInstance("secondary");
// Get the database for the other app.
FirebaseDatabase secondaryDatabase = FirebaseDatabase.getInstance(secondary);

我只是不知道我是否必须同时为Android和IOS项目或者仅是IOS(在Firebase中我将添加到Android项目中)添加代码。

1 个答案:

答案 0 :(得分:2)

您要参考的文档页面描述了如何将单个应用程序连接到多个Firebase项目。情况恰恰相反:您有多个应用程序要连接到单个Firebase项目。

为此,您只需:

  1. 在Firebase项目中创建一个Android应用,下载google-services.json,然后将其添加到您的Android项目中。
  2. 在Firebase项目中创建一个iOS应用,下载google-services.plist,并将其添加到您的iOS项目中。

所以...忽略您引用的文档页面,而是将Android应用程序和iOS应用程序添加到同一项目中。然后,他们可以访问相同的后端服务。

相关问题