还有其他难题,或是您的问题未在下面列出?请报告错误或提出功能请求,并在 Stack Overflow 上参与讨论。
升级至 Firebase
如何将 Firebase 添加到现有 Google 项目中?
您可以通过 Google Cloud Console 或 Google API 控制台管理现有项目。默认情况下,这些项目会显示在 Firebase 控制台中,但不会被视为 Firebase 项目。
要将 Firebase 添加到现有项目,请点击 Firebase 控制台着陆页上的添加项目,然后在项目名称菜单中选择您的项目。
项目和 Firebase 控制台
Firebase 项目介绍
项目是一种用于存放 iOS 应用、Android 应用和网页应用的容器。它支持在跨平台应用之间共享功能,如数据库、配置和通知。
您应将应用的 iOS 版、Android 版和网页版都添加到一个项目中。您可以使用多个项目来支持多个环境(如开发环境、临时环境和生产环境)。
我可以在一个帐号中添加多少个项目?
- Spark 免费方案 - 您只能拥有少量项目配额(通常约为 5-10 个)。
- 付费方案 - 只要您的 Cloud 结算帐号信誉良好,您的每个结算帐号的项目配额就会大幅增加。
大多数开发者很少关注项目配额限制,但如果您有需要,可以申请增加项目配额。
请注意,要彻底删除项目,需要 30 天时间,且在彻底删除前,待删除项目计入您的项目数量。
我可以在一个项目中添加多少个 Firebase 应用?
项目是一种用于存放 iOS 应用、Android 应用和 Web 应用的容器。 项目中的应用数量是没有限制的,但添加一个应用可能会创建一个或多个基础 OAuth 2.0 客户端 ID。在一个项目中只能创建大约 30 个客户端 ID。
您应该确保一个项目中的所有应用在最终用户眼里是相同应用的不同平台变体。例如,如果您开发一个白标应用,则每个独立加标签的应用都应该有自己的 Firebase 项目。
添加 Android 应用时是否需要提供 SHA-1?
Firebase 身份验证(使用 Google 登录或电话号码登录时)和 Firebase 动态链接需要 SHA-1 信息。如果您未使用这些功能,则无需提供 SHA-1。
我如何解决以下错误:“其他项目中已存在使用此软件包名称和 SHA-1 的 OAuth2 客户端”?
如果我们检测到其他 Firebase 或 Google Cloud 项目中存在使用指定软件包名称和 SHA-1 的 OAuth 2.0 客户端 ID,就会发送此错误消息。您可以按照此处的说明解决此问题。
如何设置我的 Firebase 控制台语言?
Firebase 控制台的语言设置取决于在 Google 帐号设置中的“帐号偏好设置”>“语言和输入工具”下选择的语言。
Firebase 控制台提供以下语言版本:
- 英语
- 葡萄牙语(巴西)
- 法语
- 德语
- 印度尼西亚语
- 日语
- 韩语
- 俄语
- 简体中文
- 西班牙语
- 繁体中文
Firebase 控制台支持哪些角色和权限?
Firebase 控制台和 Google Cloud Console 使用相同的基础角色和权限。如需详细了解角色和权限,请参阅 Firebase IAM 文档。
Firebase 支持的基础(原初)角色有 Owner、Editor 和 Viewer:
- 项目 Owner 可以向项目添加其他成员,设置集成(将项目关联到 BigQuery 或 Slack 等服务),并拥有项目的完整修改权限。
- 项目 Editor 拥有对项目的完全编辑权限。
- 项目 Viewer 只拥有对项目的读取权限。请注意,我们的界面目前不会对项目查看者隐藏/停用界面编辑控件,但拥有 Viewer 角色的用户将无法执行这些操作。
Firebase 还支持以下角色:
- Firebase 预定义角色 - 精选的 Firebase 特有角色。相比 Owner、Editor 和 Viewer 等原初角色,这些角色可帮助实现更精细的访问权限控制。
- 自定义角色 - 由您创建的完全自定义的 IAM 角色,用于定制一组满足您组织的具体要求的权限。
将 Play/AdMob/Ads/BigQuery 关联到我的 Firebase 项目有何前提条件?
- 要关联 Play 帐号,您必须同时是 Firebase 项目所有者和 Play 帐号所有者。
- 要关联 AdMob 应用,您必须同时是 Firebase 项目所有者和 AdMob 管理员。
- 要关联 Ads 帐号,您必须同时是 Firebase 项目所有者和 Ads 管理员。
- 要关联 BigQuery 项目,您必须是 Firebase 项目所有者。
哪些浏览器可用于访问 Firebase 控制台?
Firebase 控制台可以通过最新版本的常用桌面浏览器(例如 Chrome、Firefox、Safari 和 Edge)访问, 但目前尚未全面支持移动浏览器。
我需要在应用中包含哪些开源声明?
在 iOS 上,Firebase pod 包含一份内含相关条目的 NOTICES 文件。Android SDK 包含一个用于显示许可信息的帮助程序操作组件。
Firebase 支持哪些版本的 Xcode?
Firebase 最多支持 Xcode 的两个主要版本,不包括 Apple 不再支持的 Xcode 版本。例如,从 2019 年 3 月开始,Apple 要求所有 iOS 应用至少在 iOS 12 上运行,这意味着 Xcode 9 支持将被舍弃,而 Xcode 10 将成为唯一受支持的主要版本。
我们根据 Firebase iOS SDK 的需求和开发者使用情况调查,确定是否更改对 Xcode 的特定次要或补丁版本(例如,9.2.0 到 9.4.1)的支持。这些更改会反映在 Firebase iOS SDK 版本说明和 Firebase iOS SDK 设置页面中。
要查看 Firebase iOS SDK 支持的最低 Xcode 版本,请检查将 Firebase 添加到您的 iOS 项目中列出的要求。
Firebase 对 Xcode 测试版的支持是以“尽力而为”为原则提供的。 开发者可以在 GitHub 上的 Firebase iOS SDK 代码库中跟踪和提交问题。
价格
哪些产品需要付费?哪些产品是免费的?
Firebase 的付费基础架构产品包括实时数据库、存储、函数、托管、测试实验室和电话身份验证。我们为所有这些功能提供一个免费层级。
Firebase 还有许多免费产品:Analytics、云消息传递、通知编辑器、远程配置、App Indexing、动态链接、邀请和崩溃报告。您可以在所有方案中无限量地使用这些产品,包括我们的免费 Spark 方案。此外,除电话身份验证之外的所有身份验证功能都是免费的。
我如何知道哪个方案适合我?
我们的 Spark 方案对于您免费开发应用来说十分合适,无论是出于个人兴趣的项目还是为了启动下个重大项目。您可以获得所有免费的 Firebase 功能(Analytics、通知编辑器、崩溃报告等)以及大量付费基础架构功能。然而,如果您在一个日历月中超过您的 Spark 方案资源,您的应用将在该月剩余的时间内关闭。此外,Google Cloud Platform 功能在 Spark 层级中不可用。
我们的 Flame 方案设计用于初期创业公司和小规模生产应用,这些应用需要以可预测的低价格获得比实时数据库、存储服务或托管资源提供的免费层级更多的容量。与 Spark 方案一样,Google Cloud Platform 功能在 Flame 层级中不可用。 如果在任何月份超过您的方案资源,将导致您的应用在该月剩余的时间内关闭。
我们的 Blaze 方案设计用于大规模生产应用,以及那些无法接受由于超过方案上限导致停机的应用。Blaze 方案还可让您使用付费 Google Cloud Platform 功能扩展您的应用。您只需为您消耗的资源付费,这使您可根据需求调整使用规模。我们致力于使 Blaze 方案的价格与行业领先的云服务提供商提供的价格相比具有竞争力。
Blaze 方案中的免费使用量与 Spark 方案中的免费使用量有何不同?
Blaze 方案中的免费使用量按天计算。对于 Cloud Functions、电话身份验证和测试实验室,Blaze 方案中的使用限制也与 Spark 方案不同。
对于 Cloud Functions,Blaze 方案中的免费使用量在结算帐号级(而非项目级)计算,并且具有以下限制:
- 200 万次调用/月
- 40 万 GB-秒/月
- 20 万 CPU-秒/月
- 5 GB 的网络出站流量/月
对于电话身份验证,Blaze 方案中的免费使用量按月计算。
对于测试实验室,Blaze 方案中的免费使用量具有以下限制:
- 30 分钟/天(真机设备)
- 60 分钟/天(虚拟设备)
我从 Spark 方案转换到 Blaze 方案后,免费使用量配额会重置吗?
Blaze 方案包含 Spark 方案提供的免费使用量。 您转换到 Blaze 方案后,免费使用量不会重置。
什么是“数据库并发连接”?
并发连接相当于连接到数据库的一台移动设备、浏览器标签页或服务器应用。Firebase 对应用数据库的并发连接数设定了硬性限制。这些限制是为了保护 Firebase 和我们的用户,以避免滥用问题。
Spark 方案的上限为 100,并且不能增加。Flame 和 Blaze 方案的限制为每个数据库 20 万个并发连接。
限制数量并不等于您的应用的用户总数,因为这些用户不会在同一时间全部连接。如果您需要的并发连接数超过 20 万个,请参阅利用多个数据库进行扩展。
如果我超过了实时数据库的 Spark 或 Flame 方案的存储或下载上限,会发生什么情况?
为了向您提供可预测的价格,Spark 方案和 Flame 方案对您可以使用的资源数设定了上限值。这意味着,如果您在任一月份超过了方案上限,您的应用将被关闭,以停止进一步使用资源,防止产生额外费用。
如果我超过了实时数据库的 Spark 方案的并发连接数上限,会发生什么情况?
当您的应用达到 Spark 方案的并发连接数限值时,后续的任何连接都将被拒,直到某些现有连接关闭为止。已建立连接的用户可以继续使用应用。
如果我超过了 Cloud Storage 的 Spark 或 Flame 方案的上传、下载或存储限制,会发生什么情况?
如果您的项目超过了 Cloud Storage 的 Spark 或 Flame 方案上限,结果将取决于您超出的限制类型:
- 如果超过了存储的 GB 限制,您将无法在该项目中存储更多数据,除非您移除存储的部分数据或升级到提供更多存储空间或无限存储空间的方案。
- 如果超过了下载的 GB 限制,您的应用将无法在第二天(从美国太平洋时间午夜开始)之前下载更多数据,除非升级到限制较少的方案或无限制的方案。
- 如果超过了上传或下载操作次数限制,您的应用将无法在第二天(从美国太平洋时间午夜开始)之前上传或下载更多数据,除非升级到限制较少的方案或无限制的方案。
Firebase 与 Google Cloud Platform 如何集成?
Firebase 与 Google Cloud Platform 紧密集成。项目在 Firebase 和 Google Cloud Platform 之间共享,因此可以启用 Firebase 服务和 Google Cloud Platform 服务。您可以从 Firebase 控制台或 Google Cloud Console 访问同一个项目。 具体而言:
- 某些 Firebase 功能由 Google Cloud Platform 直接支持,例如 Firebase 存储。Google Cloud Platform 支持的功能将随着时间的推移而不断增加。
- Firebase 和 Google Cloud Platform 将共享您的众多设置(包括协作者和结算信息)。 您对 Firebase 和 Google Cloud Plaform 的使用情况将出现在同一帐单上。
此外,当您升级至 Blaze 方案后,您可以按标准 Google Cloud Platform 价格在您的 Firebase 项目中直接使用 Google Cloud Platform 的任何一流的基础架构即服务和 API。您还可以将数据从 Google Analytics for Firebase 直接导出到 BigQuery 进行分析。如需了解详情,请参阅将 BigQuery 与 Firebase 相关联。
将 Google Cloud Platform 与 Firebase 集成使用具有诸多益处,例如加强安全性、缩短延迟时间以及节省时间(与其他不在同一位置的云服务相比)。如需了解详情,请查看 Google Cloud Platform 网站。
如果我在 Google Cloud Console 中添加或移除我的 Firebase 项目的结算帐号,该项目会发生什么情况?
如果在 Google Cloud Console 中向项目中添加结算帐号,而该项目目前正在使用 Spark 或 Flame 方案,同一项目将自动升级到 Firebase Blaze 方案。
相反,如果在 Google Cloud Console 中从某个项目中移除现有的活跃结算帐号,该项目将被降级为 Firebase Spark 方案。
我是否能够随时升级、降级或取消?
是的,您能够随时升级、降级或取消。请注意,在降级或取消的情况下,我们不提供按比例退款。 这意味着,如果您在结算周期结束之前降级或取消,您仍需要支付该月剩余时间的费用。
我将得到何种支持?
所有 Firebase 应用(包括免费方案)在工作时间(按照美国太平洋时间)都能得到 Firebase 团队的电子邮件支持。所有帐号的限制为每年 10 次问题排查,但对于结算相关问题、帐号相关问题和事故报告的支持则不受限制。
我可以对 Blaze 方案的使用设置上限吗?
不可以,目前您不能设置 Blaze 方案使用的上限。我们正在评估支持 Blaze 方案使用上限的选项。
Blaze 用户可以为自己的项目或帐号定义预算,并在支出接近预算限制时收到提醒。如需了解详情,请参阅设置预算提醒。
什么是自动备份?是否提供每小时备份?
自动备份是面向 Blaze 方案客户的高级功能,可以每天备份一次 Firebase 实时数据库数据,并将这些数据上传到 Google Cloud Storage。
我们不提供每小时备份服务。
如果我在一个月的任意日期注册或降级 Flame 方案,费用是否按比例分摊?
对于升级可以,对于降级则不行。您可以随时升级或降级。升级按比例分摊,降级不按比例分摊。如果您在一个月的任意日期注册 Flame 方案,您只需要支付该月剩余时间的费用。但是,如果您在一个月的任意日期降级,您仍需要支付该月剩余时间的费用(以防滥用现象)。
是否提供开放源代码、非盈利或教育项目折扣?
我们的 Spark 和 Flame 方案适用于任何个人和组织,包括非营利组织、学校和开放源代码项目。由于这些方案已包含足够的配额,因此我们不为开放源代码、非盈利或教育项目提供特别折扣。
是否提供企业合同、定价、支持或专用基础设施托管?
我们的 Blaze 方案适用于各种规模的企业,我们的服务等级协议符合或超过云基础架构的业界标准。但是,目前我们不会为实时数据库等服务提供企业合同、定价或支持,也不会为这些服务提供专用基础架构托管(即现场安装)。我们正在努力尝试添加这些功能。
是否提供临时定价?我只想针对一两项功能进行即付即用。
我们在 Blaze 方案中提供临时定价,您只需为您使用的功能支付费用。
付费 Firebase 方案如何与 Google Ads 配合使用?对于付费方案,是否有免费的广告额度?
Firebase 定价方案独立于 Google Ads,因此没有免费的广告额度。作为 Firebase 开发者,您可以将 Google Ads 帐号与 Firebase 关联,以支持转化跟踪。
您可以直接在 Google Ads 中管理所有广告系列,同时通过 Google Ads 控制台管理 Google Ads 结算。
隐私权
我可以在何处找到关于 Firebase 中隐私权和安全性的信息?
请参阅 Firebase 中的隐私权和安全性页面。
Firebase SDK 会在 Google Analytics(分析)之外记录任何使用情况/诊断信息吗?
会。目前仅适用于 iOS,但将来可能会发生变化。默认情况下,Firebase iOS SDK 包含 FirebaseCoreDiagnostics
框架。Firebase 会使用该框架来收集 SDK 使用情况和诊断信息,以便帮助确定未来产品改进事项的优先级别。
FirebaseCoreDiagnostics
是可选的。因此,如果您想要停止发送 Firebase 诊断日志,从您的应用中解除库关联即可。要查看完整源代码(包括记录的值),您可以访问 [GitHub](https://github.com/firebase/firebase-ios-sdk/tree/master/Firebase/CoreDiagnostics)。
Google Analytics(分析)
在使用 Firebase 产品时,为什么建议使用 Google Analytics(分析)?
Google Analytics(分析)是一款免费且无限制的分析解决方案,可兼容 Firebase 功能,并提供强有力的数据洞见。您可用它查看 Crashlytics 中的事件日志、FCM 中的通知有效性、动态链接的深层链接效果、来自 Google Play 的应用内购买数据等。它是远程配置、预测等工具中的高级受众群体定位功能的技术后盾。
Google Analytics(分析)在 Firebase 控制台中充当“情报中心”,针对如何开发优质应用、扩大用户群并赚取更多收益,为您提供更具实际指导意义的数据洞见。
要开始使用,请阅读具体文档。
如何划分出不符合某些条件的用户?
您可以通过“排除性定位”这些用户来换个角度解读这个问题。 例如,将问题重新解读为“不向已购物的用户展示广告”,以此构造由要定位的用户构成的受众群体。
如何控制与 Firebase 其他部分的共享 Analytics(分析)数据的方式?
默认情况下,您的 Google Analytics(分析)数据会用于改进其他 Firebase 功能和 Google 功能的表现。您可以随时在项目设置中控制 Google Analytics(分析)数据的共享方式。详细了解数据共享设置。
经过全面升级的新 Google Analtyics(分析)帐号是什么?
您可以在我们的博文中了解有关 Google Analytics(分析)新升级的更多信息。
如何判断我使用的是 Google Analytics for Firebase 还是经过全面升级的 Google Analytics(分析)帐号?
如果您在 Firebase 控制台的“分析”信息中心内看到“在 Google Analytics(分析)中查看您的数据”链接,则表示您的项目正在使用经过全面升级的 Google Analytics(分析)帐号。
您还可以通过在 Firebase 控制台中查看 Google Analytics(分析)卡片(可以通过依次点击settings > 项目设置 > 集成并点击管理访问此卡片)来进行检查。如果您看到 Google Analytics(分析)媒体资源部分列有已关联的 Google Analytics(分析)帐号,则表示您的项目在 Firebase 中使用了完整的 Google Analytics(分析)体验。如果您没有看到已关联的 Google Analytics(分析)帐号,则表示您的项目使用的是 Google Analytics for Firebase。
在我升级到全新 Google Analytics for Firebase 之后,我的数据会怎样?
此升级不会影响您的 Firebase 控制台中的现有 Firebase 项目分析数据。
您将可以继续使用与当前相同的信息中心和工作流程,并且还可以使用 Google Analytics(分析)中的某些高级功能。
请注意,如果您决定在升级后启用跨设备报告,则系统将使用 UserID 对数据进行去重处理。这可能会减少 Firebase 控制台中的部分用户数。
什么是 Firebase 用户细分存储?
Firebase 用户细分存储可存储您创建的受众群体列表,以便为 Crashlytics、FCM、预测等使用这些列表的其他 Firebase 服务提供定位信息。
在解除我的应用与 Google Analytics(分析)的关联后,为什么我看不到任何数据?
您的分析数据存储在 Google Analytics(分析)媒体资源中,而非存储在 Firebase 项目中。如果您删除媒体资源或与其解除关联,那么您的数据也会与您的项目解除关联。不过数据仍然保留在该媒体资源中,您随时可以将其重新与您的项目关联。
创建新的 Google Analytics(分析)帐号(及新的媒体资源)会导致 Firebase 控制台内的“分析”信息中心变为空白。
在我尝试将项目升级到新的 Google Analytics(分析)体验时,为什么会出错?
如果您在升级时遇到错误,例如:
The operation has failed (Reason: Requested entity already exists)
或
The operation has failed (Reason: Precondition check failed)
则表示您的项目与现有的某个 Google Analytics(分析)媒体资源之间存在关联。您可以解除与该媒体资源的关联、将其删除,也可以通过 Google Analytics(分析)界面进行升级。
如果问题仍然存在,您可以通过 REST API 使用 removeAnalytics 方法解除关联,再使用 addGoogleAnalytics 方法关联一个新的媒体资源。
然后,您可以遵循此处介绍的步骤,将数据从一个媒体资源移动到另一个媒体资源。
在 Google Analytics(分析)中定义的受众群体和/或事件在 Firebase 信息中心内是否可用?
您的受众群体和用户属性将会同步。但若要使用某些功能(如细分和封闭漏斗),您需要使用 Google Analytics(分析)界面。您可以从 Firebase 控制台中的深层链接直接访问 Google Analytics(分析)界面。 您在 Firebase 控制台中执行的任何更改均可以在 Google Analytics(分析)中执行,而且这些更改会体现到 Firebase 中。
开发
Firebase 身份认证:哪些国家/地区支持电话身份验证?
Firebase 身份验证支持世界各地的电话号码验证,但并不是所有网络都能可靠地传递我们的验证消息。以下国家/地区的短信送达率很高,电话号码登录机制应该可以正常运行。
国家/地区 | 代码 |
---|---|
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 | 津巴布韦 |
崩溃报告:Analytics 中报告的崩溃为什么比崩溃报告少?
崩溃报告创建一个独立的后台进程来上传崩溃信息。如果您的应用继承自 Android Application 类,您需要保证其具有多进程安全性。否则,可能会导致并发问题。如果应用继承了 Application 对象,该对象将在多进程应用的每个进程中实例化。请在向您的应用中添加崩溃报告时注意以下事项:
- 如果此对象的实现访问任何进程外状态(数据库、文件系统、共享偏好设置等),或执行对于多进程环境不安全的其他操作,则可能出现并发问题。这是因为 Application 对象的多个实例可能同时运行。
- 很多第三方库保持处于进程外状态(例如在本地数据库中),在由 Application 对象实例化时可能出现相同的并发问题。如果您的应用符合以上描述,并且您计划在应用中使用崩溃报告,我们强烈建议您考虑将 Application 逻辑移至内容提供程序,或移至 Android Activity。任何对于多进程环境不安全的 Application 逻辑均可能对应用造成意外影响。
崩溃报告会自动将捕获的错误作为 app_exception 事件导出到 Google Analytics(分析)。当前在 Android 上,您可能发现崩溃报告错误与 Analytics app_exception 事件的数量严重不符。
云消息传递:通知编辑器与云消息传递之间有何不同?
Firebase 云消息传递通过客户端 SDK 以及 HTTP 和 XMPP 服务器协议提供了一组完整的消息传递功能。若要针对更复杂的消息传递要求进行部署,FCM 是一个不错的选择。
通知编辑器是一个基于 Firebase 云消息传递构建的轻量级无服务器消息传递解决方案。由于具有易用的图形控制台,且减少了对代码的需求,因此通知编辑器使用户可以轻松地发送消息以再次吸引并留住用户,促进应用增长,并助力营销活动。
功能 | 通知编辑器 | 云消息传递 | |
---|---|---|---|
目标 | 单个设备 | ||
已订阅相应主题(例如天气)的客户端 | |||
预定义细分用户群(应用、版本、语言)中的客户端 | |||
Analytics 特定受众群体中的客户端 | |||
设备组中的客户端 | |||
从客户端发到服务器的上行消息 | |||
消息类型 | 通知(最大 2kb) | ||
数据消息(最大 4kb) | |||
传送 | 立即 | ||
将来(客户端设备本地时间) | |||
分析 | 内置通知分析功能(数据收集与渠道分析) |
云消息传递:我需要使用其他 Firebase 服务才能使用 FCM 吗?
您可以像使用 GCM 一样将 Firebase 云消息传递作为独立组件使用,而不使用其它 Firebase 服务。
云消息传递:我现在是 Google 云消息传递 (GCM) 开发者。我应该迁移到 Firebase 云消息传递吗?
FCM 是 Firebase 品牌下的新版 GCM。 它继承了 GCM 的核心基础架构,并带有新的 SDK,简化了云消息传递的开发工作。
升级至 FCM SDK 的好处包括:
- 客户端开发更简单。您无需再编写自己的注册或订阅重试逻辑。
- 开箱即用的通知解决方案。您可以使用通知编辑器(具有 Web 控制台的无服务器通知解决方案),让任何人都可以根据 Google Analytics for Firebase 中的数据洞见向特定受众群体发送通知。
云消息传递:为什么我的目标设备似乎无法接收消息?
如果设备似乎无法成功接收消息,请先检查是否出于以下两种可能的原因:
通知消息的前台消息处理。当应用位于设备前台时,客户端应用需要添加消息处理逻辑,以便处理通知消息。请参阅适用于 iOS 应用和 Android 应用的详细信息。
网络防火墙限制。如果贵组织设有限制互联网上传/下载流量的防火墙,则您需要将其配置为允许连接 FCM 才能让您的 Firebase 云消息传递客户端应用接收消息。 要打开的端口为:
- 5228
- 5229
- 5230
FCM 通常使用 5228,有时也使用 5229 和 5230。FCM 不提供具体 IP,因此您应允许防火墙接受指向以下 IP 地址的传出连接:Google 15169 ASN 中列出的 IP 块中包含的所有 IP 地址。
云消息传递:我已在 Android 应用中实现了 onMessageReceived
,但系统未调用它。
当应用在后台运行时,通知消息会显示在系统任务栏中,且系统不会调用 onMessageReceived
。包含数据载荷的通知消息显示在系统任务栏中,其中的数据可在用户点按通知时从启动的意图中检索得到。
如需了解详情,请参阅接收和处理消息。
实时数据库:为什么我的实时数据库在 2016 年 9 月至 2017 年 3 月之间报告带宽低于平均水平?
对于带宽计算,我们通常囊括了 SSL 加密开销(基于 OSI 模型的第 5 层)。然而,在 2016 年 9 月,我们引入了一个导致带宽报告忽略加密开销的错误。这可能会人为造成报告的带宽和帐单有几个月偏低。
我们在 2017 年 3 月底发布了一个针对该错误的修补程序,使带宽报告和计费恢复到正常水平。
实时数据库:实时数据库对规模有何限制?
每个实时数据库实例对每秒写入操作数设定了限制。对于较小的写入操作,此限值约为每秒 1000 次写入操作。如果您已接近此限值,使用多路径更新的批处理操作可以帮助您获得更高的吞吐量。
此外,每个数据库实例有数据库并发连接数上限。我们的默认限值对于大多数应用都已足够。如果您构建的应用需要更大规模,您可能需要将应用在多个数据库实例之间进行分片,以增加规模。您也可以考虑用 Cloud Firestore 作为替代数据库。
实时数据库:如果我超过了我的实时数据库使用限制,该怎么办?
如果您在 Firebase 控制台中收到了有关您已超出实时数据库使用限制的电子邮件提醒或通知,您可以根据已超出的使用量限制情况采用相应对策。要查看您的实时数据库使用情况,请转到 Firebase 控制台的实时数据库使用情况部分。
如果超出了下载限制,则可以升级 Firebase 方案,或等到下一个结算周期开始且下载限制重置后再下载。要减少下载次数,请尝试以下步骤:
- 添加查询以限制您的侦听操作返回的数据。
- 检查未利用索引的查询。
- 使用仅下载数据更新的侦听器。例如,使用
on()
,而不是once()
。 - 使用安全规则阻止未经授权的下载。
如果您已超出存储限制,请升级您的方案以避免服务中断。要减少数据库中的数据量,请尝试以下步骤:
- 运行定期清理作业。
- 减少数据库中的重复数据。
请注意,您可能需要过一段时间才会看到数据删除操作反映在存储配额中。
如果超出数据库并发连接数的限制,请升级您的方案以避免服务中断。要管理数据库的并发连接数,请尝试让用户通过 REST API 进行连接(如果他们不需要实时连接)。
存储:为什么我无法使用 Cloud Storage?
Firebase 存储可在 Google App Engine 免费层级中创建默认存储分区。这样您可以快速启动并运行 Firebase 和 Firebase 存储,而不必输入信用卡信息或启用结算帐号。您还可以轻松在 Firebase 和 Google Cloud Platform 项目之间共享数据。
但存在两种已知情况,在这些情况下,无法创建此存储分区,造成您无法使用 Firebase 存储:
- 从 Google Cloud Platform 导入的包含 Google App Engine 主/从数据存储区应用的项目。
-
从 Google Cloud Platform 导入的包含网域前缀项目的项目。例如:
domain.com:project-1234
。
这些问题当前没有变通方案,我们建议您在 Firebase 控制台中创建新项目,并在该项目中启用 Firebase 存储。
发展和创收
远程配置:提取的值为什么不能更改应用的行为和外观?
除非您使用 fetchAndActivate() 提取值,否则这些值会存储在本地但不激活。要激活提取的值以使其生效,请调用 activate
。此设计可让您控制应用的行为和外观发生改变的时间,因为您可以选择何时调用 activate
。在您调用 activate
后,您的应用源代码将确定何时使用更新后的参数值。
例如,您可以先提取值,然后在下次用户启动应用时将其激活,这样就无需因应用等待从服务提取值而延长应用启动时间。 之后,当应用使用更新后的参数值时,应用的行为和外观就会发生改变。
如需详细了解 Remote Config API 和使用模式,请参阅 Remote Config API 概览。
远程配置:我在开发应用时发出了很多提取请求。应用在发送提取请求后,为什么有时不能从服务获取最新值?
在应用开发期间,您不妨非常频繁地(每小时多次)提取和激活配置,这样可以在开发和测试应用的同时快速迭代。为了方便最多 10 名开发者对项目进行快速迭代,您可以在应用中临时设置一个具有较短的最小提取间隔 (setMinimumFetchIntervalInSeconds
) 的 FirebaseRemoteConfigSettings
的对象。
远程配置:我的应用发送提取请求后,远程配置服务会以多快的速度返回所提取的值?
设备一般会在一秒内收到所提取的值,甚至常常以毫秒级延迟收到值。 远程配置服务会以毫秒级速度处理提取请求,但完成提取请求所需的时间取决于设备的网速以及设备使用的网络连接的延迟。
如果您的目标是让提取的值尽快在您的应用中生效,同时不产生令人不悦的用户体验,请考虑在每次该应用执行全屏刷新时添加对 fetchAndActivate
的调用。
动态链接:为什么我的 Android 应用会访问每个动态链接两次?
getInvitation
API 会清除保存的动态链接,以免访问其两次。请务必在每个深层链接 Activity 中调用此 API 并将 autoLaunchDeepLink
参数设为 false
,以便在主 Activity 以外触发 Activity 时将相应链接清除。
通知编辑器:通知编辑器与云消息传递之间有何不同?
通知编辑器是一个基于 Firebase 云消息传递构建的轻量级无服务器消息传递解决方案。由于具有易用的图形控制台,且减少了对代码的需求,因此通知编辑器使用户可以轻松地发送消息以再次吸引并留住用户,促进应用增长,并助力营销活动。
Firebase 云消息传递通过客户端 SDK 以及 HTTP 和 XMPP 服务器协议提供了一组完整的消息传递功能。若要针对更复杂的消息传递要求进行部署,FCM 是一个不错的选择。
Firebase 云消息传递与通知编辑器的消息传递功能比较如下:
功能 | 通知编辑器 | 云消息传递 | |
---|---|---|---|
目标 | 单个设备 | ||
已订阅相应主题(例如天气)的客户端 | |||
预定义细分用户群(应用、版本、语言)中的客户端 | |||
Analytics 特定受众群体中的客户端 | |||
设备组中的客户端 | |||
从客户端发到服务器的上行消息 | |||
消息类型 | 通知(最大 2kb) | ||
数据消息(最大 4kb) | |||
传送 | 立即 | ||
将来(客户端设备本地时间) | |||
分析 | 内置通知分析功能(数据收集与渠道分析) |
通知编辑器:我现在是 Google 云消息传递 (GCM) 开发者,我想使用通知编辑器。该怎么做?
通知编辑器是一款开箱即用的解决方案,可让任何人根据 Google Analytics for Firebase 分析结果,向特定的受众群体发送通知。同时,通知编辑器还提供每条消息的渠道分析数据,以便您轻松评估通知效果。
如果您现在是 GCM 开发者,则必须从 GCM SDK 升级到 FCM SDK 才能使用通知编辑器。请参阅 Android 应用和 iOS 应用的迁移指南。
预测:我刚刚将 Google Analytics(分析)添加到我的应用。我什么时候可以在控制台中看到预测结果?
预测是以用户的行为为基础,所依据的历史数据越多越好。Firebase 预测至少需要两周的数据:将一周的活动数据用于训练,然后用一周时间分析这些活动导致的结果(流失、支出等)。两周后,随着预测功能观察到更长时间内的用户活动情况,预测结果的质量通常也会逐步提升。
预测:需要多长时间才能对新用户做出预测?
对于已经安装 Google Analytics(分析)且利用基准数据进行了训练的应用,最早可以在新用户开始使用应用后的第二天对其进行预测。
App Indexing:Google 搜索是否可以将同一个应用的多个语言版本编入索引?
Google 搜索支持以下多语言用例:
- 关联网站上每种语言都有唯一网址,且每个网站网址都有一个对应的应用 HTTP 网址。
- 关联网站上每种语言都有唯一网址,但只有一个所有语言版本共用的应用 HTTP 网址。应用根据系统语言设置来显示正确语言的内容。
- 关联网站上所有语言都采用同一个网址(或只支持一种语言),且有一个对应的应用网址。如果用户未设置偏好设置,则网站和应用必须使用同一种语言显示内容。
App Indexing:App Indexing 是否支持多个网站指向同一个应用?
是。请务必通过 Google Play 管理中心验证 Android 应用的每个关联网站。您可以了解如何验证应用。
App Indexing:是否需要通过 Search Console 添加站点地图?
iOS 不需要站点地图,而且只要您的应用支持 HTTP 网址,Android 也不需要站点地图。对于自定义网址,您无需通过 Search Console 添加站点地图。您可以在 robots.txt 文件中引用站点地图,Google 搜索将会使用它们。您可以详细了解如何管理站点地图。不过,如果通过 Search Console 提交站点地图,您可以在 Search Console 中查看有关已提交并已编制索引的 HTTP 网址的统计信息。
AdMob:我能否将我的 Windows 应用关联到 Firebase?
Firebase 控制台目前不支持 Windows 应用。
AdMob:为什么我无法从 Firebase 控制台关联我的 AdMob 帐号?
您可以通过 AdMob 控制台将 AdMob 应用关联到 Firebase 应用。要关联帐号,您必须同时是 Firebase 项目所有者和 AdMob 管理员。
AdMob:多个用户可以将他们的 AdMob 帐号关联到同一个 Firebase 应用吗?
不可以,每个 AdMob 帐号只能有一个主用户。主用户是接受 Firebase 服务条款的第一个用户。
A/B 测试:我可以创建和运行多少个实验?
每个项目可以有 20 个实验,包括最多 6 个运行中的实验和最多 14 个实验草稿。
不过,一个最终用户/应用实例最多只能同时被纳入 3 个实验的范围。例如,如果您创建了 6 个以全部相关用户为定位目标的实验,如果某个应用实例符合 3 个以上有效实验的参加条件,则该实例只会被纳入最早创建的 3 个实验。 在这种情况下,第 4、5、6 个实验会以没有任何用户参加而告终。