我做了一个C#
API来推送通知到Flutter
应用。
我的API基本上像下面的代码:
public async Task < IActionResult > pushNotification () {
FirebaseApp.Create(new AppOptions() {
Credential = GoogleCredential.FromFile("file.json")
});
.....
}
我过去的网址“domain.com/api/controller/pushNotification“在我的浏览器上,第一次它的工作。我的Flutter收到通知完美。但第二次我得到了:
System.ArgumentException: The default FirebaseApp already exists.
at FirebaseAdmin.FirebaseApp.Create(AppOptions options, String name)
at FirebaseAdmin.FirebaseApp.Create(AppOptions options)
为什么?我该怎么弥补?
6条答案
按热度按时间n9vozmp41#
您可以通过以下方式简单地检查是否存在FirebaseApp示例
lokaqttq2#
Carset的回答让我非常接近我所需要的。
我只是改变了我的构造函数看起来这样,工作完美
guykilcj3#
Firebase在内部管理自己的客户端,您可以通过调用Firebase的方法来引用它,这些方法会向定义的或默认的“App”发出请求,因为您可以在技术上拥有多个App。
您很可能只想在Firebase应用程序不存在的情况下启动Firebase应用程序。我相信你可以通过检查
FirebaseApp.apps
长度来做到这一点-你应该yqyhoc1h4#
第一次是工作。我的Flutter收到通知完美。但第二次我得到了
你的错误消息是说你正在尝试初始化一个已经存在的应用程序。
要解决此问题,您需要首先检查应用程序是否已初始化。在运行用于验证Firebase应用的代码之前,请添加一个简单的检查,例如:
8tntrjer5#
如果你使用默认的构造函数而不使用名字,它会创建默认的示例。
因此,如果你想使用多个应用程序(项目),那么你需要使用带name的重载。您可以使用名称作为ProjectId或任何其他标识符。
2j4z5cfb6#
第一次创建后FirebaseApp存储在DefaultInstance中