代码之家  ›  专栏  ›  技术社区  ›  LizG

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

  •  0
  • LizG  · 技术社区  · 7 年前

    我用Firebase开发了我的Android应用程序,用Firebase开发了一个iOS应用程序。我在Firebase创建了两个不同的项目,认为我必须这样做。现在,为了让两个人互相交流,我被告知把他们放在同一个项目中。

    configuring multiple apps

    我想把我的iOS项目连接到我的Android项目。

    我知道我需要去概述,并添加另一个应用程序和选择IOS。

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

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

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

    enter image description here

    使用这些类来支持应用程序中的多个项目,如以下示例所示:

    网间网操作系统:

    // 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"
    

    // 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遵循相同的模式)。

    网间网操作系统:

    // 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)
    

    安卓:

    // 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 回复  |  直到 7 年前
        1
  •  2
  •   Frank van Puffelen    7 年前

    您所指的文档页描述了如何将单个应用程序连接到多个Firebase项目。您的场景正好相反:您有多个应用程序要连接到单个Firebase项目。

    为此,您只需:

    1. 在Firebase项目中创建Android应用程序,下载 google-services.json
    2. google-services.plist ,并将其添加到iOS项目中。

    所以。。。忽略你引用的文档页面,只需在同一个项目中添加一个Android应用程序和一个iOS应用程序。然后他们可以访问相同的后端服务。