场景:
我们在Firebase中有两个不同的项目:Customer
和Merchant
。
这两个项目已在Firebase控制台中创建,因此它们具有不同的项目ID,并且无法合并到一个项目中。他们每个人都使用Firebase的远程配置功能,因此两个项目中都已经有google-services.json
配置文件。
现在,我们需要使用Firebase引入实时聊天功能,并希望客户和商家之间进行一对一的聊天。如果我们使用Firebase,那么它会说即使我们创建了另一个项目Chat,那么它还有另一个google-services.json
配置文件,它将与两个项目中的现有配置文件冲突。
意思是,如果我们使用客户应用程序,那么它已经有一个Firebase配置。那么如何在其中添加其他聊天Firebase配置呢?
这是我尝试过的:
制作另一个名为Chat的Android项目,并将其各自的Firebase配置添加到其中,然后将其添加为Customer Android项目中的模块,该项目已经拥有了自己的Firebase配置。因此,当我编译它认为主应用程序的客户应用程序配置文件为Firebase配置时。它根本没有考虑聊天模块JSON配置。
在这种方法中,我尝试使用答案here以编程方式打开另一个Firebase实例。但是当我尝试将任何邮件推送到聊天Firebase数据库时,连接会以消息wrong project id
关闭,因为Firebase实例正在考虑客户应用的ID。
通过上述方法,它失败了。任何人都知道如何继续这个或是否有可能?
答案 0 :(得分:0)
要将 firebase 的相同数据库用于两个或更多应用,请按照以下步骤操作。
你准备好了。
答案 1 :(得分:0)
要从另一个项目连接到另一个Firebase实时数据库,首先需要为该其他Firebase项目初始化FirebaseApp实例,并为其指定一个标识符 - 在本例中为“secondary”:
FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId("1:530266078999:android:481c4ecf3253701e") // Required for Analytics.
.setApiKey("AIzaSyBRxOyIj5dJkKgAVPXRLYFkdZwh2Xxq51k") // Required for Auth.
.setDatabaseUrl("https://project-1765055333176374514.firebaseio.com/") // Required for RTDB.
.build();
FirebaseApp.initializeApp(this /* Context */, options, "secondary");
然后,您可以使用相同的客户端API访问数据库,但这次通过将相关的FirebaseApp传递给FirebaseDatabase.getInstance()来指定要访问的项目:
// Retrieve my other app.
FirebaseApp app = FirebaseApp.getInstance("secondary");
// Get the database for the other app.
FirebaseDatabase secondaryDatabase = FirebaseDatabase.getInstance(app);
如果您需要访问项目的默认数据库,请使用以下命令:
FirebaseDatabase database = FirebaseDatabase.getInstance();
了解更多信息,请查看this article。