我的Flutter/Firebase应用显示“尚未配置任何应用程序”。

50

我正在使用Flutter/Firebase开发应用程序,但在Visual Studio Code终端上遇到以下错误:

Xcode build done.                                           522.2s
6.26.0 - [Firebase/Core][I-COR000005] No app has been configured yet.
6.26.0 - [Firebase/Messaging][I-FCM001000] FIRMessaging Remote Notifications 
proxy enabled, will swizzle remote notification receiver handlers. If you'd 
prefer to manually integrate Firebase Messaging, add 
"FirebaseAppDelegateProxyEnabled" to your Info.plist, and set it to NO. Follow 
the instructions at:
https://firebase.google.com/docs/cloud- 
messaging/ios/client#method_swizzling_in_firebase_messaging
to ensure proper integration.
Waiting for iPhone 11 to report its views...                         9ms
Syncing files to device iPhone 11...                               610ms

1
你在项目中添加了 GoogleService-Info.plist 文件吗? - Besufkad Menji
5个回答

106

问题已解决。如果您在AppDelegate.swift中使用Swift,请确保按照以下顺序添加:

import Firebase


FirebaseApp.configure() //add this before the code below
GeneratedPluginRegistrant.register(with: self)

如果您正在使用Flutter与Objective-C,将以下内容添加到您的appdelgate.m文件中:

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[FIRApp configure]; //add this right after the above

3
这里有一件非常有趣(也许有些奇怪)的事情。我有两个连接到同一个 Firebase 的项目。其中一个无法构建,但是当我使用了这个解决方案后,它竟然可以构建成功了。另一个项目中并没有 FirebaseApp.configure(),但它也可以正常工作。我相信肯定有其他方法来实现这个功能,等我找到时会再向大家报告。 - Curt Eckhart
1
在更新Flutter到2.0.1之后,这里也开始出现了同样的问题。这个方法对我也起作用了。但仍然不明白为什么我必须更新AppDelegate.swift文件。感觉和@CurtEckhart一样,你找到原因了吗? - Rodolfo Gonçalves
3
如下所述,您需要在顶部导入Firebase:import Firebase - Luis

27

在添加FirebaseApp.configure()时,不要忘记import Firebase

AppDelegate.swift文件应该像这样开始:

import UIKit
import Firebase

4
否则只有iOS开发者能理解,你需要指明需要放置的位置。 - Pratik Butani
1
他正在谈论iOS/Runner/AppDelegate.swift。 - BillyParadise
谢谢,@elder,你救了我。 - Zihan

10

这里有另一种初始化Firebase的方法,可以通过编辑您的main.dart文件完成。

这可能是首选解决方案,因为它不会在应用程序小部件全部初始化之前初始化Firebase。我曾经遇到过一种情况,一些小部件无法正常工作,因为它们引用Firebase实例时为空。

WidgetsFlutterBinding.ensureInitialized(); 是必要的类初始化步骤。

尽管Sai提供的解决方案有效,但我怀疑由于微妙的初始化问题,它并不总是起作用。

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

我可以确认,将此更改应用于您的 main.dart 将正确初始化您的应用程序以连接到 Firebase。 - Curt Eckhart
6
在Flutter 2.1.0上对我没用,我不得不按照已接受的答案中提到的方式编辑AppDelegate.swift。 - Rodolfo Gonçalves
当我同时为AppDelegate.swift和main() flutter添加时,我的问题也得到了解决。 - MBH

7
我也收到了“尚未配置应用程序”消息,这只是一个警告。在调用await FirebaseMessaging.instance.requestPermission并接受权限(IOS需要用户授权)后,我将从FCM获取通知。当然,在我的主函数中,我需要添加以下内容(针对新的Dart初始化)。
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
  options: DefaultFirebaseOptions.currentPlatform,
);

不需要在AppDelegate中添加'GoogleService-Info'和FirebaseApp.configure()了,因为FlutterFire现在支持直接从Dart进行初始化! 新的Dart初始化文档在这里:https://firebase.flutter.dev/docs/overview/

1
你能进一步解释一下吗?答案不是很简洁。我正在使用新的Dart初始化,但我也收到了缺少GoogleServices日志的提示。 - Bret Hagen
@BretHagen,我稍微编辑了一下我的回答。我的意思是,如果你按照文档中的新Dart初始化方式进行操作,即使你收到了这条消息“尚未配置任何应用程序”,你也可以收到通知,因为此时这条消息可能只是一个警告。FlutterFire文档在这里:https://firebase.flutter.dev/docs/overview/ - Hien.Nguyen
2
你是对的,这个警告只是无关紧要的提示。使用最新版本的FlutterFire,我们不再需要手动配置了。 - apieceofcode1801

3
在AppDelegate文件中:
  1. 导入Firebase
  2. 在GeneratedPluginRegistrant.register(with: self)之前添加

注:保留HTML标记。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接