我用Firebase开发了我的Android应用程序,用Firebase开发了一个iOS应用程序。我在Firebase创建了两个不同的项目,认为我必须这样做。现在,为了让两个人互相交流,我被告知把他们放在同一个项目中。
在应用程序中使用多个项目
有时您需要使用相同的API访问不同的项目—例如,访问多个数据库实例。在大多数情况下,有一个中心Firebase应用程序对象来管理所有Firebase api的配置。此对象作为正常设置的一部分进行初始化。但是,当您想从单个应用程序访问多个项目时,您需要一个不同的Firebase应用程序对象来分别引用每个项目。由您来初始化这些其他实例。
在这两种情况下,您都需要首先创建一个Firebase options对象来保存Firebase应用程序的配置数据。这些选项的完整文档可以在以下类的API参考文档中找到:
使用这些类来支持应用程序中的多个项目,如以下示例所示:
网间网操作系统:
// 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);