还有其他难题,或是您的问题未在下面列出?请报告 bug 或提出功能需求,并在 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 会自动添加一个
firebase:enabled
内
项目的标签页面
Google Cloud 控制台。如需详细了解此标签,请参阅我们的
常见问题解答。
什么是 Google Cloud 组织?
Google Cloud 组织是 Google Cloud 项目的容器 (包括 Firebase 项目)。这种层次结构有助于更好地进行组织 对您的Google Cloud和 Firebase 项目的访问权限管理和审核。 如需了解详情,请参阅 创建和管理组织。
如何将 Firebase 添加到现有的 Google Cloud 项目中?
您可以通过 Google Cloud 控制台或 Google API 控制台管理现有的 Google Cloud 项目。
您可以使用以下任一选项将 Firebase 添加到这些现有项目中:
- 使用 Firebase 控制台:
在 Firebase 控制台着陆页中,点击添加项目,然后 然后从项目名称菜单中选择现有项目。 - 使用程序化选项:
- 调用 Firebase Management REST API 端点
addFirebase
。 - 运行 Firebase CLI 命令
firebase projects:addfirebase
。 - 使用 Terraform。
- 调用 Firebase Management REST API 端点
为什么我的“Google Cloud”项目的标签是
firebase:enabled
?
在
标签页面
在 Google Cloud 控制台中,您可能会看到
firebase:enabled
(具体而言,Key
firebase
(Value
为 enabled
)。
此标签是 Firebase 自动添加的,因为您的项目是 Firebase 项目,这意味着您的项目启用了特定于 Firebase 的配置和服务。详细了解 关系 (例如 Firebase 项目与 Google Cloud 之间)。
我们强烈建议您不要修改或删除此标签。Firebase 和Google Cloud会使用此标签来列出您的
Firebase 项目(例如,使用
REST
API projects.list
端点
也可以在 Firebase 控制台的菜单中添加)。
请注意,手动将此标签添加到项目标签列表中 不会为您的基础架构启用特定于 Firebase 的配置和服务 Google Cloud 项目。为此,您需要通过 Firebase 控制台(或者,对于高级用例,可使用 Firebase Management REST API 或 Firebase CLI)。
为什么我的 Firebase 项目未显示在 Firebase 项目列表中?
如果您在以下位置找不到 Firebase 项目,请参阅此常见问题解答:
- 您在 Firebase 控制台中查看的项目列表中
- 调用 REST API
projects.list
端点时的响应中 - 运行 Firebase CLI 命令的响应中
firebase projects:list
请尝试执行以下问题排查步骤:
- 首先,请尝试通过直接输入项目的网址来访问该项目。请使用以下格式:
https://console.firebase.google.com/project/PROJECT-ID/overview
- 如果您无法访问项目或收到权限错误,请检查以下各项:
- 确保您登录 Firebase 使用的 Google 账号有权访问该项目。您可以登录和退出 Firebase控制台 控制台。
- 检查您是否可以在 Google Cloud 控制台。
- 确保您的项目具有
firebase:enabled
在 项目的标签页面 Google Cloud 控制台。Firebase 和Google Cloud使用此标签 列出您的 Firebase 项目。如果您没有看到此标签 已为您的项目启用 Firebase Management API, 然后手动添加相应标签(具体来讲,Key
为firebase
,Value
为enabled
)。 - 确保您拥有某个基本 IAM 角色(Owner、Editor 或 Viewer)或者拥有包含 Firebase 相关权限的某个角色(例如,一个 Firebase 预定义角色)。您可以在以下位置查看您的角色: Google Cloud 控制台的 IAM 页面。
- 如果您的项目属于某个Google Cloud组织,您可以 需要额外的权限才能查看 Firebase 控制台。请与管理您的Google Cloud的人员联系 组织为您授予查看项目所需的适当角色, 浏览器角色示例
如果上述所有问题排查步骤都不能让您在 Firebase 项目列表中看到您的项目,请与 Firebase 支持团队联系。
一个账号中可以有多少个项目?
- Spark 定价方案 - 您只能拥有少量项目配额(通常约为 5-10 个)。
- Blaze 定价方案 - 您的项目配额/ Cloud Billing 只要您的 Cloud Billing 账号信誉良好。
项目配额限制对大多数开发者而言很少会构成问题,但如果您有需要,可以申请增加项目配额。
请注意,彻底删除项目需要 30 天时间,且在彻底删除前仍计入您的项目配额。
一个 Firebase 项目中可以有多少个 Firebase 应用?
Firebase 项目是一种用于存放 Firebase Apple 应用、Firebase Android 应用和 Firebase Web 应用的容器。Firebase 对一个 Firebase 项目中的 Firebase 应用数量有限制,总数不得超过 30 个。
超过此数值后,性能会开始下降(尤其是 Google Analytics),最终,应用数量较多时, 产品功能将停止工作。此外,如果您将 Google 登录用作身份验证提供方,则系统会为项目中的每个应用创建一个基础 OAuth 2.0 客户端 ID。在一个项目中大约只能创建 30 个客户端 ID。
您应该确保一个 Firebase 项目中的所有 Firebase 应用在最终用户看来是同一应用针对不同平台的变体。例如,如果您开发一个白标应用,则每个有独立标签的应用都应该有自己的 Firebase 项目,但该标签的 Apple 和 Android 版本可以属于同一个项目。如需了解详情,请参阅有关设置 Firebase 项目的常规最佳实践。
如果您的项目需要的应用超出 30 个(此情况极少发生),您可以申请提高应用数量上限。如需申请提高上限,您的项目必须采用 Blaze 定价方案。访问 Google Cloud 控制台以 提出您的请求并让我们评估。了解详情 关于 配额管理,请参阅 Google Cloud 文档。
如果我将项目标记为“生产”环境,会发生什么情况?
在 Firebase 控制台中,您可以使用 环境类型,可以是 Production 或 Unspecified (非生产环境)。
为项目标记环境类型不会影响 Firebase 项目的运作或其功能。不过,标记有助于您和您的团队在应用生命周期内管理各种 Firebase 项目。
如果您将项目标记为生产环境, 在 Firebase 控制台中将彩色 Prod 标记添加到项目中,提醒 请注意,任何更改都可能会影响关联的正式版应用。将来,我们可能会为标记为生产环境的 Firebase 项目增添更多功能和安全保障。
如需更改 Firebase 项目的环境类型,请访问settings项目设置 > 常规,然后在“您的项目”卡片中的“环境”下方点击 edit 以更改环境类型。
在哪里可以找到我的 Firebase 应用的 ID?
在 Firebase 控制台中,前往 settings 项目设置。向下滚动到 您的应用卡片,然后点击所需的 Firebase 应用以查看 应用的信息,包括其应用 ID。
以下是一些应用 ID 值示例:
-
Firebase iOS 应用:
1:1234567890:ios:321abc456def7890
-
Firebase Android 应用:
1:1234567890:android:321abc456def7890
-
Firebase Web 应用:
1:1234567890:web:321abc456def7890
关联账号需满足哪些前提条件 Google Play / AdMob / Google Ads / BigQuery到我的 Firebase 项目或应用?
- 对于关联
您的 Google Play 账号,则需要:
- 您是以下任一 Firebase 角色:
Owner 或 Firebase Admin;以及 - 以下任一 Google Play 访问权限级别:账号所有者或管理员
- 您是以下任一 Firebase 角色:
- 要关联 AdMob 应用,您必须 Firebase 项目所有者和 AdMob 管理员。
- 如需关联 AdWords 账号,您必须同时是 Firebase 项目所有者和 AdWords 管理员。
- 要关联 BigQuery 项目,您需要执行以下操作: 是 Firebase 项目所有者。
我需要在应用中包含哪些开源声明?
在 Apple 平台上,Firebase pod 包含一份内含相关条目的 NOTICES 文件。Firebase Android SDK 包含一个用于显示许可信息的帮助程序 Activity
。
权限设置和 Firebase 项目访问权限
如何为项目成员分配角色(如 Owner 角色)?
若要管理分配给每个项目成员的角色,您必须是 Firebase 项目的所有者(或者被分配了具有 resourcemanager.projects.setIamPolicy
权限的角色)。
您可以在以下位置分配和管理角色:
- Firebase 控制台提供了一种在 用户和权限标签页 共 settings >项目设置。 在 Firebase 控制台中,您可以分配 基本角色(Owner、Editor、Viewer)、 Firebase Admin/Viewer 角色,或 以下任何一项: Firebase 预定义的产品类别 角色。
- Google Cloud 控制台提供了大量工具,可用于为项目成员分配角色。
在
IAM 页面。在 Cloud 控制台中,您还可以创建
和管理
自定义角色,以及为服务账号
访问项目的权限。
请注意,在 Google Cloud 控制台中,项目成员称为“主账号”。
如果您项目的所有者(例如, 已从贵公司离职),并且您的项目并非通过 Google Cloud 组织管理(请参阅下文 段落),您可以 与 Firebase 支持团队联系 并与他们核实如何请求对 Firebase 项目的访问权限。
请注意,如果 Firebase 项目属于 Google Cloud 组织,它可能没有所有者。 如果您无法找到 Firebase 项目的所有者,请联系 Google Cloud 个组织可以为其分配项目所有者。
如何查找拥有 Firebase 项目 Owner 角色的用户?
您可以在以下位置查看项目成员及其角色:
- 如果您有权在 Firebase 控制台中访问该项目,则可以执行以下操作: 在 “用户和权限”页面 位于 Firebase 控制台中。
- 如果您没有 Firebase 控制台中,检查您是否有权访问 Google Cloud 控制台。您可以查看项目成员列表,包括 所有者 Google Cloud 控制台的 IAM 页面。
如果项目 Owner 无法再执行 Owner 的任务 (例如,该人员离开了公司),并且您的项目不受管理 Google Cloud组织(请见下一段),那么您可以 联系人 Firebase 支持团队分配一个临时所有者。
请注意,如果 Firebase 项目属于 Google Cloud 组织, 可能没有所有者。而是管理您的Google Cloud的人员 组织可以执行许多所有者可以执行的任务。但是, 执行多项特定于所有者的任务(例如分配角色或管理 Google Analytics 个媒体资源),那么管理员可能需要将 实际的 Owner 角色 来执行这些任务。如果您找不到 Firebase 的所有者 项目,请与管理您的 Google Cloud 组织的人员联系, 为项目分配一个所有者。
应在什么时候或者出于什么原因为项目成员分配 Owner 角色?
为了确保妥善管理 Firebase 项目,必须为其设置所有者。项目所有者是可以 执行几项重要的管理操作(如 分配角色和管理 Google Analytics 资源),以及 Firebase 支持团队只能满足由演示者提出的管理请求。 项目 Owner。
为 Firebase 项目设置所有者后,请务必及时更新这些分配。
请注意,如果 Firebase 项目属于 Google Cloud 组织, 负责管理“Google Cloud”组织的人员可以执行多项任务 所有者的权限但是,对于几项特定于所有者的任务(例如 分配角色或管理Google Analytics媒体资源), 管理员可能需要为自己分配 实际的 Owner 角色 执行这些任务。
我认为自己没有 Firebase 项目,但却收到了有关某个项目的电子邮件。如何可以访问该项目?
您收到的电子邮件应包含可用于打开该 Firebase 项目的链接。点击电子邮件中的链接应该会在 Firebase 控制台。
如果您无法通过该链接打开项目,请确保您登录 Firebase 使用的 Google 账号与您接收项目相关电子邮件使用的账号是同一个。您可以通过以下方式登录和退出 Firebase 控制台: 您的账号头像。
请注意,如果您是 Google Cloud 组织的管理员,则 可能会收到有关贵组织内 Firebase 项目变更的通知。 但是,您可能并没有足够的权限来打开这些 Firebase 项目。在这种情况下,最简单的解决办法是为自己分配 实际 Owner 角色来打开 项目并执行所需的操作。详细了解 为何以及何时分配 Owner 角色。
平台和框架
如需获取实用提示和更多常见问题解答,请访问针对具体平台的问题排查和常见问题解答页面。
Firebase控制台
哪些浏览器可用于访问 Firebase 控制台?
您可以从以下版本的近期版本访问 Firebase 控制台: Chrome、Firefox、Safari 和 Edge 等主流桌面浏览器。 但目前尚未全面支持移动浏览器。
我可以加载 Firebase 控制台,但为什么我找不到或无法访问自己的 Firebase 项目?
如果您遇到以下任一问题,请参阅此常见问题解答:
- Firebase 控制台会返回一个错误页面,显示您的项目 可能不存在或您无权访问该项目。
- 即使您输入了Firebase 在控制台的搜索字段中找到其项目 ID 或项目名称。
请尝试执行以下问题排查步骤:
- 首先,请尝试通过直接输入项目的网址来访问该项目。请使用以下格式:
https://console.firebase.google.com/project/PROJECT-ID/overview
- 如果您仍无法访问项目或收到权限错误,请检查以下各项:
- 确保您登录 Firebase 使用的 Google 账号有权访问该项目。您可以登录和退出 Firebase控制台 控制台。
- 确保已为项目启用 Firebase Management API。
- 确保您拥有某个基本 IAM 角色(Owner、Editor 或 Viewer)或者拥有包含 Firebase 相关权限的某个角色(例如,一个 Firebase 预定义角色)。您可以在以下位置查看您的角色: Google Cloud 控制台的 IAM 页面。
- 如果您的项目属于某个 Google Cloud 组织,您可能需要 其他权限以查看 Firebase 控制台。请与管理您的Google Cloud的人员联系 组织为您授予查看项目所需的适当角色, 浏览器角色示例
如果完成上述所有问题排查步骤后,您仍无法找到或访问您的项目,请与 Firebase 支持团队联系。
为什么系统没有为我加载 Firebase 控制台?
如果您遇到以下任何问题,请参阅此常见问题解答:
- Firebase 控制台中的某个页面一直未能完成加载。
- 某个页面中的数据未能按预期加载。
- 加载 Firebase 控制台时收到浏览器错误消息。
请尝试执行以下问题排查步骤:
- 请查看 Firebase 状态信息中心的“控制台”行,了解可能会发生的任何服务中断。
- 确保您使用的是受支持的浏览器。
- 尝试在无痕式或无痕式窗口中加载 Firebase 控制台。
- 停用所有浏览器扩展程序。
- 确认网络连接未被广告拦截器、防病毒软件、代理、防火墙或其他软件屏蔽。
- 请尝试使用其他网络或设备加载 Firebase 控制台。
- 如果您使用的是 Chrome,请访问开发者工具控制台,查看是否存在任何错误。
如果上述所有问题排查步骤都不能解决问题,请与 Firebase 支持团队联系。
我的 Firebase 控制台语言是如何确定的?
Firebase 控制台的语言设置取决于所使用的语言 已选择 Google 账号设置。
如需更改语言偏好设置,请参阅更改语言。
Firebase 控制台支持以下语言:
- 英语
- 葡萄牙语(巴西)
- 法语
- 德语
- 印度尼西亚语
- 日语
- 韩语
- 俄语
- 简体中文
- 西班牙语
- 繁体中文
Firebase 控制台支持哪些角色和权限?
Firebase 控制台和 Google Cloud 控制台使用相同的 基本角色和权限如需详细了解角色和权限,请访问 参阅 Firebase IAM 文档。
Firebase 支持的基础(基本)角色有 Owner、Editor 和 Viewer:
- 项目 Owner 可以将其他成员添加到项目中, 设置 集成 (关联到 BigQuery 或 Slack 等服务的项目),并且 拥有项目的完整编辑权限。
- 项目 Editor 拥有对项目的完整修改权限。
- 项目 Viewer 只拥有对项目的读取权限。请注意,Firebase 控制台目前不会隐藏/停用 从项目查看者修改界面控件,但以下操作将失败: 拥有 Viewer 角色的项目成员。
Firebase 还支持以下角色:
- Firebase 预定义角色 - 精选的 Firebase 特有角色。相比 Owner、Editor 和 Viewer 等基本角色,这些角色可帮助实现更精细的访问权限控制。
- 自定义角色 - 由您创建的完全自定义的 IAM 角色,用于定制一组满足贵组织具体要求的权限。
价格
哪些产品需要付费?哪些是免费的?
Firebase 的付费基础架构产品包括 Realtime Database、 Cloud Storage for Firebase、Cloud Functions、Hosting、 Test Lab 以及电话身份验证。我们为所有这些功能都提供了免费层级。
Firebase 还有许多免费产品: Analytics、Cloud Messaging、Notifications Composer; Remote Config、App Indexing、Dynamic Links和 Crash Reporting。在所有方案(包括我们的免费 Spark 方案)中,使用这些产品仅需遵循相应产品的流量控制政策(例如配额、合理访问和其他服务保护措施)。此外,除手机以外的所有 Authentication 功能 身份验证是免费的。
Firebase 是否提供付费产品的免费试用赠金?
使用 Firebase 付费服务时,您需要遵守 Google Cloud 免费试用。 Google Cloud 和 Firebase 新用户可享受 90 天的试用期 其中包括 $300 的 Cloud Billing 赠金,供您探索和评估 Google Cloud以及 Firebase 产品和服务。
在 Google Cloud的免费试用期间,您将获得免费试用机会 Cloud Billing 账号。在免费试用期间,任何使用该结算账号的 Firebase 项目都将采用 Blaze 定价方案。
别担心,设置此免费试用Cloud Billing账号并不会启用 我们才会向您收取费用。除非您在以下日期之前明确启用结算功能,否则我们不会向您收取费用。 将免费试用Cloud Billing账号升级为付费账号。您可以在试用期间随时升级为付费账号。升级后,您仍然可以使用剩余赠金(在 90 天内)。
免费试用期结束后,您需要将项目降级为 Spark 定价方案或设置 Blaze 价格 方案 在 Firebase 控制台中,继续使用您的 Firebase 项目。
详细了解 免费试用 Google Cloud。
我如何知道哪个定价方案适合我?
Spark 定价方案
我们的 Spark 方案非常适合您免费开发应用。您获得了所有 免费的 Firebase 功能(Analytics、Notifications Composer、 Crashlytics等)和宽裕的 基础架构功能然而,如果您在一个日历月中使用的 Spark 方案资源超出限额,您的应用将在该月剩余的时间内关闭。此外,Google Cloud功能 。
Blaze 定价方案
我们的 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 方案?
无法再重新采用 Flame 方案。要访问 Flame 方案提供的服务,请务必使用 Blaze 定价方案,并考虑为您的项目设置预算提醒。
由于 Flame 方案停用,我的项目已自动改用其他定价方案。我该怎么做?
如果 Spark 方案提供的配额无法满足项目需求,您可以将项目升级为 Blaze 定价方案。
为什么要停用 Flame 方案?
这几年来,我们发现 Flame 方案的使用率在下降,并且大多数采用该方案的项目都没有充分利用其价值。整体来说,保留此定价方案的成本效益不佳。我们认为,如果将资源分配给其他 Firebase 计划,我们可以更好地为所有用户提供服务。
Blaze 方案中的免费使用量与 Spark 方案中的免费使用量有何不同?
Blaze 方案中的免费使用量按天计算。用量限额 也不同于 Spark 方案的 Cloud Functions、电话 身份验证,以及 Test Lab。
Cloud Functions Blaze 方案的免费用量为 在Cloud Billing账号级(而非项目级)计算 具有以下限制:
- 200 万次调用/月
- 40 万 GB-秒/月
- 20 万 CPU-秒/月
- 5 GB 的网络出站流量/月
对于电话身份验证,Blaze 方案中的免费使用量按月计算。
对于 Test Lab,Blaze 方案中的免费使用量具有以下特点 限制:
- 30 分钟/天(真机设备)
- 60 分钟/天(虚拟设备)
我从 Spark 方案转换到 Blaze 方案后,免费使用量配额会重置吗?
Blaze 方案包含 Spark 方案提供的免费使用量。 您转换到 Blaze 方案后,免费使用量不会重置。
什么是“数据库并发连接”?
并发连接相当于连接到数据库的一台移动设备、浏览器标签页或服务器应用。Firebase 对应用数据库的并发连接数设定了硬性限制。这些限制是为了保护 Firebase 和我们的用户,以避免滥用问题。
Spark 方案的上限为 100,并且不能增加。Flame 和 Blaze 方案的限制为每个数据库 20 万个并发连接。
限制数量并不等于您的应用的用户总数,因为这些用户不会在同一时间全部连接。如果您需要的并发连接数超过 20 万个,请参阅利用多个数据库进行扩缩。
如果我超过了 Spark 方案的存储限制或下载限制,会发生什么情况? Realtime Database?
为了向您提供可预测的价格,Spark 方案对您可以使用的资源数设定了上限值。这意味着,如果您在任一月份超过了方案上限,您的应用将被关闭,这样一来,您将无法进一步使用资源,也不会产生额外费用。
如果我超过了 Spark 方案的并发连接数上限,会发生什么情况 Realtime Database?
当您的应用达到 Spark 方案的并发连接数限值时,后续的任何连接都将被拒,直到某些现有连接关闭为止。已建立连接的用户可以继续使用应用。
Firebase 与 Google Cloud 的集成如何运作?
Firebase 与 Google Cloud。 项目会在 Firebase 和 Google Cloud 之间共享,因此项目可以 已启用 Firebase 服务和 Google Cloud 项服务。您可以使用 Firebase 控制台或 Google Cloud 控制台。 具体而言:
- 某些 Firebase 产品由 Google Cloud 直接支持,例如 Cloud Storage for Firebase。由 Google Cloud 提供支持的商品列表 将随着时间的推移而不断增长
- 你的许多设置,包括协作者和结算信息 由 Firebase 和 Google Cloud 共享。 您的 Firebase 和Google Cloud使用情况数据会显示在 同一账单。
此外,升级到 Blaze 方案后, 您可以使用 Google Cloud 的 “基础架构即服务和 API” 和 Cloud Shell Google Cloud 价格。 您可以 还可以直接将Google Cloud中的数据导出至 BigQuery 用于分析。如需了解详情,请参阅 将 BigQuery 与 Firebase 关联。
可以通过许多功能增强安全性、缩短延迟时间和节省时间 相较于其他云服务,将Google Cloud与 Firebase 结合使用的优势 不同位置的服务)。请查看 如需了解详情,请访问 Google Cloud 网站。
如果我为 Firebase 项目添加或移除结算账号,我的 Firebase 项目会怎么样? Google Cloud控制台中的该项目?
如果某个 Cloud Billing 账号添加到了 Google Cloud控制台,则同一项目将自动升级为 Firebase Blaze 方案(如果该项目当前使用的是 Spark 方案)。
相反,如果从现有活跃Cloud Billing账号中移除 项目在 Google Cloud 控制台中使用,则该项目将降级为 Firebase Spark 方案。
我是否能够随时升级、降级或取消?
是的,您能够随时升级、降级或取消。请注意,在降级或取消的情况下,我们不提供按比例退款。 这意味着,如果您在结算周期结束之前降级或取消,您仍需要支付该月剩余时间的费用。
我将得到何种支持?
所有 Firebase 应用(包括使用免费方案的应用)在工作时间(按照美国太平洋时间)都能得到 Firebase 团队的电子邮件支持。对于结算相关问题、账号相关问题、技术(问题排查)问题和突发事件报告,所有账号都可享受不受限制的支持。
我可以为 Blaze 方案设置使用量上限吗?
不可以,目前您不能设置 Blaze 方案使用的上限。我们正在评估支持 Blaze 方案使用上限的选项。
Blaze 用户可以为自己的项目或账号定义预算,并在支出接近预算限制时收到提醒。 了解如何设置预算提醒。
什么是自动备份?是否提供每小时备份服务?
自动备份是一项高级功能 为您的 Blaze 定价方案客户 每天一次 Firebase Realtime Database 数据,并将其上传到 Google Cloud Storage。
我们不提供每小时备份。
是否提供开源、公益或教育项目折扣?
我们的 Spark 方案适用于任何个人或组织,包括非营利组织、学校和开源项目。由于这些方案已包含足够的配额,因此我们不为开源、公益或教育项目提供特别折扣。
是否提供企业合同、价格、支持或专用基础设施托管?
我们的 Blaze 方案适用于各种规模的企业,我们的服务等级协议符合或超过云基础架构的业界标准。不过,我们目前不提供企业合同、定价、 或支持,也不提供专用基础设施托管 (即在本地安装) Realtime Database。我们正在努力尝试添加这些功能。
是否提供临时定价?我只想以随用随付模式使用一两项功能。
我们在 Blaze 方案中提供临时定价,您只需为您使用的功能支付费用。
付费 Firebase 方案如何与 Ads搭配使用?付费方案是否赠送免费的广告信用额度?
Firebase 定价方案与 Ads 是相互独立的,因此 不收费。作为一名 Firebase 开发者 您可以“关联”将您的Ads账号迁移到 Firebase, 支持转化跟踪。
所有广告系列均直接在Ads中管理,并且 Ads 账单通过 Ads 控制台管理。
Cloud Functions 价格
为什么需要结算账号才能使用 Cloud Functions for Firebase?
Cloud Functions for Firebase需要使用一些付费 Google 服务。新 使用 Firebase CLI 11.2.0 及更高版本进行函数部署依赖于 Cloud Build和 Artifact Registry。 部署到旧版本以同样的方式使用 Cloud Build,但依赖于 Container Registry和 Cloud Storage - 存储空间 而非 Artifact Registry。除了现有价格外,您还需要支付这些服务的使用费用。
Firebase CLI 11.2.0 及更高版本的存储空间
Artifact Registry 提供运行函数的容器。Artifact Registry 前 500MB 是免费的,因此您的第一次函数部署可能会 不会产生任何费用。超出该阈值后,每增加 1 GB 的存储空间,需按 $0.10/月的价格支付费用。
Firebase CLI 11.1.x 及更低版本的存储空间
对于部署到旧版本的函数, Container Registry、 提供运行函数的容器。您需要为部署函数所需的每个容器付费。您可能会发现 存储每个容器的费用,例如,1GB 的存储空间 费用为每月 $0.026。
如需详细了解账单可能如何变化,请查看以下内容
- Cloud Functions 价格:现有的免费层级保持不变。
- Cloud Build 价格:Cloud Build 提供免费层级。
- Artifact Registry 价格。
- Container Registry 价格。
是否Cloud Functions for Firebase 还有免费的用量?
是。在 Blaze 方案中,Cloud Functions 提供免费层级 计算时间和互联网流量。每月前 200 万次调用、40 万 GB-秒、20 万 CPU-秒和 5 GB 的互联网出站流量免费。您只需要为超过这些阈值的使用量付费。
超过 500 MB 的免费存储空间后,每项部署操作都会因函数的容器所使用的存储空间而产生少量费用。如果 部署函数来进行测试,您可以 进一步降低费用 Firebase Local Emulator Suite。
请参阅 Firebase 定价方案和 Cloud Functions 定价 示例场景。
Firebase 计划提高 Cloud Functions for Firebase的配额和限制?
没有。除了移除构建时间上限之外,还没有更改配额的计划;当达到 120 分钟的每日构建配额时,您将需要按照 Blaze 定价方案的条款支付费用,而不是仅仅收到错误或警告。请参阅配额和限制。
我能拿到Google Cloud吗 还有 300 美元赠金?
可以,您可以在 Google Cloud 控制台中创建 Cloud Billing 账号来执行以下操作 获得 300 美元赠金,然后将该 Cloud Billing 账号与 Firebase 相关联 项目。
详细了解 Google Cloud 赠金 此处。
请注意,如果这样做,您必须设置 Firebase控制台中的 Blaze 定价方案, 确保您的项目在 $300 的赠金用完后继续正常运行。
我想通过 Codelab 来了解 Firebase。可以为我提供一个临时结算账号吗?
抱歉,不行。您可以使用 Firebase 模拟器用于开发 而无需拥有 Cloud Billing 账号。或者,您也可以尝试 免费试用 Google Cloud。 如果您仍然由于此变更而无法支付结算费用,请与 Firebase 支持团队联系。
我担心要支付巨额账单。
您可以 设置预算提醒 Google Cloud控制台,以帮助控制费用。此外,您还可以 设置使用时限 为每个函数创建的计费实例数。 如需了解典型场景的费用核算,请参阅 Cloud Functions 价格 示例。
如何查看我当前的结算费用?
查看用量和结算 Firebase控制台。
我在使用 Firebase Extensions,我需要结算账号吗?
需要。由于扩展程序使用 Cloud Functions 函数,因此扩展程序会与其他函数产生相同的费用。
如需使用扩展程序,您需要升级到 Blaze 定价方案。除了使用 Firebase 服务所产生的任何费用,您还需要为安装的每个扩展程序所需的 Firebase 资源支付少量费用(通常约 $0.01/月,即使没有使用该程序也需支付)。
Cloud Storage for Firebase 价格
如何预测上传和下载操作将支付多少费用?
访问 Firebase 价格页面并使用 Blaze 方案计算器。 计算器会列出 Cloud Storage for Firebase 的所有用量类型。
使用滑块输入 Storage 存储桶的预期用量。计算器用于估算您的每月账单费用。
如果我超过了 Spark 方案的上传、下载或存储限制,会发生什么情况 Cloud Storage for Firebase的限制?
当您在Cloud Storage 项目,结果取决于 您超出的限制类型:
- 如果超过了存储的 GB 限制,您将无法在该项目中存储更多数据,除非您移除存储的部分数据或升级到提供更多存储空间或无限存储空间的方案。
- 如果超过了下载的 GB 限制,您的应用将无法在第二天(从美国太平洋时间午夜开始)之前下载更多数据,除非升级到限制较少的方案或无限制的方案。
- 如果超过了上传或下载操作次数限制,您的应用将无法在第二天(从美国太平洋时间午夜开始)之前上传或下载更多数据,除非升级到限制较少的方案或无限制的方案。
隐私权
我可以在何处找到关于 Firebase 中隐私权和安全性的信息?
请参阅 Firebase 中的隐私权和安全性页面。
Firebase SDK 会在 Google Analytics 之外记录任何使用情况/诊断信息吗?
会。目前仅适用于 iOS,但将来可能会发生变化。默认情况下,Firebase Apple 平台 SDK 包含 FirebaseCoreDiagnostics
框架。Firebase 会使用该框架来收集 SDK 使用情况和诊断信息,以便帮助确定未来产品改进事项的优先级别。FirebaseCoreDiagnostics
是可选的。因此,如果您想要停止发送 Firebase 诊断日志,只需从您的应用中解除库关联即可。您可以在 GitHub 上浏览完整的源代码,包括记录的值。
A/B Testing
A/B Testing:我可以创建和运行多少个实验?
每个项目最多可以有 300 个实验,最多包括 24 个正在运行的实验,其余为实验草稿或已完成的实验。
A/B Testing:为什么我在运行实验后看不到实验 解除项目与 Google Analytics 的关联,然后再重新关联?
如果关联到其他 Google Analytics 媒体资源,您将无法访问提前创建的实验。若要重新获得先前实验的访问权限,请将您的项目重新关联到创建实验时关联的 Google Analytics 媒体资源。
A/B Testing:为什么我会收到“项目未关联到 Google Analytics"消息?
如果您已经启用将 Firebase 与 Google Analytics 相关联,但仍然看到 Google Analytics 未关联的消息,请确保项目中的所有应用都存在 Analytics 数据流。目前,项目中的所有应用都必须连接到 Google Analytics 数据流,才能使用 A/B Testing。
您可以在 Firebase 控制台内的 Google Analytics 集成详细信息页面上找到所有活跃数据流的列表,该页面可通过 settings 项目设置 chevron_right 集成 chevron_right Google Analytics chevron_right 管理进行访问。
为任何没有 Google Analytics 数据流的应用创建 Google Analytics 数据流应该可以解决此问题。您可以通过以下几种方式为缺失的应用创建数据流:
-
如果您只有一两个应用缺少关联的 Google Analytics 数据流,您可以选择以下方法之一来添加 Google Analytics 数据流:
- 在 Firebase 控制台中删除并重新添加没有活跃数据流的任何应用。
- 在 Google Analytics 控制台下,选择管理员,点击数据流,然后点击添加数据流,添加缺失应用的详细信息,然后点击注册应用。
-
如果您有较多缺失的应用数据流,那么解除与 Google Analytics 媒体资源的关联并重新关联是创建缺失应用数据流的最快且最有效的方法:
- 从 settings 项目设置中,选择集成。
- 在 Google Analytics 卡片中,点击管理以访问 Firebase 和 Google Analytics 设置。
- 记下 Google Analytics 媒体资源 ID 和已关联的 Google Analytics 账号。
- 点击 more_vert 更多,然后选择解除 Analytics 与此项目的关联。
-
查看显示的警告(不用担心;您将在下一步中重新关联同一媒体资源),然后点击解除与 Google Analytics 的关联。
解除关联后,您将被重定向到集成页面。 - 在 Google Analytics 卡片中,点击启用以开始重新关联流程。
- 从选择账号列表中选择您的 Analytics 账号。
-
在自动在此账号中创建新媒体资源旁边,点击 edit 修改,然后从显示的 Google Analytics 媒体资源列表中选择您的媒体资源 ID。
您项目中所有应用的列表随即显示。系统会列出每个应用的现有数据流映射,对于没有数据流的应用,系统会为其创建数据流。 - 点击启用 Google Analytics ,以重新关联该媒体资源。
- 点击完成。
如果您在执行这些步骤后使用 Remote Config 创建 A/B 测试时仍然遇到错误,请联系 Firebase 支持。
AdMob
AdMob:我可以将 Windows 应用关联到 Firebase 吗?
不能,系统目前不支持 Windows 应用。
AdMob:为什么我无法从AdMob Firebase控制台?
您可以通过 AdMob 控制台将 AdMob 应用关联到 Firebase 应用。 了解操作方法。
AdMob:我需要关联哪些权限或访问权限 从 Firebase 应用迁移到 AdMob 应用?
要执行此关联操作,您需要拥有以下访问权限:
- AdMob:您必须是 AdMob 管理员。
- Firebase:您必须拥有
firebase.links.create
权限(该权限包含在 Owner 角色和 Firebase Admin 角色中。 - Google Analytics:您必须拥有“修改”角色或“管理”权限 与 Firebase 项目关联的媒体资源的用户角色。 了解详情。
AdMob:可以在同一个 AdMob 账号中有多个用户 要将 AdMob 个应用与 Firebase 应用关联吗?
对于 多用户 AdMob 账号, 第一个 Firebase 关联并接受 只有 Firebase 服务条款可以 在 AdMob 个应用与 Firebase 应用之间建立新关联。
AdMob:如需使用 AdMob,我应该使用哪些 SDK?
如需使用 AdMob,请始终按照说明使用 Google Mobile Ads SDK 此常见问题解答。此外(可选)如果您想收集用户指标 (适用于 AdMob),然后为 Google Analytics 添加 Firebase SDK 。
- 对于 iOS 项目:
按照Google Mobile Ads AdMob iOS 文档。 - 对于 Android 项目:
将 Google Mobile Ads SDK 的依赖项添加到您的build.gradle
文件:
implementation 'com.google.android.gms:play-services-ads:23.3.0'
- 对于 C++ 项目和 Unity 项目:请按照各自文档中的说明操作。
Google Analytics
Analytics:为什么推荐使用 Google Analytics 如何使用 Firebase 产品?
Google Analytics 是一款免费且无限制的分析解决方案, 可与 Firebase 功能配合使用,从而提供实用的数据洞见。利用它,您可以 在 Crashlytics 中查看事件日志,在 FCM、Dynamic Links 的深层链接效果以及应用内购买数据 Google Play起。它为 Google Cloud 上的高级受众群体定位提供支持, Remote Config、Remote Config 个性化设置,等等。
Google Analytics 充当 Firebase控制台为您提供更多富有实用价值的分析洞见, 开发优质应用、扩大用户群并赚取更多收入。
要开始使用,请阅读具体文档。
Analytics:如何控制我的 Analytics 数据 与 Firebase 的其他部分共享?
默认情况下,您的Google Analytics数据会用于 Firebase 和 Google 功能。您可以控制 您随时可在项目设置中共享 Google Analytics 数据。 详细了解 数据共享设置。
Analytics:如何更新 Google Analytics 媒体资源 设置?
在 Google Analytics 媒体资源的管理页面中,您可以更新媒体资源设置,例如:
- 数据共享设置
- 数据保留设置
- 时区和币种设置
如需更新您的媒体资源设置,请按以下步骤操作:
- 在 Firebase 控制台中,前往 settings 项目设置。
- 前往“集成”标签页,然后在 Google Analytics 卡片中点击管理或查看链接。
- 点击您的 Google Analytics 账号链接,以打开账号和媒体资源设置。
我的 iOS 应用中的 Analytics:我可以安装 Analytics 吗 没有广告标示和 IDFA 收集功能?
是。如需了解详情,请参阅配置数据收集和使用方式页面。
Analytics:Google Analytics 部分的变化 2021 年 10 月更新?
如需查看这些变化的摘要,请参阅 Firebase 帮助中心文章 Google Analytics for Firebase 中新增了 Google Analytics 4 功能。
Analytics:为什么我在 中看不到任何Analytics数据 解除 Firebase 与 Google Analytics 之间的关联后 Firebase 控制台?
Analytics 数据存放在 Google Analytics 媒体资源中,而非 创建该存储分区如果您删除媒体资源或解除与该媒体资源的关联,则 Firebase 将无法访问 Analytics 数据,并且您将看到 Firebase 控制台中的空 Analytics 信息中心。请注意, 由于数据仍保留在之前关联的媒体资源中,因此您可以 始终将媒体资源重新关联到 Firebase,Analytics Firebase 控制台。
关联全新的 Google Analytics 账号(也就是新的 Google Analytics 媒体资源)关联至 Firebase 项目,则会导致空白 Firebase 控制台中的 Analytics 信息中心。不过,如果您之前关联的媒体资源仍然存在,则可以将现有数据从旧媒体资源移至新媒体资源。
Analytics:如果是我的 Analytics 资源及其数据 被删除后,有办法将其恢复吗?
不可以。如果您的资源已被删除,则无法恢复删除 属性或检索之前收集的 Analytics 数据,存储在 相应属性。
如果您想再次开始使用 Google Analytics,可以将新媒体资源或现有媒体资源与您的 Firebase 项目关联。您可以 在 Firebase 控制台或 Google Analytics 界面中添加此关联。 详细了解 将 Google Analytics 媒体资源与您的 Google Analytics Firebase 项目。
Analytics:如果我的 Google Analytics 媒体资源已被删除,我能否 将新的 Google Analytics 媒体资源与我的 Firebase 项目相关联,并开始使用 再次Analytics?
如果您想再次开始使用 Google Analytics,可以将新媒体资源或现有媒体资源与您的 Firebase 项目关联。您可以 在 Firebase 控制台或 Google Analytics 界面中添加此关联。 详细了解 将 Google Analytics 媒体资源与您的 Google Analytics Firebase 项目。
请注意,由于所有 Analytics 数据(而非 Firebase 项目),则无法使用之前收集的 Analytics 数据 。
Analytics:Firebase 产品或集成方式 Google 产品是否会因为我的 Google Analytics 媒体资源被删除而受到影响?
一些 Firebase 产品依赖于 Google Analytics 集成。如果您的 Analytics 媒体资源及其数据被删除,则当您使用以下产品时,会出现以下情况:
- Crashlytics - 您无法再查看“未遇到崩溃问题的用户数”和“面包屑导航” 日志和/或疾速崩溃提醒
- Cloud Messaging和 In-App Messaging - 您无法再使用 定位、广告系列指标、受众群细分和分析标签。
- Remote Config - 您无法再使用目标配置或 个性化。
- A/B Testing - 您无法再使用 A/B Testing,因为 实验衡量功能由 Google Analytics 提供。
- Dynamic Links:任何依赖 Google Analytics 数据的功能 中断。
此外,以下集成将受到影响:
- 您不能再 将 Analytics 数据导出到 BigQuery。
- 你无法再利用 Google Ads 集成或 Google AdMob 集成。
Analytics:如何细分拥有 不符合某些条件?
您可以通过“排除性定位”这些用户来换个角度解读这个问题。例如,将问题重新解读为“不向已购物的用户展示广告”,以此构造由要定位的用户构成的受众群体。
Analytics:是否在 Firebase 控制台中是否也提供了 Google Analytics 界面?
您的受众群体和用户属性将会同步。但若要使用某些功能(如细分和封闭漏斗),您需要使用 Google Analytics 界面。您可以直接通过以下方式访问 Google Analytics 界面: 深层链接Firebase控制台。
您在 Firebase 控制台中所做的任何更改也都可以在以下位置执行: Google Analytics,这些更改会体现在 Firebase 中。
Authentication
Firebase Authentication:哪些地区支持电话功能 身份验证?
Firebase Authentication 在全球范围内支持电话号码验证,但并非所有网络都能可靠地进行验证 消息。以下区域的短信送达率很高,电话身份验证应该可以正常运行。如上所述,有些运营商由于短信送达成功率很低而无法在某个区域提供服务。
区域 (Region) | 代码 |
---|---|
AD | 安道尔 |
AE | 阿拉伯联合酋长国 |
AF | 阿富汗 |
AG | 安提瓜和巴布达 |
AL | 阿尔巴尼亚 |
AM | 亚美尼亚 |
AO | 安哥拉 |
AR | 阿根廷 |
AS | 美属萨摩亚 |
AT | 奥地利 |
AU | 澳大利亚 |
AW | 阿鲁巴 |
AZ | 阿塞拜疆 |
BA | 波斯尼亚和黑塞哥维那 |
BB | 巴巴多斯 |
BD | 孟加拉国 |
BE | 比利时 |
BF | 布基纳法索 |
BG | 保加利亚 |
BJ | 贝宁 |
BM | 百慕大 |
BN | 文莱达鲁萨兰国 |
BO | 玻利维亚 |
BR | 巴西 |
BS | 巴哈马 |
BT | 不丹 |
BW | 博茨瓦纳 |
BY | 白俄罗斯 |
BZ | 伯利兹 |
CA | 加拿大 |
CD | 刚果(金) |
CF | 中非共和国 |
CG | 刚果(布) |
CH | 瑞士 |
CI | 科特迪瓦 |
CK | 库克群岛 |
CL | 智利 |
CM | 喀麦隆 |
CO | 哥伦比亚 |
CR | 哥斯达黎加 |
CV | 佛得角 |
CW | 库拉索 |
CY | 塞浦路斯 |
CZ | 捷克 |
DE | 德国 |
DJ | 吉布提 |
DK | 丹麦 |
DM | 多米尼克 |
DO | 多米尼加共和国 |
DZ | 阿尔及利亚 |
EC | 厄瓜多尔 |
EG | 埃及 |
ES | 西班牙 |
ET | 埃塞俄比亚 |
FI | 芬兰 |
FJ | 斐济 |
FK | 福克兰群岛(马尔维纳斯群岛) |
FM | 密克罗尼西亚联邦 |
FO | 法罗群岛 |
FR | 法国 |
GA | 加蓬 |
GB | 英国 |
GD | 格林纳达 |
GE | 格鲁吉亚 |
GF | 法属圭亚那 |
GG | 根西岛 |
GH | 加纳 |
GI | 直布罗陀 |
GL | 格陵兰 |
GM | 冈比亚 |
GP | 瓜德罗普 |
GQ | 赤道几内亚 |
GR | 希腊 |
GT | 危地马拉 |
GY | 圭亚那 |
HK | 中国香港特别行政区 |
HN | 洪都拉斯 |
HR | 克罗地亚 |
HT | 海地 |
HU | 匈牙利 |
ID | 印度尼西亚 |
IE | 爱尔兰 |
IL | 以色列 |
IM | 马恩岛 |
IN | 印度 |
IQ | 伊拉克 |
IT | 意大利 |
JE | 泽西岛 |
JM | 牙买加 |
JO | 约旦 |
JP | 日本 |
KE | 肯尼亚 |
KG | 吉尔吉斯斯坦 |
KH | 柬埔寨 |
KM | 科摩罗 |
KN | 圣基茨和尼维斯 |
KR | 韩国 |
KW | 科威特 |
KY | 开曼群岛 |
KZ | 哈萨克斯坦 |
LA | 老挝人民民主共和国 |
LB | 黎巴嫩 |
LC | 圣卢西亚 |
LI | 列支敦士登 |
LK | 斯里兰卡 |
LS | 莱索托 |
LT | 立陶宛 |
LU | 卢森堡 |
LV | 拉脱维亚 |
LY | 利比亚 |
MA | 摩洛哥 |
MD | 摩尔多瓦 |
ME | 黑山 |
MF | 圣马丁(法国) |
MG | 马达加斯加 |
MK | 马其顿共和国 |
MM | 缅甸 |
MN | 蒙古 |
MO | 中国澳门特别行政区 |
MS | 蒙特塞拉特 |
MT | 马耳他 |
MU | 毛里求斯 |
MW | 马拉维 |
MX | 墨西哥 |
MY | 马来西亚 |
MZ | 莫桑比克 |
NA | 纳米比亚 |
NC | 新喀里多尼亚 |
NE | 尼日尔 |
NF | 诺福克岛 |
NG | 尼日利亚 |
NI | 尼加拉瓜 |
NL | 荷兰 |
NO | 挪威 |
NP | 尼泊尔 |
NZ | 新西兰 |
OM | 阿曼 |
PA | 巴拿马 |
PE | 秘鲁 |
PG | 巴布亚新几内亚 |
PH | 菲律宾 |
PK | 巴基斯坦 |
PL | 波兰 |
PM | 圣皮埃尔和密克隆群岛 |
PR | 波多黎各 |
PS | 巴勒斯坦地区 |
PT | 葡萄牙 |
PY | 巴拉圭 |
QA | 卡塔尔 |
RE | 留尼汪岛 |
RO | 罗马尼亚 |
RS | 塞尔维亚 |
RU | 俄罗斯联邦 |
RW | 卢旺达 |
SA | 沙特阿拉伯 |
SC | 塞舌尔 |
SE | 瑞典 |
SG | 新加坡 |
SH | 圣赫勒拿 |
SI | 斯洛文尼亚 |
SK | 斯洛伐克 |
SL | 塞拉利昂 |
SN | 塞内加尔 |
SR | 苏里南 |
ST | 圣多美和普林西比 |
SV | 萨尔瓦多 |
SZ | 斯威士兰 |
TC | 特克斯和凯科斯群岛 |
TG | 多哥 |
TH | 泰国 |
TL | 东帝汶 |
TM | 土库曼斯坦 |
TO | 汤加 |
TR | 土耳其 |
TT | 特立尼达和多巴哥 |
TW | 中国台湾 |
TZ | 坦桑尼亚联合共和国 |
UA | 乌克兰 |
UG | 乌干达 |
US | 美国 |
UY | 乌拉圭 |
UZ | 乌兹别克斯坦 |
VC | 圣文森特和格林纳丁斯 |
VE | 委内瑞拉玻利瓦尔共和国 |
VG | 英属维尔京群岛 |
VI | 美属维尔京群岛 |
VN | 越南 |
WS | 萨摩亚 |
YE | 也门 |
YT | 马约特岛 |
ZA | 南非 |
ZM | 赞比亚 |
ZW | 津巴布韦 |
Firebase Authentication:在使用 电话身份验证?
为了保护您的项目免受短信流量激增和 API 滥用的影响,请按以下步骤操作:
请考虑设置短信区域政策
-
查找发送短信数量非常多且验证短信数量非常少(或为零)的区域。已验证/发送成功率就是成功率。 健康的成功率通常在 70-85% 范围内,因为短信不是一种有保证的传送协议,而且某些区域可能存在滥用行为。成功率低于 50% 意味着发送的短信很多,但成功登录的次数很少,这是作恶方和短信流量激增的常见现象。
使用短信区域政策来拒绝成功率较低的短信区域,或者如果您的应用仅打算在某些市场中分发,则仅允许某些区域。
限制已获授权的身份验证网域
使用 Authentication 设置信息中心来管理已获授权的网域。默认情况下,系统会将 localhost
网域添加到已获批准的身份验证网域中,以简化开发。请考虑从生产项目的授权网域中移除 localhost
,以防止作恶方在其 localhost
上运行代码以访问您的生产项目。
启用并强制执行 App Check
启用 App Check 可以证明请求仅来自与项目关联的应用,从而帮助您保护项目免遭 API 滥用。
如需将 App Check 与 Firebase Authentication 搭配使用,您必须升级到 Firebase Authentication with Identity Platform。
请注意,您需要在 Firebase 控制台中强制执行 App Check for Authentication(请考虑在强制执行之前监控流量)。此外,请仔细检查 reCAPTCHA Enterprise 批准的网站列表,验证其是否仅包含您的生产网站,以及您在 App Check 中注册到项目的应用列表是否准确。
请注意,App Check 会断言调用来自您的某个注册应用,从而帮助您防范自动攻击。它不会阻止用户以非预期方式使用您的应用(例如,启动然后就完全不再完成登录流程来生成发送的短信)。
Firebase Authentication:电话身份验证是否支持将电话号码携号转入新的运营商?
目前,在运营商之间转移号码将导致所有短信都无法发送给这些最终用户。此问题没有解决办法,Firebase 正在努力解决。
Firebase Authentication:在我的 Android 应用中,为什么我会收到
出现以下错误:
Google sign in failed
?
Google sign in failed
如果您遇到以下错误,请按照此常见问题解答中的问题排查步骤操作:
GoogleFragment: Google sign in failed
com.google.android.gms.common.api.ApiException: 13: Unable to get token.
at
com.google.android.gms.internal.auth-api.zbay.getSignInCredentialFromIntent(com.google.android.gms:play-services-auth@@20.3.0:6)
确保已正确启用 Google 登录作为身份验证提供方:
在 Firebase 控制台中,打开 Authentication部分。
在登录方法标签页中,停用 Google 登录方法,然后重新启用(即使已启用):
打开 Google 登录方法,将其停用,然后点击保存。
重新打开 Google 登录方法,将其启用,然后点击保存。
确保您的应用使用的是其最新的 Firebase 配置文件 (
google-services.json
)。
获取应用的配置文件。检查您是否仍遇到该错误。如果是,请继续往下执行后续的问题排查步骤。
确保所需的基础 OAuth 2.0 客户端已存在。
Firebase Authentication:在 Apple 平台应用中,我为什么
收到以下错误:
You must specify <clientID> in <GIDConfiguration>
?
You must specify <clientID> in <GIDConfiguration>
如果您遇到以下错误,请按照此常见问题解答中的问题排查步骤操作:
You must specify |clientID| in |GIDConfiguration|
确保已正确启用 Google 登录作为身份验证提供方:
在 Firebase 控制台中,打开 Authentication部分。
在登录方法标签页中,停用 Google 登录方法,然后重新启用(即使已启用):
打开 Google 登录方法,将其停用,然后点击保存。
重新打开 Google 登录方法,将其启用,然后点击保存。
确保您的应用使用的是其最新的 Firebase 配置文件 (
GoogleService-Info.plist
)。
获取应用的配置文件。检查您是否仍遇到该错误。如果是,请继续往下执行后续的问题排查步骤。
确保所需的基础 OAuth 2.0 客户端已存在。
Firebase Authentication:在我的 Web 应用中,为什么我会收到
出现以下错误:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
?
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
如果您遇到以下错误,请按照此常见问题解答中的问题排查步骤操作:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
确保已正确启用 Google 登录作为身份验证提供方:
在 Firebase 控制台中,打开 Authentication部分。
在登录方法标签页中,停用 Google 登录方法,然后重新启用(即使已启用):
打开 Google 登录方法,将其停用,然后点击保存。
重新打开 Google 登录方法,将其启用,然后点击保存。
此外,在 Authentication 的 Google 登录提供方配置中 部分中,确保 OAuth 客户端 ID 和密钥与 Web 客户端匹配 显示在 凭据 Google Cloud 控制台的页面上(请查看 OAuth 2.0 客户端 ID) 部分)。
Firebase Authentication:在我的 Web 应用中,为什么通过重定向登录失败
发生以下错误:
This domain YOUR_REDIRECT_DOMAIN is not
authorized to run this operation
?
This domain YOUR_REDIRECT_DOMAIN is not
authorized to run this operation
如果您遇到以下错误,请按照此常见问题解答中的问题排查步骤操作:
This domain YOUR_REDIRECT_DOMAIN is not authorized to run this operation.
导致此错误的原因很可能是您的重定向网域未列为 Firebase Authentication 的已授权域,或 与 Firebase Authentication Service 搭配使用无效。
首先确保 YOUR_REDIRECT_DOMAIN 位于 Firebase 项目的已获授权的网域列表中。如果重定向网域已在此处列出,请继续对无效 API 密钥进行问题排查。
默认情况下,Firebase Authentication JS SDK 依赖您的 Firebase 的 API 密钥
一个标记为 Browser key
的项目,它使用此密钥来验证
根据已获授权的网域列表,登录重定向网址是否有效。
Authentication 会获取此 API 密钥,具体取决于您访问 Authentication SDK 的方式:
如果您使用 Hosting 提供的 Auth 帮助程序 让用户使用 Authentication JS SDK 登录,然后 Firebase 会自动 每次都会获取您的 API 密钥以及 Firebase 配置的其余部分 您部署到 Firebase Hosting 的过程。确保您的
authDomain
Web 应用firebaseConfig
正确无误 配置为使用 该Hosting网站的某个网域。您可以前往 发送至https://authDomain__/firebase/init.json
, 并检查projectId
是否与firebaseConfig
中的相应值一致。如果您自行托管登录流程 代码,那么 可以使用
__/firebase/init.json
文件提供 Firebase 添加到自托管的 Authentication JS SDK 重定向帮助程序。API 键,并且此配置文件中列出的projectId
应与网站 应用firebaseConfig
。
检查以确保此 API 密钥未被删除:前往 Google Cloud 控制台中的 API 和服务 > 凭据面板,其中列出了您的项目的所有 API 密钥。
如果
Browser key
未被删除,请检查以下各项:确保 Firebase Authentication API 位于以下 API 的允许 API 列表中 要访问的密钥(详细了解 API 密钥的 API 限制)。
如果您自行托管登录代码,请确保
__/firebase/init.json
文件中列出的 API 密钥与 Cloud 控制台中的 API 密钥匹配。如有必要,请更正该文件中的密钥,然后重新部署应用。如果
Browser key
已删除,您可以让 Firebase 为您生成新的 API 密钥:在 Firebase 控制台中,前往 settings > 项目设置,然后在您的应用部分中,点击您的 Web 应用。此操作会自动创建一个 API 密钥,您可以在 Web 应用的 SDK 设置和配置部分中查看该密钥。
请注意,在 Cloud 控制台中,这个新的 API 密钥不会称为
Browser key
;而是与您的 Firebase Web 应用的别名相同。如果您决定 添加 API 限制 此新 API 密钥,请确保 Firebase Authentication API 位于 允许的 API。创建新的 API 密钥后,请完成以下适用的步骤:
如果您使用预留的 Hosting 网址, 然后将您的应用重新部署到 Firebase,以便其能够自动获取 新的 API 密钥与您的 Firebase 配置的其余部分结合使用。
如果您自行托管登录代码,请复制新的 API 密钥并将其添加到
__/firebase/init.json
文件中,然后重新部署应用。
Firebase Authentication:如何手动构建 OAuth Web 客户?
打开 凭据 Google Cloud控制台页面。
在页面顶部,依次选择创建凭据 > OAuth 客户端 ID。
如果系统提示您配置权限请求页面,请按照屏幕上的说明操作,然后执行此常见问题解答的以下步骤。
创建 OAuth Web 客户端:
对于应用类型,选择 Web 应用。
对于已获授权的 JavaScript 来源,添加以下内容:
http://localhost
http://localhost:5000
https://PROJECT_ID.firebaseapp.com
https://PROJECT_ID.web.app
对于已获授权的重定向 URI,请添加以下内容:
https://PROJECT_ID.firebaseapp.com/__/auth/handler
https://PROJECT_ID.web.app/__/auth/handler
保存 OAuth 客户端。
将新的 OAuth 客户端 ID 和客户端密钥复制到剪贴板。
在 Firebase 控制台中,打开 Authentication部分。
在登录方法标签页中,打开 Google 登录提供方。 然后将您刚刚构建的网络服务器客户端 ID 和密钥 从 Google Cloud 控制台复制而来。点击保存。
Firebase Authentication:%APP_NAME%
怎么样
用于确认
?
在 2022 年 12 月之前,电子邮件模板中的 %APP_NAME%
会填充 OAuth 品牌名称,每当 Android 应用在 Firebase 项目中注册时,系统都会自动预配该名称。现在,由于 OAuth 品牌仅在启用 Google 登录功能时才预配,因此下面将介绍如何确定 %APP_NAME%
:
如果 OAuth 品牌名称可用,则电子邮件模板中的
%APP_NAME%
将是 OAuth 品牌名称(与 2022 年 12 月之前的行为相同)。如果 OAuth 品牌名称不可用,则确定电子邮件模板中
%APP_NAME%
的方式如下:对于 Web 应用,
%APP_NAME%
将是 默认的 Firebase Hosting 网站名称 (.firebaseapp.com
和.web.app
之前的值,通常 Firebase 项目 ID)。对于移动应用:
如果请求中包含 Android 软件包名称或 iOS 软件包 ID,则
%APP_NAME%
将(分别)是 Play 商店或 App Store 中使用的应用名称。否则,
%APP_NAME%
将是 默认的 Firebase Hosting 网站名称 (.firebaseapp.com
和.web.app
之前的值,通常 Firebase 项目 ID)。
请注意,如果查找默认的 Firebase Hosting 网站名称失败, 那么最终的后备方案是使用 Firebase 项目 ID 作为
%APP_NAME%
。
Cloud Functions
Cloud Functions 运行时支持
如何升级到最新的受支持 Node.js 版本?
- 确保您使用的是 Blaze 定价方案。
- 确保您使用的是最新版 Firebase CLI。
- 在您的函数的
package.json
中更新engines
字段。 - (可选)使用 Firebase Local Emulator Suite 测试您的更改。
- 重新部署所有函数。
如何确保将函数部署到特定的 Node.js 运行时?
在 Firebase 控制台中,前往函数信息中心。 选择一个函数,然后在 更多详情。
我在使用 Firebase Extensions,Cloud Functions 运行时更新是否会影响我?
会。由于扩展程序使用 Cloud Functions 函数,因此您的扩展程序运行时需要与 Cloud Functions 函数按照相同的时间安排更新。
我们建议您定期将项目中安装的每个扩展程序更新到最新版本。您可以将项目的通过 Firebase 控制台 或 Firebase CLI。
Cloud Messaging
Cloud Messaging:这两者之间有什么区别 Notifications Composer 和 Cloud Messaging?
Firebase Cloud Messaging 可提供一整套消息传递功能 通过其客户端 SDK 以及 HTTP 和 XMPP 服务器实现这些功能。 协议若要针对更复杂的消息传递要求进行部署,FCM 是一个不错的选择。
Notifications Composer 是一款轻量级的无服务器消息传递工具 基于Firebase Cloud Messaging构建的解决方案。由于具有易用的图形控制台,且减少了对代码的需求,因此 Notifications Composer 使用户可以轻松地发送消息以再次吸引并留住用户,促进应用增长,并助力营销宣传活动。
功能 | Notifications Composer | Cloud Messaging | |
---|---|---|---|
目标 | 单个设备 | ||
已订阅相应主题(例如天气)的客户端 | |||
预定义细分用户群(应用、版本、语言)中的客户端 | |||
Analytics 特定受众群体中的客户端 | |||
设备组中的客户端 | |||
从客户端发到服务器的上行消息 | |||
消息类型 | 通知(最大 2 kb) | ||
数据消息(最大 4 kb) | |||
传送 | 立即 | ||
将来(客户端设备本地时间) | |||
Analytics | 内置通知分析功能(数据收集与漏斗分析) |
Cloud Messaging:Apple 宣布将弃用 APNs 的旧版二进制协议需要我做什么吗?
否。Firebase Cloud Messaging 已在 2017 年。如果您使用 FCM 向 iOS 设备发送通知, 您无需采取任何行动。
Cloud Messaging:我是否需要使用其他 Firebase 才能使用FCM吗?
您可以将 Firebase Cloud Messaging 作为独立组件使用, 与使用 GCM 的方式相同,无需使用其他 Firebase 服务。
Cloud Messaging:我是现有客户 Google Cloud Messaging (GCM) 开发者。 我应该迁移到Firebase Cloud Messaging吗?
FCM 是 Firebase 品牌旗下的新版 GCM。 它继承了 GCM 的核心基础架构,并带有新的 SDK, Cloud Messaging 开发更轻松。
升级至 FCM SDK 的好处包括:
- 客户端开发更简单。您无需再编写自己的注册或订阅重试逻辑。
- 开箱即用的通知解决方案。您可以使用 Notifications Composer(具有 Web 控制台的无服务器通知解决方案),让任何人都可以根据 Google Analytics 中的数据洞见向特定的目标受众群体发送通知。
Cloud Messaging:为什么我的目标设备会显然显示 收不到邮件?
如果设备似乎无法成功接收消息,请先检查以下两个可能的原因:
通知消息的前台消息处理。 当应用位于设备前台时,客户端应用需要添加消息处理逻辑,以便处理通知消息。请参阅适用于 iOS 应用和 Android 应用的详细信息。
网络防火墙限制。如果贵组织有 该防火墙将流量限制到 您需要将其配置为允许连接 FCM才能购买 您的 Firebase Cloud Messaging 客户端应用来接收消息。 要打开的端口为:
- 5228
- 5229
- 5230
FCM 通常使用 5228,有时也使用 5229 和 5230。 FCM 不提供具体 IP,因此您应该允许 防火墙允许对以下集群中包含的所有 IP 地址的传出连接: Google 15169 ASN 中列出的 IP 段。
Cloud Messaging:我已实现
onMessageReceived
,但其
调用。
当应用在后台运行时,通知消息会显示在系统任务栏中,且系统不会调用 onMessageReceived
。包含数据载荷的通知消息显示在系统任务栏中,其中的数据可在用户点按通知时从启动的意图中检索得到。
如需了解详情,请参阅接收和处理消息。
Notifications Composer:这与 Notifications Composer 和 Cloud Messaging?
Notifications Composer 是一款轻量级的无服务器消息传递工具 基于Firebase Cloud Messaging构建的解决方案。由于具有易用的图形控制台,且减少了对代码的需求,因此 Notifications Composer 使用户可以轻松地发送消息以再次吸引并留住用户,促进应用增长,并助力营销宣传活动。
Firebase Cloud Messaging 可提供一整套消息传递功能 通过其客户端 SDK 以及 HTTP 和 XMPP 服务器实现这些功能。 协议若要针对更复杂的消息传递要求进行部署,FCM 是一个不错的选择。
下面对 Firebase Cloud Messaging 和 Notifications Composer:
功能 | Notifications Composer | Cloud Messaging | |
---|---|---|---|
目标 | 单个设备 | ||
已订阅相应主题(例如天气)的客户端 | |||
预定义细分用户群(应用、版本、语言)中的客户端 | |||
Analytics 特定受众群体中的客户端 | |||
设备组中的客户端 | |||
从客户端发到服务器的上行消息 | |||
消息类型 | 通知(最大 2 kb) | ||
数据消息(最大 4 kb) | |||
传送 | 立即 | ||
将来(客户端设备本地时间) | |||
Analytics | 内置通知分析功能(数据收集与漏斗分析) |
Notifications Composer:我目前在使用 Google Cloud Messaging (GCM) 进行开发,但想改用 Notifications Composer。我该怎么做?
Notifications Composer 是一款开箱即用的解决方案,可让任何人根据 Google Analytics 分析结果,向特定的目标受众群体发送通知。同时,Notifications Composer 还提供每条消息的渠道分析数据,以便您轻松评估通知效果。
如果您现在是 GCM 开发者,则必须从 GCM SDK 升级到 FCM SDK 才能使用 Notifications Composer。请参阅 Android 应用和 iOS 应用的迁移指南。
已于 2023 年 6 月弃用 FCM 功能
哪些 FCM API 已于 2023 年 6 月 20 日弃用?如果我正在使用这些 API,该怎么办?
以下 API/SDK 将受到弃用的影响:
服务器 API
API 名称 | API 端点 | 对用户的影响 | 需采取行动 |
---|---|---|---|
旧版 HTTP 协议 | https://fcm.googleapis.com/fcm/send | 向端点发送的请求将在 2024 年 6 月 21 日后开始失败。 | 迁移到 HTTP v1 API。 |
旧版 XMPP 协议 | fcm-xmpp.googleapis.com:5235 | 向端点发送的请求将在 2024 年 6 月 21 日后开始失败。 | 迁移到 HTTP v1 API。 |
实例 ID 服务器 API | https://iid.googleapis.com/v1/web/iid | 向端点发送的请求将在 2024 年 6 月 21 日后开始失败。 | 使用 Web JS SDK 创建 FCM Web 注册。 |
https://iid.googleapis.com/iid/* | 端点会继续工作,但 2024 年 6 月 21 日之后将不支持使用静态服务器密钥进行身份验证。 | 使用源自服务账号的 OAuth 2.0 访问令牌。 | |
Device Group Management API | https://fcm.googleapis.com/fcm/notification | 端点会继续工作,但 2024 年 6 月 21 日之后将不支持使用静态服务器密钥进行身份验证。 | 使用源自服务账号的 OAuth 2.0 访问令牌。 |
通过 XMPP 进行上行消息传递 | fcm-xmpp.googleapis.com:5235 | 2024 年 6 月 21 日之后,在应用中对 FirebaseMessaging.send 进行 API 调用不会触发发送到应用服务器的上行消息。 | 在您的服务器逻辑中实现此功能。例如,一些开发者会实现自己的 HTTP/gRPC 端点,并直接调用该端点以从其客户端向应用服务器发送消息。如需查看使用 gRPC 的上行消息传递实现示例,请参阅 gRPC 快速入门。 |
Batch Send API | https://fcm.googleapis.com/batch | 向端点发送的请求将在 2024 年 6 月 21 日后开始失败。 | 迁移到标准 HTTP v1 API 发送方法,该方法支持 HTTP/2 进行多路复用。 |
Firebase Admin SDK API
API 名称 | API 语言 | 对用户的影响 | 需采取行动 |
---|---|---|---|
sendToDevice()
|
Node.js | 该 API 将在 2024 年 6 月 21 日之后停止运行,因为它会调用旧版 HTTP send API。 | 使用 send() 方法。 |
sendToDeviceGroup()
|
Node.js | 该 API 将在 2024 年 6 月 21 日之后停止运行,因为它会调用旧版 HTTP send API。 | 使用 send() 方法。 |
sendAll()/sendAllAsync()/send_all()/sendMulticast()/SendMulticastAsync()/send_multicast()
|
Node.js、Java、Python、Go、C# | 这些 API 在 2024 年 6 月 21 日之后将会停止运行,因为它们会调用 Batch Send API。 | 请升级到最新的 Firebase Admin SDK 并改用新的 API:sendEach()/
sendEachAsync()/send_each()/sendEachForMulticast()/sendEachForMulticastAsync()/
send_each_for_multicast() 。
请注意,新 API 不再调用已弃用的批量发送 API,因此,与旧 API 相比,新 API 会创建更多并发 HTTP 连接。 |
客户端 SDK
SDK 版本 | 对用户的影响 | 需采取行动 |
---|---|---|
GCM SDK(已于 2018 年弃用) | 2024 年 6 月 21 日之后,使用 GCM SDK 的应用将无法注册令牌,也无法接收来自 FCM 的消息。 | 将您的 Android SDK 升级到最新的 Firebase SDK(如果尚未升级)。 |
JS SDK 版本低于 7.0.0(2019 年版本 7.0.0 发生了重大变化) | 2024 年 6 月 21 日之后,使用旧版 JS SDK 的 Web 应用将无法再注册令牌。 | 将您的 Firebase Web SDK 升级到最新版本。 |
在 2024 年 6 月之前,我的服务会降级吗?
不会。您可以在 12 个月(2023 年 6 月 20 日 - 2024 年 6 月 21 日)内从旧 API 迁移到新 API,在此期间,服务不会降级。我们强烈建议您尽早规划迁移,以免在 2024 年 6 月受到 API 停用的影响。
2024 年 6 月之后,使用上面列出的 API/SDK 时,您可能会发现错误有所增加或缺少功能(如需了解详情,请参阅后续的常见问题解答)。
如何以及何时关停已废弃的 API?
FCM 将开始逐步关停已弃用的 API 大约 2024 年 7 月 22 日此日期之后,已弃用的服务将 “闪烁”越来越多的 请求将返回错误响应。在逐步关停期间,以下行为和错误响应会随着时间的推移而增加频率:
类别 | 要执行的操作 |
---|---|
旧版 HTTP 协议 | 请求被拒绝并显示 HTTP 代码 301。 |
旧版 XMPP 协议 | 请求遭拒,错误代码为 302。 |
FCM 上行 | FCM 后端以静默方式丢弃的消息。 |
Batch Send API | 请求被拒绝,错误代码为 UNIMPLEMENTED 和错误 消息“此 API 已弃用。” |
GCM SDK - 注册令牌 | 请求被拒绝并显示 HTTP 代码 301。 |
GCM SDK - 发送消息 | 请求被拒绝,错误代码为 400,错误消息为“V3 令牌已弃用。” |
JS SDK 版本 <7.0.0 | 请求被拒绝并显示 HTTP 代码 501。 |
使用服务器密钥访问实例 ID 和设备组管理 API | 请求被拒绝并显示 HTTP 代码 401。 |
您可以申请 扩展(如果您无法完成从已弃用的 FCM 的迁移) 。如果您获准延期,则不会受到逐步关停的影响,直到延期结束为止。延期结束后,您的流量可能会迅速下降。
OAuth 2.0 令牌和服务器密钥有何区别?
OAuth 2.0 令牌是源自服务账号的短期令牌。它是 Google 的标准身份验证模型,比静态服务器密钥更安全。
如需有关使用 Google Auth 库获取令牌的指南,请参阅使用凭据来创建访问令牌。
请注意,使用 OAuth 2.0 令牌向不同端点发送请求时,请求标头会有所不同。
- HTTP v1 API:
Authorization: Bearer $oauth_token
- Instance ID server API 和 Device group Management API:
Authorization: Bearer $oauth_token
access_token_auth: true
我可以一次性将所有请求迁移到新的 API 吗?
我们建议您循序渐进地将流量迁移至新 API。如果您预计每分钟要发送超过 60 万条消息,请与 Firebase 支持团队联系,了解如何增加配额或获得有关如何分散流量的建议。
向主题/设备组发送消息时,HTTP v1 API 与旧版 API 有何区别?
主题:使用 v1 API 时,无需向主题目标添加“/topics/”前缀。
设备组:您可以在 HTTP v1 API 中将组令牌用作令牌目标。但是,HTTP v1 API 不会在响应中返回成功/失败计数。我们建议您使用 FCM 主题或自行管理设备组。
HTTP v1 API 是否支持在一个请求中向多个令牌发送消息?
不支持。此功能在旧版 HTTP API 中称为“多播”,HTTP v1 API 不支持该功能,而 HTTP v1 API 的可伸缩性设计得更好。
对于端到端延迟时间至关重要或扇出总大小较小(少于 100 万)的用例,Google 推荐使用 HTTP v1 API 发送多个单独的请求。通过 HTTP/2 实现的 HTTP v1 API 对 99.9% 的多播请求(发送不到 100 个令牌)的效果类似。对于离群值用例(发送 1000 个令牌),它最多可获得三分之一的吞吐量速率,因此需要额外的并发性来优化这种非典型用例。与使用旧版多播相比,使用 HTTP v1 API 的用户能够体验到更高的可靠性和可用性。
对于优先考虑吞吐量和出站流量带宽或者总扇出大小较大(超过 100 万)的使用场景,Google 建议使用主题消息传递。虽然主题消息传递需要一次性操作才能让接收者订阅某个主题,但可以为每个项目提供高达 10,000 QPS 的扇出率,并且对主题大小没有最大限制。
哪些版本的 Firebase Admin SDK 提供了新 API?
平台 | Firebase Admin SDK 版本 |
---|---|
Node.js | >=11.7.0 |
Python | >=6.2.0 |
Java | >=9.2.0 |
Go | >=4.12.0 |
.NET | >=2.4.0 |
批量发送 API 和 HTTP v1 API 有何区别?
FCM Batch Send API 使用与 HTTP v1 API 相同的消息格式和身份验证机制。但是,它使用不同的端点。如果您想提高效率,应考虑使用 HTTP/2 通过同一 HTTP 连接向 HTTP v1 API 发送多个请求。
如果我无法访问项目,该怎么办?
请与 Google Cloud 支持团队联系以获取帮助。
新项目是否可以启用旧版 Cloud Messaging API?
不能。自 2024 年 5 月 20 日起,新项目将不能再启用旧版 API。
FCM 配额和限制
我需要在 2 分钟内通知大量客户。
遗憾的是,我们无法支持此用例。您必须将流量分配在 5 分钟内。
我的应用会通知用户相关活动。消息必须立即送达,以支持我的商业模式。我可以获得更多配额吗?
很遗憾,由于这个原因,我们无法批准增加配额。您必须将流量分配在 5 分钟内。
我的消息是关于预定活动的,我需要在每小时的整点发送所有流量。
我们建议您至少在活动开始前 5 分钟开始发送通知。
我的配额申请需要多长时间才能得到处理?
这在一定程度上取决于您所使用的 FCM。 无论如何,您应该会在几个工作日内收到答复。在某些情况下 在使用 FCM 和各种 这可能会延长过程。如果满足所有要求 大多数请求都会在 2 周内得到处理。
如何监控配额使用情况?
请参阅 Google Cloud 指南,了解如何绘制图表 和监控配额指标。
429 对我/我的业务来说很难处理。我是否可以申请豁免或获得更多配额,以避免遇到 429 错误?
虽然我们理解配额限制可能具有挑战性,但配额对于保持服务的可靠性至关重要,因此我们不能给予豁免待遇。
我可以为临时活动申请更多配额吗?
您可以申请更多配额以支持持续时间长达 1 个月的某项活动。请至少提前 1 个月提交请求,并明确说明活动的开始和结束时间,FCM 将尽量满足您的请求(不能保证一定会增加配额)。在活动结束日期之后,这些增加的配额将会还原。
我当前的配额是否会发生变化?
尽管 Google 不会轻易这样做,但为了保护系统的完整性,配额可能会根据需要进行更改。如果可能,Google 会提前通知您此类变化。
Cloud Storage for Firebase
Cloud Storage for Firebase:为什么我无法使用 Cloud Storage for Firebase?
Cloud Storage for Firebase 会在 App Engine 中创建默认存储分区 免费层级。这样,您就可以快速启动并运行 Firebase 和Cloud Storage for Firebase,无需投入资金 卡或启用 Cloud Billing 账号。它还可以让您轻松 在 Firebase 和 Google Cloud 项目之间共享数据。
但存在两种已知情况: 已创建,您将无法使用“Cloud Storage for Firebase”:
- 从 Google Cloud 导入的包含 App Engine 的项目 主/从 Datastore 应用。
-
从包含域名的 Google Cloud 导入的项目
带有前缀的项目。例如:
domain.com:project-1234
。
这些问题当前没有变通方案,我们建议 您在 Firebase 控制台中创建一个新项目并启用 Cloud Storage for Firebase。
Cloud Storage for Firebase:为什么我会收到错误代码 412 有关服务账号权限和服务账号故障的响应 Cloud Storage for Firebase API 时执行的操作?
您收到了 412 错误代码,可能是因为 您的项目或某个项目未启用 Cloud Storage for Firebase API 所需的服务账号缺少必需的权限。
有关详情,请参阅相关的常见问题解答。
Cloud Storage for Firebase:在采用 Spark 方案的项目中,我可以存储可执行文件吗?
对于采用免费 (Spark) 方案的项目,Firebase 会禁止上传和托管某些 适用于 Windows、Android 和 Apple 的可执行文件类型(由 Cloud Storage for Firebase 和 Firebase Hosting。此政策旨在防止我们的平台上出现滥用行为。
对于在 2023 年 9 月 28 日或之后创建的所有 Spark 项目,系统会阻止传送、托管和上传不允许的文件。如果现有 Spark 项目包含在该日期之前上传的文件,则此类文件仍然可以上传和托管。
此限制适用于采用 Spark 方案的项目。采用随用随付 (Blaze) 方案的项目不会受影响。
以下文件类型无法托管在 Firebase Hosting 和 Cloud Storage for Firebase 上:
- 扩展名为
.exe
、.dll
和.bat
的 Windows 文件 - 扩展名为
.apk
的 Android 文件 - 扩展名为
.ipa
的 Apple 平台文件
我需要做什么?
如果您仍想在 2023 年 9 月 28 日之后托管这些文件类型:
- 对于 Hosting:请先升级到 Blaze 方案,然后再部署这些方案
通过
firebase deploy
命令将文件类型复制到 Firebase Hosting。 - 对于存储:升级至 Blaze 方案,将这些类型的文件上传至 选择的存储分区,可以使用 GCS CLI、Firebase 控制台或 Google Cloud 控制台。
使用 Firebase 工具管理您的 Firebase Hosting 和 Cloud Storage 资源。
- 如需管理 Firebase Hosting 中的资源,请使用 Firebase 控制台 根据本指南删除版本。
- 如需管理“Cloud Storage”中的资源,请前往 存储 商品页面。
- 在文件标签页上,在文件夹层次结构中找到要删除的不允许的文件,然后使用面板左侧文件名旁边的复选框将其选中。
- 点击删除,然后确认文件已被删除。
如需详细了解如何使用 Firebase 工具管理 Hosting 资源以及如何使用客户端库管理 Cloud Storage for Firebase 存储桶,请参阅我们的文档。
Cloud Storage for Firebase:为什么我会看到意外的 上传和下载操作次数激增?
以前,下载请求和向 Cloud Storage for Firebase API 上传请求 进行统计我们已采取措施解决此问题,自 2023 年 9 月 15 日起生效。
对于 Blaze 用户,上传和下载操作将开始计入您的每月账单。对于 Spark 用户,他们将开始计入您的每月免费限额。
我们建议您监控用量页面,了解是否有用量增加可能计入您的限额。
Cloud Storage for Firebase:为什么我会看到新服务 与使用 Cloud Storage for Firebase?
Firebase 使用服务账号来运行和管理服务,而无需共享用户凭据。创建 Firebase 项目时,您可能会发现项目中已经有许多服务账号。
Cloud Storage for Firebase 使用的服务账号范围限定为您的
项目,命名为 service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com
。
如果您在 2022 年 9 月 19 日之前使用了 Cloud Storage for Firebase,则
在之前关联的 Cloud Storage 上看到额外的服务账号
名为 firebase-storage@system.gserviceaccount.com
的存储分区。从 2022 年 9 月 19 日开始,此服务账号已不再受支持。
您可以在以下位置查看与您的项目关联的所有服务账号: Firebase 控制台的“服务账号”标签页上。
添加此新服务账号
如果您之前移除了服务账号,或者项目中不存在服务账号,则可以执行以下任一操作来添加账号。
- (推荐)自动:使用 AddFirebase REST 端点将您的存储桶重新导入 Firebase。您只需要调用此端点一次,不需要为每个关联的存储桶分别调用该端点。
-
手动:按照创建和管理服务账号中的步骤操作。参照该指南,添加具有 IAM 角色
Cloud Storage for Firebase Service Agent
且名为service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com
的服务账号。
移除新的服务账号
我们强烈建议您不要移除服务账号,因为 可能会阻止您的应用访问 Cloud Storage 存储分区。接收者 从项目中移除服务账号,请按照停用服务账号中的说明操作。
Crashlytics
请访问 Crashlytics问题排查和常见问题解答页面 查看实用提示和更多常见问题解答。
Dynamic Links
Dynamic Links:Firebase 对 Dynamic Links 的未来计划是什么?
请参阅 Dynamic Links 常见问题解答。
Dynamic Links:为什么我的 Android 应用会访问每个动态链接 两次?
getInvitation
API 会清除保存的动态链接,以免访问其两次。请务必在每个深层链接 Activity 中调用此 API 并将 autoLaunchDeepLink
参数设为 false
,以便在主 Activity 以外触发 Activity 时将相应链接清除。
Firebase Local Emulator Suite
为什么 Emulator Suite 日志会显示以“Multiple projectIds are not recommended in single project mode”(在单项目模式下不建议使用多个项目 ID)开头的错误?
此消息表示 Emulator Suite 检测到它可能正在使用不同的项目 ID 运行某个特定的产品模拟器。这可能表示配置错误,并且在模拟器尝试相互通信时以及在您尝试通过代码与模拟器交互时,可能会导致问题。如果项目 ID 不匹配,通常似乎缺少数据,因为存储在模拟器中的数据与项目 ID 相关联,并且互操作性取决于匹配的项目 ID。
开发者经常因为这个问题而感到困惑
默认情况下,Local Emulator Suite 现在只允许运行
项目 ID 除外,除非您在
firebase.json
配置文件。如果模拟器检测到多个项目 ID,则会记录警告,并可能会抛出严重错误。
在以下情况中检查项目 ID 声明是否存在不一致的现象:
-
在命令行中设置的默认项目。默认情况下,项目 ID 会在启动时从使用
firebase init
或firebase use
选择的项目中获取。如需查看项目列表(以及查看已选择的项目),请使用firebase projects:list
。 -
单元测试。项目 ID 通常在对规则单元测试库方法
initializeTestEnvironment
或initializeTestApp
的调用中指定。其他测试代码可以使用initializeApp(config)
进行初始化。 -
命令行
--project
标志。传递 Firebase CLI--project
标志会替换默认值 项目。您需要确保该标志的值与单元测试和应用初始化中的项目 ID 一致。
特定于平台的检查位置:
Web | JavaScript firebaseConfig 对象中的 projectId 属性,在 initializeApp 中使用。 |
Android | google-services.json 配置文件中的 project_id 属性。 |
Apple 平台 | GoogleService-Info.plist 配置文件中的 PROJECT_ID 属性。 |
如需停用单项目模式,请使用 singleProjectMode
键更新 firebase.json
:
{ "firestore": { ... }, "functions": { ... }, "hosting": { ... }, "emulators": { "singleProjectMode": false, "auth": { "port": 9099 }, "functions": { "port": 5001 }, ... } }
Hosting
Hosting:在采用 Spark 方案的项目中,我可以存储可执行文件吗?
对于采用免费 (Spark) 方案的项目,Firebase 会禁止上传和托管某些 适用于 Windows、Android 和 Apple 的可执行文件类型(由 Cloud Storage for Firebase 和 Firebase Hosting。此政策旨在防止我们的平台上出现滥用行为。
对于在 2023 年 9 月 28 日或之后创建的所有 Spark 项目,系统会阻止传送、托管和上传不允许的文件。如果现有 Spark 项目包含在该日期之前上传的文件,则此类文件仍然可以上传和托管。
此限制适用于采用 Spark 方案的项目。采用随用随付 (Blaze) 方案的项目不会受影响。
以下文件类型无法托管在 Firebase Hosting 和 Cloud Storage for Firebase 上:
- 扩展名为
.exe
、.dll
和.bat
的 Windows 文件 - 扩展名为
.apk
的 Android 文件 - 扩展名为
.ipa
的 Apple 平台文件
我需要做什么?
如果您仍想在 2023 年 9 月 28 日之后托管这些文件类型:
- 对于 Hosting:请先升级到 Blaze 方案,然后再部署这些方案
通过
firebase deploy
命令将文件类型复制到 Firebase Hosting。 - 对于存储:升级至 Blaze 方案,将这些类型的文件上传至 选择的存储分区,可以使用 GCS CLI、Firebase 控制台或 Google Cloud 控制台。
使用 Firebase 工具管理您的 Firebase Hosting 和 Cloud Storage 资源。
- 如需管理 Firebase Hosting 中的资源,请使用 Firebase 控制台 根据本指南删除版本。
- 如需管理“Cloud Storage”中的资源,请前往 存储 商品页面。
- 在文件标签页上,在文件夹层次结构中找到要删除的不允许的文件,然后使用面板左侧文件名旁边的复选框将其选中。
- 点击删除,然后确认文件已被删除。
如需详细了解如何使用 Firebase 工具管理 Hosting 资源以及如何使用客户端库管理 Cloud Storage for Firebase 存储桶,请参阅我们的文档。
Hosting:为什么我的“Hosting”版本历史记录表包含 在 Firebase 控制台中显示的文件数超出本地文件数 会发生什么呢?
Firebase 会自动添加额外的文件,其中包含有关 Hosting 个网站,而这些文件会计入 发布。
Hosting:我可以使用的最大文件大小 要部署到 Firebase Hosting 吗?
Hosting 的大小上限为 2 GB 单个文件。
我们建议您使用 Cloud Storage,它提供了 最大大小限制(以 TB 为单位)。
Hosting:每个我可以拥有多少个 Hosting 网站 Firebase 项目?
Firebase Hosting 多网站 功能最多支持 36 个网站 项目。
Performance Monitoring
请访问 Performance Monitoring问题排查和常见问题解答页面 查看实用提示和更多常见问题解答。
Performance Monitoring:我可以创建多少个自定义网址格式?
您可以为每个应用创建最多 400 个自定义网址格式,并为该应用的每个网域创建最多 100 个自定义网址格式。
Performance Monitoring: 为什么我看不到实时显示的效果数据?
要查看实时性能数据,请确保您的应用使用的是 Performance Monitoring 个与实时数据兼容的 SDK 版本 处理。
- iOS - v7.3.0 或更高版本
- tvOS - v8.9.0 或更高版本
- Android - v19.0.10 或更高版本(或者 Firebase Android BoM v26.1.0 或更高版本)
- Web — v7.14.0 或更高版本
请注意,我们始终建议使用最新版本的 SDK 上面列出的版本将使“Performance Monitoring”能够近乎实时地处理您的数据 。
Realtime Database
Realtime Database:为什么我的Realtime Database遭到举报 带宽低于 2016 年 9 月至 2017 年 3 月的平均带宽?
对于带宽计算,我们通常囊括了 SSL 加密开销(基于 OSI 模型的第 5 层)。然而,在 2016 年 9 月,我们引入了一个导致带宽报告忽略加密开销的错误。这可能会人为造成报告的带宽和账单有几个月偏低。
我们在 2017 年 3 月底发布了一个针对该错误的修补程序,使带宽报告和计费恢复到正常水平。
Realtime Database: Realtime Database?
每个 Realtime Database 实例的写入次数都有限制 每秒操作次数对于较小的写入操作,此限值约为每秒 1000 次写入操作。如果你已接近 限制, 使用多路径更新的批处理操作可以帮助您 实现更高的吞吐量
此外,每个数据库实例都有数据库并发连接数上限。 我们的默认限值对于大多数应用都已足够。如果您构建的应用需要更大规模,您可能需要将应用在多个数据库实例之间进行分片,以增加规模。您也可以考虑用 Cloud Firestore 作为替代数据库。
Realtime Database:如果超过了 Realtime Database 周岁,该怎么办 用量限额?
如果您在 Firebase控制台,表示您超出了 Realtime Database 的用量限额,您 根据您超出的用量限额来解决。要查看您的 Realtime Database 用法,请参阅 Realtime Database “使用情况”信息中心 Firebase 控制台。
如果超出了下载限制,则可以升级 Firebase 定价方案,或等到下一个结算周期开始且下载限制重置后再下载。要减少下载的数据量,请尝试以下步骤:
- 添加查询以限制您的监听操作返回的数据。
- 检查未利用索引的查询。
- 使用仅下载数据更新的监听器。例如,使用
on()
,而不是once()
。 - 使用安全规则阻止未经授权的下载。
如果您已超出存储限制,请升级您的定价方案以避免服务中断。要减少数据库中的数据量,请尝试以下步骤:
- 运行定期清理作业。
- 减少数据库中的重复数据。
请注意,您可能需要过一段时间才会看到数据删除操作反映在存储配额中。
如果超出数据库并发连接数的限制,请升级您的方案以避免服务中断。要管理数据库的并发连接数,请尝试让用户通过 REST API 进行连接(如果他们不需要实时连接)。
Remote Config
Remote Config:提取的值为什么不更改 的行为和外观?
除非您使用 fetchAndActivate()
提取值,否则这些值会存储在本地但不激活。要激活提取的值以使其生效,请调用 activate
。此设计可让您控制应用的行为和外观发生改变的时间,因为您可以选择何时调用 activate
。在您调用 activate
后,您的应用源代码将确定何时使用更新后的参数值。
例如,您可以先提取值,然后在下次用户启动应用时将其激活,这样就无需因应用等待从服务提取值而延长应用启动时间。之后,当应用使用更新后的参数值时,应用的行为和外观就会发生改变。
如需详细了解 Remote Config API 和使用模式,请参阅 Remote Config API 概览。
Remote Config:我发出了很多提取请求 我的应用为什么我的应用无法始终获取最新值 会发生什么呢?
在应用开发期间,您可能需要非常频繁地(每小时很多次)提取和激活配置,从而可以在开发和测试应用时快速迭代。为了让不超过 10 名开发者对项目进行快速迭代,您可以暂时在应用中设置一个最小提取间隔 (setMinimumFetchIntervalInSeconds
) 较短的 FirebaseRemoteConfigSettings
对象。
Remote Config:Remote Config 的运行速度 服务在我的应用发送提取请求后返回提取的值?
设备一般会在一秒内收到所提取的值,甚至常常以毫秒级延迟收到值。Remote Config 服务 以毫秒级的速度处理提取请求 将取决于设备的网速 设备使用的网络连接的延迟时间。
如果您的目标是让提取的值尽快在您的应用中生效,同时不产生令人不悦的用户体验,请考虑在每次该应用执行全屏刷新时添加对 fetchAndActivate
的调用。
Test Lab
请访问 Test Lab 问题排查页面 ,获取实用提示和常见问题解答。
Firebase 用户细分存储
什么是 Firebase 用户细分存储?
Firebase 用户细分存储存储区 Firebase 安装 ID 以及相关的属性和细分,以及您创建的受众群体名单 为使用它们的其他 Firebase 服务提供定位信息, 例如 Crashlytics、FCM、Remote Config 个性化等。