本页面提供了问题排查帮助,并解答了有关 Cloud Messaging 的常见问题。
Notifications Composer 与 FCM 有何不同?
Firebase Cloud Messaging 通过其客户端 SDK 和 HTTP 服务器协议提供了一整套消息传递功能。若要应对更复杂的消息传递需求,FCM 是正确的选择。
Notifications Composer 是一个基于 Firebase Cloud Messaging 构建的轻量级无服务器消息传递解决方案。Notifications Composer 提供易用的图形控制台,同时减少编码需求,使用户能够发送消息,从而重新吸引并留住用户、促进应用增长以及支持营销活动。
功能 | Notifications Composer | Cloud Messaging | |
---|---|---|---|
目标 | 单个设备 | ||
已订阅相应主题(例如天气)的客户端 | |||
预定义细分用户群(应用、版本、语言)中的客户端 | |||
Analytics 特定受众群体中的客户端 | |||
设备组中的客户端 | |||
从客户端发到服务器的上行消息 | |||
消息类型 | 通知(最大 2 kb) | ||
数据消息(最大 4 kb) | |||
传送 | 立即 | ||
将来(客户端设备本地时间) | |||
Analytics | 内置通知分析功能(数据收集与漏斗分析) |
我需要使用其他 Firebase 服务才能使用 FCM 吗?
您可以将 Firebase Cloud Messaging 独立使用,无需依赖其他 Firebase 服务。
为什么我的目标设备似乎无法接收消息?
如果设备似乎无法成功接收消息,请先检查以下两个可能的原因:
通知消息的前台消息处理。当应用位于设备前台时,客户端应用需要添加消息处理逻辑,以便处理通知消息。请参阅 iOS 和 Android 的详细信息。
网络防火墙限制。如果贵组织的防火墙限制了进出互联网的流量,则需要将其配置为允许连接 FCM,以便 Firebase Cloud Messaging 客户端应用能够接收消息。要打开的端口为:
- 5228
- 5229
- 5230
FCM 通常使用 5228,有时也使用 5229 和 5230。 FCM 不提供具体 IP,因此您应将防火墙配置为放行指向 Google 15169 ASN 中所列 IP 块的所有传出连接。
为什么我的 Android 应用中未调用 onMessageReceived
?
当应用在后台运行时,通知消息会显示在系统通知栏中,且不会调用 onMessageReceived
。包含数据载荷的通知消息会显示在系统通知栏中。用户点按通知时,可从启动的意图中获取其中包含的数据。
如需了解详情,请参阅接收和处理消息。
为什么我的应用在注册 FCM 时会收到“给定的 fid 参数无效”?
FID(Firebase 安装 ID)是应用实例的标识符。如果应用实例的安装数据是从备份中恢复的,FCM 会返回此错误,表示该 FID 已被其他应用实例占用,当前应用实例因此无法使用该 FID 向 FCM 注册。
我们建议开发者在其应用中执行以下操作:
- 建议在备份时排除 Firebase 安装数据。Firebase 安装数据存储在
PersistedInstallation....json
文件中。该文件名在应用中是固定的。例如:<exclude domain="file" path="PersistedInstallation....json" />
- 收到“给定的 fid 参数无效”错误时,请删除
PersistedInstallation....json
文件。下次您的应用向 FCM 注册时,系统会创建一个新的 FID。
Apple 宣布将弃用 APNs 的传统二进制协议。我需要执行任何操作吗?
不需要。Firebase Cloud Messaging 已于 2017 年改为使用基于 HTTP/2 的 APNs 协议。如果您使用 FCM 向 iOS 设备发送通知,则无需执行任何操作。
FCM 配额和限制
如何在 2 分钟内通知大量客户?
此用例无法支持。您必须在 5 分钟内分散发送流量。
我的应用会向用户推送事件通知,这些消息必须立即送达,以支持我的业务模式。我可以申请更多配额吗?
很抱歉,我们无法因此原因批准增加配额。您必须将流量分配在 5 分钟内,以避免出现流量高峰。
我的消息内容涉及计划事件。如何才能在每小时的整点发送所有流量?
我们建议您至少在活动开始前 5 分钟开始发送通知。或者,发送数据消息并实现平台对应的 onMessageReceived
处理程序,以便提前安排本地通知。
如何监控配额使用情况?
请参阅 Google Cloud 指南,了解如何绘制图表和监控配额指标。
429 错误对我和我的业务来说很难处理。我是否可以申请豁免或获得更多配额,以避免遇到 429 错误?
虽然我们理解配额限制可能带来挑战,但配额对于确保服务的可靠性至关重要,因此我们无法提供豁免。建议使用重试机制以正确处理 429 错误。
我的配额增加申请需要多长时间才能得到处理?
您的配额增加申请取决于您对 FCM 的使用情况。无论如何,您应该会在几个工作日内收到答复。在某些情况下,您可能需要就 FCM 的使用情况和各种情况进行多次沟通,这可能会延长处理流程。如果满足所有要求,我们会在 2 周内处理大多数请求。
我可以为临时活动申请更多配额吗?
您可以申请更多配额以支持持续时间长达 1 个月的某项活动。请至少提前 1 个月提交请求,并清楚说明活动的起止时间,FCM 将尽一切可行努力满足该请求。如果获得批准,这些增加的配额将在活动结束日期之后还原。
我当前的配额是否会发生变化?
尽管 Google 不会轻易更改配额,但为保护系统完整性,仍可能视情况调整配额。如果可能,Google 会提前通知您此类变化。请及时更新您的 Cloud MSA 联系人,以提高接收服务公告的可能性。