有其他挑战或没有在下面列出您的问题吗?请报告错误或请求功能并加入Stack Overflow讨论。
Firebase 项目和 Firebase 应用
什么是 Firebase 项目?
Firebase 项目是 Firebase 的顶级实体。在项目中,您可以注册您的 Apple、Android 或 Web 应用程序。在向 Firebase 注册您的应用程序后,您可以将产品特定的 Firebase SDK添加到您的应用程序,例如 Analytics、Cloud Firestore、Crashlytics 或 Remote Config。
您应该在单个 Firebase 项目中注册您的 Apple、Android 和 Web 应用变体。您可以使用多个 Firebase 项目来支持多种环境,例如开发、暂存和生产。
以下是一些用于详细了解 Firebase 项目的资源:
- 了解 Firebase 项目- 简要概述了有关 Firebase 项目的几个重要概念,包括它们与 Google Cloud 的关系以及项目及其应用和资源的基本层次结构。
- 设置 Firebase 项目的一般最佳实践- 提供用于设置 Firebase 项目和向项目注册您的应用程序的一般高级最佳实践,以便您拥有使用不同环境的清晰开发工作流程。
请注意,对于所有 Firebase 项目,Firebase 会自动在 Google Cloud Console 的项目标签页面中添加firebase:enabled
标签。在我们的常见问题解答中了解有关此标签的更多信息。
什么是 Google Cloud 组织?
Google Cloud 组织是 Google Cloud 项目(包括 Firebase 项目)的容器。此层次结构可以更好地组织、访问管理和审核您的 Google Cloud 和 Firebase 项目。有关详细信息,请参阅创建和管理组织。
如何将 Firebase 添加到现有的 Google Cloud 项目?
您可能有通过Google Cloud Console或Google APIs 控制台管理的现有项目。默认情况下,这些项目在Firebase 控制台中可见,但不被视为 Firebase 项目。
要将 Firebase 添加到您现有的 Google Cloud 项目,请点击Firebase 控制台登录页面上的添加项目,然后在项目名称菜单中选择您的项目。
为什么我的 Google Cloud 项目有firebase:enabled
标签?
在 Google Cloud Console 中您的项目的标签页面中,您可能会看到firebase:enabled
标签(具体来说, Value
enabled
的firebase
Key
)。
Firebase 自动添加了此标签,因为您的项目是一个 Firebase 项目,这意味着您的项目启用了特定于 Firebase 的配置和服务。详细了解Firebase 项目与 Google Cloud 之间的关系。
我们强烈建议您不要修改或删除此标签。 Firebase 和 Google Cloud 使用此标签列出您的 Firebase 项目(例如,通过REST API projects.list
端点或在 Firebase 控制台的菜单中)。
请注意,手动将此标签添加到您的项目标签列表不会为您的 Google Cloud 项目启用特定于 Firebase 的配置和服务。为此,您需要通过Firebase 控制台(或者对于高级用例,通过Firebase 管理 REST API或Firebase CLI )添加 Firebase。
为什么我的 Firebase 项目没有出现在我的 Firebase 项目列表中?
如果您在以下位置看不到您的 Firebase 项目,则此常见问题解答适用:
- 在您在 Firebase 控制台中查看的项目列表中
- 在调用REST API
projects.list
端点的响应中 - 在运行 Firebase CLI 命令
firebase projects:list
的响应中
请尝试以下故障排除步骤:
- 首先,尝试通过直接访问项目的 URL 来访问您的项目。使用以下格式:
https://console.firebase.google.com/project/ PROJECT-ID /overview
- 如果您无法访问项目或收到权限错误,请检查以下内容:
- 确保您使用有权访问该项目的同一 Google 帐户登录 Firebase。您可以通过控制台右上角的帐户头像登录和退出 Firebase 控制台。
- 检查您是否可以在Google Cloud Console中查看该项目。
- 确保您的项目在 Google Cloud Console 的“标签”页面中具有标签
firebase:enabled
。 Firebase 和 Google Cloud 使用此标签列出您的 Firebase 项目。如果您没有看到此标签,但您的项目已启用 Firebase Management API ,请手动添加标签(具体来说,一个Value
enabled
的firebase
Key
)。 - 确保为您分配了一种基本 IAM 角色(所有者、编辑者、查看者)或其中具有 Firebase 相关权限的角色,例如Firebase 预定义角色。您可以在 Google Cloud Console 的IAM页面中查看您的角色。
- 如果您的项目属于 Google Cloud 组织,您可能需要额外的权限才能查看 Firebase 控制台中列出的项目。联系管理您的 Google Cloud 组织的人员,以授予您查看项目的适当角色,例如浏览器角色。
如果上述问题排查步骤均无法让您在 Firebase 项目列表中看到您的项目,请联系Firebase 支持。
每个帐户可以拥有多少个项目?
- Spark 定价计划——您的项目配额仅限于少量项目(通常在 5-10 个左右)。
- Blaze 定价计划 - 只要您的 Cloud Billing 帐户信誉良好,您的每个 Cloud Billing 帐户的项目配额就会大幅增加。
项目配额的限制对于大多数开发者来说很少是一个问题,但如果需要,您可以请求增加您的项目配额。
请注意,完全删除项目需要 30 天,并且在完全删除之前会计入您的配额。
一个 Firebase 项目中可以有多少个 Firebase 应用程序?
Firebase 项目是跨 Apple、Android 和 Web 的 Firebase 应用程序的容器。 Firebase 将 Firebase 项目中的 Firebase 应用程序总数限制为 30。
在这个数字之后,性能开始下降(尤其是对于 Google Analytics),最终,在应用程序数量增加时,一些产品功能停止工作。此外,将 Firebase 应用程序添加到项目会创建一个或多个基础 OAuth 2.0 客户端 ID。在一个项目中最多只能创建 30 个客户端 ID。
从最终用户的角度来看,您应该确保单个 Firebase 项目中的所有 Firebase 应用程序都是同一应用程序的平台变体。例如,如果您开发一个白标签应用程序,每个独立标签的应用程序都应该有自己的 Firebase 项目,但该标签的 Apple 和 Android 版本可以在同一个项目中。在我们关于设置 Firebase 项目的一般最佳实践中阅读更多详细指南。
在极少数情况下,您的项目需要超过 30 个应用程序,您可以请求提高应用程序限制。您的项目必须采用 Blaze 定价计划才能提出此请求。访问 Google Cloud Console提出您的请求并对其进行评估。在 Google Cloud 文档中详细了解配额管理。
如果我将我的项目标记为“生产”环境会怎样?
在 Firebase 控制台中,您可以使用环境类型标记您的 Firebase 项目,无论是生产环境还是未指定(非生产)环境。
将您的项目标记为环境类型不会影响您的 Firebase 项目的工作方式或其功能。但是,标记可以帮助您和您的团队在应用程序生命周期内管理各种 Firebase 项目。
如果您将项目标记为生产环境,我们会在 Firebase 控制台中为项目添加颜色鲜艳的Prod标签,提醒您任何更改都可能影响关联的生产应用程序。将来,我们可能会为标记为生产环境的 Firebase 项目添加更多功能和保护措施。
要更改 Firebase 项目的环境类型,请转至settings Project settings > General ,然后在Environment下的Your project卡中,单击edit以更改环境类型。
在哪里可以找到我的 Firebase 应用程序的应用程序 ID?
在 Firebase 控制台中,转到您的settings项目设置。向下滚动到Your apps卡片,然后单击所需的 Firebase 应用程序以查看该应用程序的信息,包括其App ID 。
以下是一些示例 App ID 值:
- Firebase iOS 应用:
1:1234567890:ios:321abc456def7890
- Firebase Android 应用程序:
1:1234567890:android:321abc456def7890
- Firebase 网络应用:
1:1234567890:web:321abc456def7890
将 Play/AdMob/AdWords/BigQuery 链接到我的 Firebase 项目或应用程序的先决条件是什么?
- 要关联您的Google Play 帐户,您需要具备以下条件:
- 以下任一 Firebase 角色:所有者或 Firebase 管理员
和 - 以下任一 Google Play 访问级别:帐户所有者或管理员
- 以下任一 Firebase 角色:所有者或 Firebase 管理员
- 要关联您的AdMob 应用,您需要同时是 Firebase 项目所有者和 AdMob 管理员。
- 要关联您的AdWords 帐户,您需要同时是 Firebase 项目所有者和 AdWords 管理员。
- 要链接您的BigQuery 项目,您需要是 Firebase 项目所有者。
我应该在我的应用程序中包含哪些开源声明?
在 Apple 平台上,Firebase pod 包含一个 NOTICES 文件,其中包含相关条目。 Firebase Android SDK 包含一个用于显示许可信息的辅助Activity
。
Firebase 项目的权限和访问权限
如何为项目成员分配角色,例如所有者角色?
要管理分配给每个项目成员的角色,您必须是 Firebase 项目的所有者(或者被分配一个具有resourcemanager.projects.setIamPolicy
权限的角色)。
以下是您可以分配和管理角色的地方:
- Firebase 控制台提供了一种简化的方法,可以在settings >项目设置的用户和权限选项卡中将角色分配给项目成员。在 Firebase 控制台中,您可以分配任何基本角色(所有者、编辑者、查看者)、 Firebase 管理员/查看者角色或任何Firebase 预定义产品类别角色。
- Google Cloud Console 提供了一组扩展工具,用于在IAM页面中为项目成员分配角色。在 Cloud Console 中,您还可以创建和管理自定义角色,以及授予服务帐号访问您的项目的权限。
请注意,在 Google Cloud Console 中,项目成员称为principals 。
如果您项目的所有者无法再执行所有者的任务(例如,离开您公司的人)并且您的项目不是通过 Google Cloud 组织管理的(请参阅下一段),您可以联系 Firebase 支持以获取指定的临时所有者。
请注意,如果 Firebase 项目是 Google Cloud 组织的一部分,则它可能没有所有者。如果您找不到 Firebase 项目的所有者,请联系管理您的 Google Cloud 组织的人员为项目分配所有者。
如何找到 Firebase 项目的所有者?
您可以在以下位置查看项目成员及其角色:
- 如果您有权访问 Firebase 控制台中的项目,则可以在 Firebase 控制台的用户和权限页面中查看项目成员列表,包括所有者。
- 如果您无权访问 Firebase 控制台中的项目,请检查您是否有权访问 Google Cloud Console 中的项目。您可以在 Google Cloud Console 的IAM页面中查看项目成员列表,包括 Owner。
如果您项目的所有者无法再执行所有者的任务(例如,离开您公司的人)并且您的项目不是通过 Google Cloud 组织管理的(请参阅下一段),您可以联系 Firebase 支持以获取指定的临时所有者。
请注意,如果 Firebase 项目是 Google Cloud 组织的一部分,则它可能没有所有者。相反,管理您的 Google Cloud 组织的人可以执行所有者可以执行的许多任务。但是,要执行多项特定于所有者的任务(如分配角色或管理 Google Analytics 属性),管理员可能需要为自己分配实际的所有者角色来执行这些任务。如果您找不到 Firebase 项目的所有者,请联系管理您的 Google Cloud 组织的人员为项目分配所有者。
为什么或何时应该为项目成员分配所有者角色?
为确保正确管理 Firebase 项目,它必须有一个Owner 。项目所有者是可以执行多项重要管理操作(例如分配角色和管理 Google Analytics 属性)的人,而 Firebase 支持人员只能满足已证明的项目所有者的管理请求。
为 Firebase 项目设置所有者后,请务必及时更新这些分配。
请注意,如果 Firebase 项目是 Google Cloud 组织的一部分,则管理您的 Google Cloud 组织的人员可以执行所有者可以执行的许多任务。但是,对于一些特定于所有者的任务(如分配角色或管理 Google Analytics 属性),管理员可能需要为自己分配实际的所有者角色来执行这些任务。
我不认为我有一个 Firebase 项目,但我收到了一封关于一个的电子邮件。我如何访问这个项目?
您收到的电子邮件应该包含一个链接,用于打开您的 Firebase 项目。单击电子邮件中的链接应该会在 Firebase 控制台中打开该项目。
如果您无法打开链接中的项目,请确保您使用接收有关该项目的电子邮件的同一 Google 帐户登录 Firebase。您可以通过控制台右上角的帐户头像登录和退出 Firebase 控制台。
请注意,如果您是 Google Cloud 组织的管理员,您可能会收到有关组织内 Firebase 项目更改的通知。但是,您可能没有足够的权限打开 Firebase 项目。在这些情况下,最简单的解决方案是为自己分配实际所有者角色以打开项目并执行所需的操作。详细了解分配所有者角色的原因和时间。
平台和框架
访问特定于平台的故障排除和常见问题解答页面,获取有用的提示和更多常见问题解答的答案。
Firebase 控制台
访问 Firebase 控制台支持哪些浏览器?
可以从最新版本的流行桌面浏览器(如 Chrome、Firefox、Safari 和 Edge)访问 Firebase 控制台。目前不完全支持移动浏览器。
我可以加载 Firebase 控制台,但为什么找不到或无法访问我的 Firebase 项目?
如果您遇到以下任一问题,则此常见问题解答适用:
- Firebase 控制台返回一个错误页面,指出您的项目可能不存在或您无权访问该项目。
- 即使您在控制台的搜索字段中输入项目 ID 或项目名称,Firebase 控制台也不会显示您的项目。
请尝试以下故障排除步骤:
- 首先,尝试通过直接访问项目的 URL 来访问您的项目。使用以下格式:
https://console.firebase.google.com/project/ PROJECT-ID /overview
- 如果您仍然无法访问项目或收到权限错误,请检查以下内容:
- 确保您使用有权访问该项目的同一 Google 帐户登录 Firebase。您可以通过控制台右上角的帐户头像登录和退出 Firebase 控制台。
- 确保为项目启用了 Firebase Management API 。
- 确保为您分配了一种基本 IAM 角色(所有者、编辑者、查看者)或其中具有 Firebase 相关权限的角色,例如Firebase 预定义角色。您可以在 Google Cloud Console 的IAM页面中查看您的角色。
- 如果您的项目属于 Google Cloud 组织,您可能需要额外的权限才能查看 Firebase 控制台中列出的项目。联系管理您的 Google Cloud 组织的人员,以授予您查看项目的适当角色,例如浏览器角色。
如果上述故障排除步骤均无法让您找到或访问您的项目,请联系Firebase 支持。
为什么 Firebase 控制台没有为我加载?
如果您遇到以下任何问题,则此常见问题解答适用:
- Firebase 控制台中的页面永远不会完成加载。
- 页面中的数据未按预期加载。
- 您在加载 Firebase 控制台时收到浏览器错误消息。
请尝试以下故障排除步骤:
- 检查Firebase 状态仪表板的控制台行是否存在任何可能的服务中断。
- 确保您使用的是受支持的浏览器。
- 尝试在隐身或私人窗口中加载 Firebase 控制台。
- 禁用所有浏览器扩展。
- 确认网络连接未被广告拦截器、防病毒软件、代理、防火墙或其他软件阻止。
- 尝试使用不同的网络或设备加载 Firebase 控制台。
- 如果使用 Chrome,请检查Developer Tools Console是否有任何错误。
如果上述问题排查步骤均无法解决问题,请联系Firebase 支持。
我的 Firebase 控制台语言是如何确定的?
Firebase 控制台的语言设置基于您在Google 帐户设置中选择的语言。
要更改您的语言首选项,请参阅更改语言。
Firebase 控制台支持以下语言:
- 英语
- 巴西葡萄牙语
- 法语
- 德语
- 印度尼西亚
- 日本人
- 韩国人
- 俄语
- 简体中文
- 西班牙语
- 繁体中文
Firebase 控制台支持哪些角色和权限?
Firebase 控制台和 Google Cloud Console 使用相同的底层角色和权限。在Firebase IAM 文档中了解有关角色和权限的更多信息。
Firebase 支持 Owner、Editor 和 Viewer 的基本(基本)角色:
- 项目所有者可以将其他成员添加到项目中,设置集成(项目链接到 BigQuery 或 Slack 等服务),并拥有项目的完全编辑权限。
- 项目编辑器具有项目的完全编辑权限。
- 项目查看者只有项目的读取权限。请注意,Firebase 控制台目前不会隐藏/禁用项目查看者的编辑 UI 控件,但对于分配有查看者角色的项目成员,这些操作将失败。
Firebase 还支持:
- Firebase 预定义角色——精选的特定于 Firebase 的角色,与 Owner、Editor 和 Viewer 等基本角色相比,可以实现更精细的访问控制。
- 自定义角色— 您创建的完全自定义的 IAM 角色,用于定制一组满足组织特定要求的权限。
价钱
哪些产品是付费的?哪些是免费的?
Firebase 的付费基础设施产品包括实时数据库、Firebase 云存储、云功能、托管、测试实验室和电话身份验证。我们为所有这些功能提供免费套餐。
Firebase 还有许多免费产品:Analytics、Cloud Messaging、Notifications composer、Remote Config、App Indexing、Dynamic Links 和 Crash Reporting。您可以在所有计划中无限量使用这些产品中的任何一种,包括我们的免费 Spark 计划。此外,除电话验证之外的所有验证功能都是免费的。
Firebase 是否为付费产品提供免费试用积分?
Firebase 付费服务可在谷歌云免费试用下使用。新的 Google Cloud 和 Firebase 用户可以利用 90 天的试用期(包括 300 美元的免费 Cloud Billing 赠金)来探索和评估 Google Cloud 和 Firebase 产品和服务。
在 Google Cloud 免费试用期间,您将获得一个免费试用 Cloud Billing 帐户。任何使用该计费帐户的 Firebase 项目都将在免费试用期内使用 Blaze 定价计划。
别担心,设置此免费试用 Cloud Billing 帐户不会让我们向您收费。除非您通过将免费试用 Cloud Billing 帐户升级为付费帐户来明确启用计费,否则不会向您收费。您可以在试用期间随时升级到付费帐户。升级后,您仍然可以使用任何剩余的积分(在 90 天内)。
免费试用期结束后,您需要将项目降级为 Spark 定价计划或在 Firebase 控制台中设置 Blaze 定价计划才能继续使用您的 Firebase 项目。
了解有关Google Cloud 免费试用的更多信息。
我怎么知道哪个定价计划适合我?
星火定价计划
我们的 Spark 计划是免费开发应用程序的好地方。您可以获得所有免费的 Firebase 功能(Analytics、Notifications composer、Crashlytics 等)和我们大量的付费基础设施功能。但是,如果您在一个日历月内超出了您的 Spark 计划资源,您的应用程序将在该月的剩余时间内关闭。此外,使用 Spark 计划时无法使用 Google Cloud 功能。
大火定价计划
我们的 Blaze 计划专为生产应用程序而设计。 Blaze 计划还允许您使用付费的 Google Cloud 功能扩展您的应用。您只需为消耗的资源付费,从而可以随需扩展。我们努力使我们的 Blaze 计划价格与行业领先的云提供商竞争。
我如何监控我的使用情况和账单?
您可以在以下任何仪表板上的 Firebase 控制台中跟踪项目资源的使用情况:
Flame 定价计划发生了什么变化?
2020 年 1 月,Flame 定价计划(额外配额每月 25 美元)作为新注册选项被删除。现有计划用户获得了宽限期,可以将他们的项目从 Flame 计划中迁移出来。 2022 年 2 月,Flame 定价计划的剩余项目降级为 Spark 定价计划。
因此,
- 现有的 Spark 和 Blaze 计划项目以及任何新项目都不能再切换到或注册 Flame 计划。
- 如果您将现有的 Flame 计划项目移至不同的定价计划,则该项目无法返回到 Flame 计划。
- 降级为 Spark 计划的项目可以升级为 Blaze 计划以恢复额外的付费服务。
- 对 Flame 计划的引用已从文档中删除。
您对 Flame 计划退休还有更多疑问吗?阅读下面的一些其他常见问题解答。
想了解 Firebase 提供的其他定价计划吗?访问我们的Firebase 定价页面!如果您想开始将任何现有项目转移到另一个定价计划,您可以在项目的Firebase 控制台中执行此操作。
有关 Flame 计划停用的其他常见问题解答
我有一个依赖固定 Firebase 成本的项目、流程或业务模型。我应该怎么办?
注册 Blaze 定价计划,并确保设置预算提醒。
我是否可以获得创建新的 Flame 计划项目的特殊权限?
不,Firebase 不为项目提供特殊访问权限以切换到或注册 Flame 计划。
我将我的 Flame 计划项目更改为不同的定价计划。我该如何改回来?
不再可能切换到 Flame 计划。要访问 Flame 计划提供的服务,请确保您使用的是 Blaze 定价计划,并考虑为您的项目设置预算提醒。
作为 Flame 计划停用的一部分,我的项目自动切换到不同的定价计划。我应该怎么办?
如果您的项目需要超出 Spark 计划提供的额外配额,则需要将您的项目升级到 Blaze 定价计划。
为什么 Flame 计划被淘汰?
多年来,我们看到 Flame 计划的使用率在下降,而且大多数使用该计划的项目都没有充分发挥其价值。维持这种定价计划通常不符合成本效益,我们认为,如果将资源用于其他 Firebase 计划,我们可以更好地为每个人服务。
Blaze 计划中的免费使用与 Spark 计划中的免费使用有何不同?
Blaze 计划的免费使用量每天计算一次。使用限制也不同于 Cloud Functions、电话身份验证和测试实验室的 Spark 计划。
对于 Cloud Functions,Blaze 计划的免费使用量是在 Cloud Billing 帐户级别而不是项目级别计算的,并且具有以下限制:
- 200 万次调用/月
- 400K GB 秒/月
- 200K CPU 秒/月
- 每月 5 GB 网络出口
对于电话身份验证,Blaze 计划的免费使用量按月计算。
对于测试实验室,Blaze 计划的免费使用具有以下限制:
- 30 物理设备分钟/天
- 60 虚拟设备分钟/天
当我从 Spark 计划更改为 Blaze 计划时,免费使用配额是否会重置?
Blaze 计划中包含 Spark 计划的免费使用。转移到 Blaze 计划时,免费使用不会重置。
什么是“同步数据库连接”?
同时连接相当于连接到数据库的一个移动设备、浏览器选项卡或服务器应用程序。 Firebase 对应用程序数据库的同时连接数施加了硬性限制。这些限制旨在保护 Firebase 和我们的用户免受滥用。
Spark 计划限制为 100,无法提高。 Flame 和 Blaze 计划限制每个数据库 200,000 个并发连接。
此限制与您的应用程序的用户总数不同,因为您的用户不会同时连接。如果您需要超过 200,000 个同时连接,请阅读扩展多个数据库。
如果我超过实时数据库的 Spark 计划存储或下载限制会怎样?
为了向您提供可预测的价格,Spark 计划中您可用的资源是有上限的。这意味着当您在任何月份超过任何计划限制时,您的应用程序将被关闭以防止进一步使用资源和产生额外费用。
如果我超过实时数据库的 Spark 计划同时连接限制会怎样?
当您的应用程序达到 Spark 计划的并发限制时,任何后续连接都将被拒绝,直到某些现有连接被关闭。该应用程序将继续为连接的用户工作。
如果我超过云存储的 Spark 计划上传、下载或存储限制会怎样?
当您超过 Spark 计划项目中的 Cloud Storage 限制时,结果取决于您超出的限制类型:
- 如果超过GB 存储限制,您将无法在该项目中存储更多数据,除非您删除部分存储数据或升级到提供更多存储空间或无限存储空间的计划。
- 如果您超过GB 下载限制,您的应用将无法在第二天(美国太平洋时间午夜开始)之前下载更多数据,除非您升级到限制较少或没有限制的计划。
- 如果您超过上传或下载操作限制,您的应用将无法上传或下载更多数据,直到第二天(美国太平洋时间午夜开始),除非您升级到限制较少的计划,或者没有限制。
Firebase 与 Google Cloud 的集成如何运作?
Firebase 与谷歌云深度集成。项目在 Firebase 和 Google Cloud 之间共享,因此项目可以启用 Firebase 服务和 Google Cloud 服务。您可以从 Firebase 控制台或 Google Cloud Console 访问同一项目。具体来说:
- 某些 Firebase 产品直接由 Google Cloud 提供支持,例如 Cloud Storage for Firebase。随着时间的推移,谷歌云支持的产品列表将继续增长。
- 您的许多设置(包括协作者和结算信息)都由 Firebase 和 Google Cloud 共享。您对 Firebase 和 Google Cloud 的使用出现在同一张账单上。
此外,升级到 Blaze 计划后,您可以直接在 Firebase 项目中使用 Google Cloud 的任何世界级基础设施即服务和 API,价格为标准Google Cloud 定价。您还可以将数据从 Google Cloud 直接导出到 BigQuery 进行分析。要了解更多信息,请参阅将BigQuery 与 Firebase 相关联。
将 Google Cloud 与 Firebase 结合使用(与其他不在同一地点的云服务相比)有许多增强安全性、改善延迟和节省时间的好处。查看Google Cloud 站点了解更多详细信息。
如果我在 Google Cloud Console 中为该项目添加或删除结算帐户,我的 Firebase 项目会怎样?
如果将 Cloud Billing 帐户添加到 Google Cloud Console 中的项目,如果该项目当前在 Spark 计划中,则该项目将自动升级到 Firebase Blaze 计划。
相反,如果从 Google Cloud Console 中的项目中删除现有的活动 Cloud Billing 帐户,则该项目将降级为 Firebase Spark 计划。
我可以随时升级、降级或取消吗?
是的,您可以随时升级、降级或取消。请注意,我们不为降级或取消提供按比例退款。这意味着,如果您在结算期结束前降级或取消,您仍需支付当月剩余时间的费用。
我会得到什么样的支持?
所有 Firebase 应用程序,包括那些使用免费计划的应用程序,都在美国太平洋地区的工作时间内提供来自 Firebase 员工的电子邮件支持。 All accounts have unlimited support for billing-related issues, account-related issues, technical (troubleshooting) questions, and incident reports.
Can I cap usage on the Blaze plan?
No, you cannot currently cap your Blaze plan usage. We are evaluating options for supporting caps on Blaze plan usage.
Blaze users can define a budget for their project or account, and receive alerts as their spending approaches those limits. Learn how to set up budget alerts .
What are automated backups? Do you offer hourly backups?
Automated backups are an advanced feature for customers on our Blaze pricing plan that backs up your Firebase Realtime Database data once a day and uploads it to Google Cloud Storage .
We do not offer hourly backups.
Do you offer open-source, nonprofit, or educational discounts?
Our Spark plan can be used by any type of individual or organization, including nonprofits, schools, and open-source projects. Since these plans already include generous quotas, we don't offer any special discounts or plans for open-source, nonprofit, or educational projects.
Do you offer enterprise contracts, pricing, support, or dedicated infrastructure hosting?
Our Blaze plan is suitable for enterprises of all sizes, and our SLA meets or exceeds the industry standard for cloud infrastructure. However, we do not currently offer enterprise contracts, pricing, or support, nor do we offer dedicated infrastructure hosting (that is, on-premises installations) for services like our Realtime Database. We are hard at work adding some of these features.
Do you offer ad-hoc pricing? I only want pay-as-you-go for one or two features.
We offer ad-hoc pricing in the Blaze plan, where you pay only for the features you use.
How do the paid Firebase plans work with Ads? Are there no-cost advertising credits with paid plans?
The Firebase pricing plans are separate from Ads, so there are no advertising credits without cost. As a Firebase developer, you are able to "link" your Ads account to Firebase to support conversion tracking.
All ads campaigns are managed directly in Ads, and Ads billing is managed from the Ads console.
Cloud Functions pricing
Why do I need a billing account to use Cloud Functions for Firebase?
Cloud Functions for Firebase relies on some paid Google services. New function deployments with Firebase CLI 11.2.0 and higher rely on Cloud Build and Artifact Registry . Deployments to older versions use Cloud Build in the same way, but rely on Container Registry and Cloud Storage for storage instead of Artifact Registry. Usage of these services will be billed in addition to existing pricing.
Storage space for Firebase CLI 11.2.0 and newer versions
Artifact Registry provides the containers in which functions run. Artifact Registry provides the first 500MB at no cost, so your first function deployments may not incur any fees. Above that threshold, each additional GB of storage is billed at $0.10 per month.
Storage space for Firebase CLI 11.1.x and prior versions
For functions deployed to older versions, Container Registry , provides the containers in which functions run. You'll be billed for each container required to deploy a function. You may notice small charges for each container stored—for example, 1GB of storage is billed at $0.026 per month .
To understand more about how your bill might change, please review the following
- Cloud Functions pricing : existing no-cost tier is unchanged.
- Cloud Build pricing: Cloud Build provides for a no-cost tier.
- Artifact Registry pricing .
- Container Registry pricing .
Does Cloud Functions for Firebase still have no-cost usage?
Yes. On the Blaze plan, Cloud Functions provides a no-cost tier for invocations, compute time, and internet traffic. The first 2,000,000 invocations, 400,000 GB-sec, 200,000 CPU-sec, and 5 GB of Internet egress traffic is provided at no cost each month. You'll be charged only for usage above those thresholds.
After the first 500MB of no-cost storage, each deployment operation will incur small-scale charges for the storage space used for the function's container. If your development process depends on deploying functions for testing, you can further minimize costs by using the Firebase Local Emulator Suite during development.
See Firebase Pricing plans and the Cloud Functions Pricing example scenarios.
Is Firebase planning to raise the quotas and limits for Cloud Functions for Firebase?
No. There are no plans to change the quotas except for the removal of a maximum build time limit; instead of receiving errors or warnings when the daily build quota of 120 minutes is reached, you'll be billed under the terms of the Blaze pricing plan. See Quotas and limits .
Can I get the Google Cloud $300 credit?
Yes, you can create a Cloud Billing account in the Google Cloud Console to get the $300 credit, then link that Cloud Billing account to a Firebase project.
More about the Google Cloud credit here .
Note that if you do this, you have to then set up the Blaze pricing plan in the Firebase console in order for your project to continue working after the $300 credit is exhausted.
I want to follow a codelab to learn about Firebase. Can you give me a temporary billing account?
No, sorry. You can use the Firebase emulator for development without having a Cloud Billing account. Alternatively, try applying for a Google Cloud free trial . If you're still having trouble paying your bill because of this change, contact Firebase Support.
I'm worried I'm going to rack up a huge bill.
You can set up budget alerts in the Google Cloud Console to help control costs. Also, you can set limits on the number of billed instances created for each of your functions. To get an idea of costing for typical scenarios, see the Cloud Functions Pricing examples.
How can I check my current billing charges?
View the Usage and billing dashboard in the Firebase console.
I use Firebase Extensions. Do I need a billing account?
Yes. Since extensions use Cloud Functions , extensions will be subject to the same charges as other functions.
To use extensions, you will need to upgrade to the Blaze pricing plan. You will be charged a small amount (typically around $0.01 per month for the Firebase resources required by each extension you install (even if they are not used), in addition to any charges associated with your use of Firebase services.
Privacy
Where can I find information about privacy and security in Firebase?
Check out the page Privacy and Security in Firebase .
Do the Firebase SDKs log any usage/diagnostic information outside of Analytics?
Yes. This is currently iOS-only, but may change in the future. The Firebase Apple platforms SDK includes the FirebaseCoreDiagnostics
framework by default. This framework is used by Firebase to collect SDK usage and diagnostics information to help prioritize future product enhancements. FirebaseCoreDiagnostics
is optional, so if you would like to opt out of sending Firebase diagnostic logs, you can do so by unlinking the library from your application. You can browse the full source, including logged values, on GitHub
A/B Testing
A/B Testing: How many experiments can I create and run?
You are allowed up to 300 experiments per project, which could consist of up to 24 running experiments, with the rest as draft or completed.
A/B Testing: Why can't I view my experiments after unlinking and re-linking my project to Google Analytics?
Linking to a different Google Analytics property will cause you to lose access to experiments created beforehand. To regain access to a previous experiment, re-link your project to the Google Analytics property that was linked when the experiment was created.
AdMob
AdMob: Can I link my Windows apps to Firebase?
No, Windows apps are not currently supported.
AdMob: Why can't I link my app to AdMob from the Firebase console?
You can link an AdMob app to a Firebase app via the AdMob console. Learn how.
AdMob: What permissions or access do I need to link a Firebase app to an AdMob app?
In order to do this linking, you need the following access:
- AdMob : You need to be an AdMob admin.
- Firebase : You must have the
firebase.links.create
permission, which is included in the Owner role and the Firebase Admin role . - Google Analytics : You must have the Edit role or Manage Users role for the property associated with the Firebase project. Learn more.
AdMob: Can multiple users in the same AdMob account link AdMob apps and Firebase apps?
For multi-user AdMob accounts , the user who created the first Firebase link and accepted the Firebase Terms of Service is the only user who can create new links between AdMob apps and Firebase apps.
AdMob: To use AdMob, should I use the Firebase SDK for AdMob or the Google Mobile Ads SDK?
- For iOS projects , use the Google Mobile Ads SDK:
pod 'Google-Mobile-Ads-SDK'
- For Android projects , use the Google Mobile Ads SDK:
implementation 'com.google.android.gms:play-services-ads:21.5.0'
Note that the Firebase Android SDKs for AdMob transitively include the Firebase SDK for Google Analytics. So, if your app calls any Google Analytics APIs and you switch to using the Google Mobile Ads SDK, make sure that you explicitly add the dependency for the Firebase SDK for Google Analytics (
) to your app'scom.google.firebase:firebase-analytics build.gradle
file. - For C++ projects and Unity projects , follow the instructions in the respective documentation.
Analytics
Analytics: Why is Google Analytics a recommended part of using Firebase products?
Google Analytics is a free and unlimited analytics solution that works with Firebase features to deliver powerful insights. It enables you to view event logs in Crashlytics, notification effectiveness in FCM, deep link performance for Dynamic Links, and in-app purchase data from Google Play. It powers advanced audience targeting in Remote Config, Remote Config personalization, and more.
Google Analytics acts as a layer of intelligence in the Firebase console to provide you with more actionable insights about how to develop a high quality app, grow your user base, and earn more money.
To get started, read the documentation .
Analytics: How do I control how my Analytics data is shared with the rest of Firebase?
By default, your Google Analytics data is used to enhance other Firebase and Google features. You can control how your Google Analytics data is shared in your project settings anytime. Learn more about Data sharing settings .
Analytics in my iOS app: Can I install Analytics without ad attribution and IDFA collection features?
Yes. See the Configure Data Collection and Usage page for more details.
Analytics: Why don't I see any data after unlinking my app from Google Analytics?
Your analytics data resides within the Google Analytics property - not within the Firebase project. If you delete or unlink the property, then your data is unlinked from your project as well. The data still resides in that property, however, and you can always relink it to your project.
Creating a new Google Analytics account (and new property) will result in having a blank analytics dashboard in the Firebase console.
Analytics: How do I segment users who have not met some criterion?
You can reframe the problem by "negatively targeting" these users. For example, reframe the problem as "Don't show ads to people who have bought something", and form an audience of those users to target.
Analytics: Are audiences and/or events defined in the Google Analytics interface also available in the Firebase console?
Your audiences and user properties will be synced. For some features, you'll need to use the Google Analytics interface, such as segmentation and closed funnels. You can access the Google Analytics interface directly via deep-links from the Firebase console.
Any changes you make from the Firebase console can also be performed in Google Analytics, and those changes will be reflected in Firebase.
Analytics: What changed in the Google Analytics section with the October 2021 update?
You can find a summary of these changes in the Firebase Help Center article New Google Analytics 4 functionality in Google Analytics for Firebase .
Upgrading your Analytics property
Analytics: What is the new fully upgraded Google Analytics account?
You can read more about the new Google Analytics upgrade in our blog post .
Analytics: How do I know if I'm using Google Analytics for Firebase or a fully upgraded Google Analytics account?
If you see a link to "View your data in Google Analytics" from the analytics dashboard in the Firebase console, then your project is using a fully upgraded Google Analytics account.
You can also check by viewing the Google Analytics card in the Firebase console (you can access this from settings > Project Settings > Integrations , then click Manage ). If you see a Linked Google Analytics account listed in the Your Google Analytics property section, your project is using the full Google Analytics experience in Firebase. If you do not see a Linked Google Analytics account , your project is using Google Analytics for Firebase.
Analytics: When must I upgrade my Google Analytics for Firebase property to retain service?
Any Firebase project created before July 31, 2019 must be upgraded to the full Google Analytics 4 experience if it hasn't already. (Banners display in the Analytics dashboard if an upgrade is required.) The associated Terms of Service must be accepted by February 15, 2022 to ensure data collection continues and by March 15, 2022 to prevent the deletion of the Analytics property and its data. If you no longer want to use Google Analytics and the associated data, no action is required and the property will be deleted on March 15, 2022.
Failure to accept the new Google Analytics Terms of Service will disrupt Firebase features, including Crash-Free Users (Crashlytics), targeted Configurations and Remote Config personalization, A/B Testing features, Targeting and Campaign Metrics (Cloud Messaging). It will also disrupt Google Analytics for Firebase Integrations , including Exporting project data to BigQuery , Google Ads Integrations , and AdMob Integrations .
If you have questions about accessing your Firebase project, including finding or assigning an Owner, review the Permissions and access to Firebase projects FAQs .
Analytics: What will happen to my data when I upgrade to the new Google Analytics for Firebase?
This will not affect your existing Firebase project analytics data in the Firebase console.
You will be able to continue using the same dashboard and workflows you are using today, and you will also have access to some advanced features in Google Analytics.
Note that if you decide to enable cross-device reporting after making the upgrade, your data will be de-duplicated using the UserID. This may decrease some user counts in the Firebase console.
Analytics: Why do I get an error when trying to upgrade my project to the new Google Analytics experience?
If you are experiencing an error when upgrading, such as:
The operation has failed (Reason: Requested entity already exists)
or
The operation has failed (Reason: Precondition check failed)
This means that there is an association between your project and an already existing Google Analytics property. You can unlink the property, delete it, or upgrade through the Google Analytics interface.
If this is still an issue, you can use the REST API to unlink by using the removeAnalytics
method , then use the addGoogleAnalytics
method to link a new property.
You can then move the data from one property to another .
Authentication
Firebase Authentication: Which countries are supported for phone authentication?
Firebase Authentication supports phone number verification across the the world, but not all networks reliably deliver our verification messages. The following countries have good rates of delivery, and should be expected to work well for phone number sign in.
Country | Code |
---|---|
AD | Andorra |
AE | United Arab Emirates |
AF | Afghanistan |
AG | Antigua and Barbuda |
AL | Albania |
AM | Armenia |
AO | Angola |
AR | Argentina |
AS | American Samoa |
AT | Austria |
AU | Australia |
AW | Aruba |
AZ | Azerbaijan |
BA | Bosnia and Herzegovina |
BB | Barbados |
BD | Bangladesh |
BE | Belgium |
BF | Burkina Faso |
BG | Bulgaria |
BJ | Benin |
BM | Bermuda |
BN | Brunei Darussalam |
BO | Bolivia |
BR | Brazil |
BS | Bahamas |
BT | Bhutan |
BW | Botswana |
BY | Belarus |
BZ | Belize |
CA | Canada |
CD | Congo, (Kinshasa) |
CF | Central African Republic |
CG | Congo (Brazzaville) |
CH | Switzerland |
CI | Côte d'Ivoire |
CK | Cook Islands |
CL | Chile |
CM | Cameroon |
CO | Colombia |
CR | Costa Rica |
CV | Cape Verde |
CW | Curaçao |
CY | Cyprus |
CZ | Czech Republic |
DE | Germany |
DJ | Djibouti |
DK | Denmark |
DM | Dominica |
DO | Dominican Republic |
DZ | Algeria |
EC | Ecuador |
EG | Egypt |
ES | Spain |
ET | Ethiopia |
FI | Finland |
FJ | Fiji |
FK | Falkland Islands (Malvinas) |
FM | Micronesia, Federated States of |
FO | Faroe Islands |
FR | France |
GA | Gabon |
GB | United Kingdom |
GD | Grenada |
GE | Georgia |
GF | French Guiana |
GG | Guernsey |
GH | Ghana |
GI | Gibraltar |
GL | Greenland |
GM | Gambia |
GP | Guadeloupe |
GQ | Equatorial Guinea |
GR | Greece |
GT | Guatemala |
GY | Guyana |
HK | Hong Kong, SAR China |
HN | Honduras |
HR | Croatia |
HT | Haiti |
HU | Hungary |
ID | Indonesia |
IE | Ireland |
IL | Israel |
IM | Isle of Man |
IN | India |
IQ | Iraq |
IT | Italy |
JE | Jersey |
JM | Jamaica |
JO | Jordan |
JP | Japan |
KE | Kenya |
KG | Kyrgyzstan |
KH | Cambodia |
KM | Comoros |
KN | Saint Kitts and Nevis |
KR | Korea (South) |
KW | Kuwait |
KY | Cayman Islands |
KZ | Kazakhstan |
LA | Lao PDR |
LB | Lebanon |
LC | Saint Lucia |
LI | Liechtenstein |
LK | Sri Lanka |
LS | Lesotho |
LT | Lithuania |
LU | Luxembourg |
LV | Latvia |
LY | Libya |
MA | Morocco |
MD | Moldova |
ME | Montenegro |
MF | Saint-Martin (French part) |
MG | Madagascar |
MK | Macedonia, Republic of |
MM | Myanmar |
MN | Mongolia |
MO | Macao, SAR China |
MS | Montserrat |
MT | Malta |
MU | Mauritius |
MW | Malawi |
MX | Mexico |
MY | Malaysia |
MZ | Mozambique |
NA | Namibia |
NC | New Caledonia |
NE | Niger |
NF | Norfolk Island |
NG | Nigeria |
NI | Nicaragua |
NL | Netherlands |
NO | Norway |
NP | Nepal |
NZ | New Zealand |
OM | Oman |
PA | Panama |
PE | Peru |
PG | Papua New Guinea |
PH | Philippines |
PK | Pakistan |
PL | Poland |
PM | Saint Pierre and Miquelon |
PR | Puerto Rico |
PS | Palestinian Territory |
PT | Portugal |
PY | Paraguay |
QA | Qatar |
RE | Réunion |
RO | Romania |
RS | Serbia |
RU | Russian Federation |
RW | Rwanda |
SA | Saudi Arabia |
SC | Seychelles |
SE | Sweden |
SG | Singapore |
SH | Saint Helena |
SI | Slovenia |
SK | Slovakia |
SL | Sierra Leone |
SN | Senegal |
SR | Suriname |
ST | Sao Tome and Principe |
SV | El Salvador |
SZ | Swaziland |
TC | Turks and Caicos Islands |
TG | Togo |
TH | Thailand |
TL | Timor-Leste |
TM | Turkmenistan |
TO | Tonga |
TR | Turkey |
TT | Trinidad and Tobago |
TW | Taiwan, Republic of China |
TZ | Tanzania, United Republic of |
UA | Ukraine |
UG | Uganda |
US | United States of America |
UY | Uruguay |
UZ | Uzbekistan |
VC | Saint Vincent and Grenadines |
VE | Venezuela (Bolivarian Republic) |
VG | British Virgin Islands |
VI | Virgin Islands, US |
VN | Viet Nam |
WS | Samoa |
YE | Yemen |
YT | Mayotte |
ZA | South Africa |
ZM | Zambia |
ZW | Zimbabwe |
Cloud Functions
Cloud Functions runtime support
How do I upgrade to the latest supported version of Node.js?
- Make sure you're on the Blaze pricing plan .
- Make sure you are using the latest version of the Firebase CLI.
- Update the
engines
field in your functions'package.json
. - Optionally, test your changes using the Firebase Local Emulator Suite .
- Redeploy all functions.
How can I make sure I deployed my functions to a specfic Node.js runtime?
In the Firebase console, go to the functions dashboard , select a function, and check the function's language under Additional details .
I use Firebase Extensions. Will I be affected by Cloud Functions runtime updates?
Yes. Since extensions use Cloud Functions , the runtime of your extensions will need to be updated on the same timeline as Cloud Functions.
We recommend that you periodically update to the latest version of each extension installed in your project. You can upgrade your projects' extensions via the Firebase console or Firebase CLI .
Cloud Messaging
Cloud Messaging: What's the difference between the Notifications composer and Cloud Messaging?
Firebase Cloud Messaging provides a complete set of messaging capabilities through its client SDKs and HTTP and XMPP server protocols. For deployments with more complex messaging requirements, FCM is the right choice.
The Notifications composer is a lightweight, serverless messaging solution built on Firebase Cloud Messaging. With a user-friendly graphical console and reduced coding requirements, the Notifications composer lets users easily send messages to reengage and retain users, foster app growth, and support marketing campaigns.
Capabilities | Notifications composer | Cloud Messaging | |
---|---|---|---|
Target | Single device | ||
Clients subscribed to topics (ie weather) | |||
Clients in predefined user segment (app, version, language) | |||
Clients in specified analytics audiences | |||
Clients in device groups | |||
Upstream from client to server | |||
Message Type | Notifications up to 2kb | ||
Data messages up to 4kb | |||
Delivery | Immediate | ||
Future client device local time | |||
Analytics | Built-in Notifications analytics collection and funnel analytics |
Cloud Messaging: Apple announced they're deprecating the legacy binary protocol for APNs. Do I need to do anything?
No. Firebase Cloud Messaging switched to the HTTP/2-based APNs protocol in 2017. If you are using FCM to send notifications to iOS devices, there should be no action required on your part.
Cloud Messaging: Do I need to use other Firebase services in order to use FCM?
You can use Firebase Cloud Messaging as a standalone component, in the same manner as you did with GCM, without using other Firebase services.
Cloud Messaging: I am an existing Google Cloud Messaging (GCM) developer. Should I move to Firebase Cloud Messaging?
FCM is the new version of GCM under the Firebase brand. It inherits GCM's core infrastructure, with new SDKs to make Cloud Messaging development easier.
Benefits of upgrading to FCM SDK include:
- Simpler client development. You no longer have to write your own registration or subscription retry logic.
- An out-of-the-box notification solution. You can use the Notifications composer, a serverless notifications solution with a web console that lets anyone send notifications to target specific audiences based on insights from Google Analytics for Firebase.
To upgrade from GCM SDKs to FCM SDKs, see the guides for migrating Android and iOS apps.
Cloud Messaging: Why do my targeted devices apparently fail to receive messages?
When it looks like devices haven't successfully received messages, check first for these two potential causes:
Foreground message handling for notification messages . Client apps need to add message handling logic to handle notification messages when the app is in the foreground on the device. See the details for iOS and Android .
Network firewall restrictions . If your organization has a firewall that restricts the traffic to or from the Internet, you need to configure it to allow connectivity with FCM in order for your Firebase Cloud Messaging client apps to receive messages. The ports to open are:
- 5228
- 5229
- 5230
FCM usually uses 5228, but it sometimes uses 5229 and 5230. FCM does not provide specific IPs, so you should allow your firewall to accept outgoing connections to all IP addresses contained in the IP blocks listed in Google's ASN of 15169 .
Cloud Messaging: I have implemented onMessageReceived
in my Android app, but it is not being called.
When your app is in the background, notification messages are displayed in the system tray, and onMessageReceived
is not called. For notification messages with a data payload, the notification message is displayed in the system tray, and the data that was included with the notification message can be retrieved from the intent launched when the user taps on the notification.
For more information, see Receive and handle messages .
Notifications composer: What's the difference between the Notifications composer and Cloud Messaging?
The Notifications composer is a lightweight, serverless messaging solution built on Firebase Cloud Messaging. With a user-friendly graphical console and reduced coding requirements, the Notifications composer lets users easily send messages to reengage and retain users, foster app growth, and support marketing campaigns.
Firebase Cloud Messaging provides a complete set of messaging capabilities through its client SDKs and HTTP and XMPP server protocols. For deployments with more complex messaging requirements, FCM is the right choice.
Here's a comparison of the messaging capabilities provided by Firebase Cloud Messaging and the Notifications composer:
Capabilities | Notifications composer | Cloud Messaging | |
---|---|---|---|
Target | Single device | ||
Clients subscribed to topics (ie weather) | |||
Clients in predefined user segment (app, version, language) | |||
Clients in specified analytics audiences | |||
Clients in device groups | |||
Upstream from client to server | |||
Message Type | Notifications up to 2kb | ||
Data messages up to 4kb | |||
Delivery | Immediate | ||
Future client device local time | |||
Analytics | Built-in Notifications analytics collection and funnel analytics |
Notifications composer: I am an existing Google Cloud Messaging (GCM) developer, and I want to use the Notifications composer. What should I do?
The Notifications composer is an out-of-the-box solution that lets anyone send notifications to target specific audiences based on insights from Google Analytics for Firebase. Also, the Notifications composer provides funnel analysis for every message, allowing easy evaluation of notification effectiveness.
If you are an existing GCM developer, to use the Notifications composer you have to upgrade from GCM SDKs to FCM SDKs. See the guides for migrating Android and iOS apps.
Cloud Storage for Firebase
Cloud Storage for Firebase: Why can't I use Cloud Storage for Firebase?
Cloud Storage for Firebase creates a default bucket in the App Engine no-cost tier. This allows you to quickly get up and running with Firebase and Cloud Storage for Firebase, without having to put in a credit card or enable a Cloud Billing account. It also allows you to easily share data between Firebase and a Google Cloud project.
There are, however, two known cases where this bucket cannot be created and you will be unable to use Cloud Storage for Firebase:
- A project imported from Google Cloud which had a App Engine Master/Slave Datastore application.
- A project imported from Google Cloud which has domain prefixed projects. For example:
domain.com:project-1234
.
There are currently no workarounds to these issues, and we recommend that you create a new project in the Firebase console and enable Cloud Storage for Firebase in that project.
Cloud Storage for Firebase: Why do I get error code 412 responses about service account permissions and failed service account operations when using the Cloud Storage for Firebase API?
It's likely you're getting 412 error codes either because the Cloud Storage for Firebase API is not enabled for your project or a necessary service account is missing the required permissions.
See the related FAQ .
Cloud Storage for Firebase: Why do I see new service account IDs associated with my Firebase projects that use Cloud Storage for Firebase?
Firebase uses service accounts to operate and manage services without sharing user credentials. When you create a Firebase project, you might notice that a number of service accounts are already available in your project.
The service account that Cloud Storage for Firebase uses is scoped to your project and is named
service- PROJECT_NUMBER @gcp-sa-firebasestorage.iam.gserviceaccount.com
.
If you used Cloud Storage for Firebase before September 19, 2022, you may see an additional service account on previously-linked Cloud Storage buckets named firebase-storage@system.gserviceaccount.com
. As of September 19, 2022, this service account is no longer supported.
You can view all service accounts associated with your project in the Firebase console, on the Service accounts tab .
Adding the new service account
If you removed the service account previously or the service account is not present in your project, you may do one of the following to add the account.
- (Recommended) Automated: Use the AddFirebase REST endpoint to re-import your bucket into Firebase. You will only need to call this endpoint once, not once for each linked bucket.
- Manual: Follow the steps in Creating and managing service accounts . Following that guide, add a service account with the IAM role
Cloud Storage for Firebase Service Agent
, and service account name
service- PROJECT_NUMBER @gcp-sa-firebasestorage.iam.gserviceaccount.com
.
Removing the new service account
We strongly discourage you from removing the service account because this may block access to your Cloud Storage buckets from your apps. To remove the service account from your project, follow the instructions in Disabling a service account .
Crashlytics
Visit the Crashlytics troubleshooting & FAQ page for helpful tips and answers to more FAQs.
Dynamic Links
Dynamic Links: Why does my Android app access each Dynamic Link twice?
The getInvitation
API clears the saved Dynamic Link to prevent it from being accessed twice. Be sure to call this API with the autoLaunchDeepLink
parameter set to false
in each of the deep link activities to clear it for the case when the activity is triggered outside the main activity.
Firebase Local Emulator Suite
Why do Emulator Suite logs show an error starting with "Multiple projectIds are not recommended in single project mode"?
This message means the Emulator Suite has detected it may be running a particular product emulator using different project IDs. This may indicate a misconfiguration, and can cause issues when emulators try to communicate with one another, and when you try to interact with emulators from your code. If project IDs don't match, it often appears that data is missing, since data stored in emulators is keyed to projectID, and interoperability depends on matching project IDs.
This has been a common source of confusion among developers, so by default the Local Emulator Suite will now only allow running with a single project ID, unless you specify otherwise in the firebase.json
configuration file. If an emulator detects more than one project ID, it will log a warning and potentially throw a fatal error.
Check your project ID declaration(s) for mismatches in:
- The default project set at the command line. By default, the project ID will be taken on startup from the project selected with
firebase init
orfirebase use
. To view the list of projects (and see which one is selected) usefirebase projects:list
. - Unit tests. The project ID is often specified in calls to the Rules Unit Testing library methods
initializeTestEnvironment
orinitializeTestApp
. Other testing code may initialize withinitializeApp(config)
. - The command line
--project
flag. Passing the Firebase CLI--project
flag overrides the default project. You'll need to ensure the value of the flag matches the project ID in unit tests and app initialization.
Platform-specific places to check:
Web | The projectId property in your JavaScript firebaseConfig object, used in initializeApp . |
Android | The project_id property inside the google-services.json configuration file. |
Apple platforms | The PROJECT_ID property in the GoogleService-Info.plist configuration file. |
To disable single project mode, update firebase.json
with the singleProjectMode
key:
{ "firestore": { ... }, "functions": { ... }, "hosting": { ... }, "emulators": { "singleProjectMode": false, "auth": { "port": 9099 }, "functions": { "port": 5001 }, ... } }
Hosting
Hosting: Why does my Hosting release history table in the Firebase console show file counts that are more than what my local project actually has?
Firebase automatically adds extra files containing metadata about the Hosting site, and these files are included in the total file count for the release.
Hosting: What's the largest file size that I can deploy to Firebase Hosting?
Hosting has a maximum size limit of 2 GB for individual files.
We recommend storing larger files using Cloud Storage , which offers a maximum size limit in the terabyte range for individual objects.
Hosting: How many Hosting sites can I have per Firebase project?
The Firebase Hosting multisite feature supports a maximum of 36 sites per project.
Performance Monitoring
Visit the Performance Monitoring troubleshooting & FAQ page for helpful tips and answers to more FAQs.
Performance Monitoring: How many custom URL patterns can I create?
You can create up to 400 total custom URL patterns per app and up to 100 custom URL patterns per domain for that app.
Performance Monitoring: Why am I not seeing real time display of performance data?
To view real time performance data, make sure that your app uses a Performance Monitoring SDK version that's compatible with real time data processing.
- iOS — v7.3.0 or later
- tvOS — v8.9.0 or later
- Android — v19.0.10 or later (or Firebase Android BoM v26.1.0 or later)
- Web — v7.14.0 or later
Note that we always recommend using the latest version of SDK, but any version listed above will enable Performance Monitoring to process your data in near real time.
Realtime Database
Realtime Database: Why was my Realtime Database reported bandwidth lower than average between September 2016 and March 2017?
For our bandwidth calculations, we normally include SSL encryption overhead (based on layer 5 of the OSI model). However, in September 2016, we introduced a bug that caused our bandwidth reporting to ignore encryption overhead. This might have resulted in artificially low reported bandwidth and bills on your account for a few months.
We released a fix for the bug in late March 2017, returning bandwidth reporting and billing to their normal levels.
Realtime Database: What are the scaling limitations of the Realtime Database?
Each Realtime Database instance has limits on the number of write operations per second. For small writes, this limit is approximately 1000 write operations per second. If you are approaching this limit, batching operations using multi-path updates can help you achieve higher throughput.
In addition, each database instance has a cap on the number of simultaneous database connections . Our default limits are large enough for most applications. If you are building an app that requires additional scale, you may need to shard your application across multiple database instances for added scale. You may also consider Cloud Firestore as an alternative database.
Realtime Database: What can I do if I'm over my Realtime Database usage limits?
If you've received an email alert or notification in the Firebase console that you've exceeded your Realtime Database usage limits, you can address it based on the usage limit you've exceeded. To see your Realtime Database usage, go to the Realtime Database Usage dashboard in the Firebase console.
If you're over your download limit, you can upgrade your Firebase pricing plan or wait until your download limit resets at the start of your next billing cycle. To decrease your downloads, try the following steps:
- Add queries to limit the data that your listen operations return.
- Check for unindexed queries.
- Use listeners that only download updates to data — for example,
on()
instead ofonce()
. - Use security rules to block unauthorized downloads.
If you're over your storage limit, upgrade your pricing plan to avoid service disruptions. To reduce the amount of data in your database, try the following steps:
- Run periodic cleanup jobs.
- Reduce any duplicate data in your database.
Note that it may take some time to see any data deletions reflected in your storage allotment.
If you're over your simultaneous database connections limit, upgrade your plan to avoid any service disruptions. To manage simultaneous connections to your database, try connecting via users via the REST API if they don't require a realtime connection.
Remote Config
Remote Config: Why don't fetched values change the behavior and appearance of my app?
Unless you fetch values with fetchAndActivate()
, values are stored locally but not activated. To activate fetched values so that they can take effect, call activate
. This design lets you control when the behavior and appearance of your app changes, because you can choose when to call activate
. After you call activate
, your app source code determines when updated parameter values are used.
For example, you could fetch values and then activate them the next time a user starts your app, which removes the need to delay app startup while your app waits for fetched values from the service. Changes to your app's behavior and appearance then occur when your app uses the updated parameter values.
To learn more about the Remote Config API and usage model, see Remote Config API Overview .
Remote Config: I am making a lot of fetch requests while developing my app. Why doesn't my app always get the latest values from the service when it sends fetch requests?
During app development, you might want to fetch and activate configs very frequently (many times per hour) to let you rapidly iterate as you develop and test your app. To accommodate rapid iteration on a project with up to 10 developers, you can temporarily set a FirebaseRemoteConfigSettings
object with a low minimum fetch interval ( setMinimumFetchIntervalInSeconds
) in your app.
Remote Config: How quickly does the Remote Config service return fetched values after my app sends a fetch request?
Devices usually receive fetched values in less than a second, and often receive fetched values in milliseconds. The Remote Config service handles fetch requests within milliseconds, but the time required to complete a fetch request will depend on the network speed of the device and the latency of the network connection used by the device.
If your goal is to make fetched values take effect in your app as soon as possible, but without creating a jarring user experience, consider adding calls to fetchAndActivate
each time that your app does a full screen refresh.
Test Lab
Visit the Test Lab troubleshooting page for helpful tips and answers to FAQs.
Firebase User Segmentation Storage
What is Firebase User Segmentation Storage?
Firebase User Segmentation Storage stores Firebase installation IDs and related attributes and segments as well as audience lists you've created to provide targeting information to other Firebase services that use them, such as Crashlytics, FCM, Remote Config personalization, and more.