跳到主要内容

Firebase 设置

您必须为您的应用变体和平台指定 Firebase 配置信息。请按照以下说明创建您自己的 Firebase 项目并配置您的应用。

注意

尽管 Flutter 新闻工具包已预先配置为与 Firebase 配合使用,但您也可以自定义代码库以利用项目中的其他服务。

我们建议您定义至少两个应用程序环境(也称为变体):开发生产。每个环境定义了不同的深层链接、广告和身份验证配置,以及应用程序的不同入口点(例如 main_development.dart)。

默认情况下,您的代码库应支持生产和开发变体。但是,当您从 mason 生成项目时,您可能已经创建了额外的变体。

在运行生成的应用程序之前,您必须配置 Firebase。

注意

flutterfire-cli 尚未支持多个变体

由于您的项目支持多个变体,您必须手动配置 Firebase。

转到 Firebase 控制台,使用您的 Google 帐户登录,并为您的项目支持的每个变体(例如开发和生产)创建一个单独的 Firebase 项目。

在每个 Firebase 项目中,使用相应的应用程序 ID 创建一个 Android 和 iOS 应用。确保应用程序 ID 包括正确的后缀(例如,开发变体的“dev”)。

从 Firebase 控制台的“项目设置”页面下载每个应用程序的 Google 服务文件。然后,转到生成的应用程序的源代码,并查找每个变体的以下 TODOs

Android

// Replace with google-services.json from the Firebase Console //

iOS

<!-- Replace with GoogleService-Info.plist from the Firebase Console -->

将此消息(对于应用程序的每个变体)替换为您刚刚从 Firebase 控制台下载的 google-services.jsonGoogleServiceInfo.plist 文件的内容。

最后,仅对于 iOS,您必须打开 ios/Runner.xcodeproj/project.pbxproj 并将以下占位符替换为 GoogleServiceInfo.plist 文件中相应的 reversed_client_id

REVERSED_CLIENT_ID = "<PASTE-REVERSED-CLIENT-ID-HERE>";

搜索此占位符时,结果的数量取决于为您的项目配置的变体的数量。对于每个配置的变体,都有两个配置部分 (debugrelease)。

例如,如果您将 developmentproduction 设置为项目的变体,您将找到以下配置部分

  • Debug-development(在调试模式下构建开发变体)
  • Release-development(在发布模式下构建开发变体)
  • Debug-production(在调试模式下构建生产变体)
  • Release-production(在发布模式下构建生产变体)

您的 ios/Runner.xcodeproj/project.pbxproj 应具有以下格式

/* Begin XCBuildConfiguration section */

# Release-production
0CMNTMSTYJKWAP508TXPJJN5 /* Release-production */ = {
...
buildSettings = {
...
REVERSED_CLIENT_ID = "<PASTE-REVERSED-CLIENT-ID-HERE>";
...
};
name = "Release-production";
};
...

# Debug-development
1ON144SZQH163C0TE8AP2QLM /* Debug-development */ = {
...
buildSettings = {
...
REVERSED_CLIENT_ID = "<PASTE-REVERSED-CLIENT-ID-HERE>";
...
};
name = "Debug-development";
};
...

# Release-development
53ZSJWL4HHR1DK5C45O2YEZ5 /* Release-development */ = {
...
buildSettings = {
...
REVERSED_CLIENT_ID = "<PASTE-REVERSED-CLIENT-ID-HERE>";
...
};
name = "Release-development";
};
...

# Debug-production
HLDEZL79XQNUTPT4UM4UEEL7 /* Debug-production */ = {
...
buildSettings = {
...
REVERSED_CLIENT_ID = "<PASTE-REVERSED-CLIENT-ID-HERE>";
...
};
name = "Debug-production";
};
...

/* End XCBuildConfiguration section */

如果您的开发变体的 GoogleServiceInfo.plist 如下所示

<plist version="1.0">
<dict>
...
<key>REVERSED_CLIENT_ID</key>
<string>com.googleusercontent.apps.737894073936-ccvknt0jpr1nk3uhftg14k8duirosg9t</string>
...
</dict>
</plist>

那么在 ios/Runner.xcodeproj/project.pbxproj 中,您必须替换 Debug-developmentRelease-development 配置部分内的 reversed_client_id

对于应用上其他现有变体(例如生产)的 GoogleServiceInfo.plist,也必须在 project.pbxproj 文件的相应配置部分中重复此过程。