本页面提供了问题排查帮助,并解答了有关 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 客户端应用接收消息。要打开的端口为:
FCM 通常使用 5228,有时也使用 5229 和 5230。
FCM 不提供具体 IP,因此您应允许防火墙接受指向以下 IP 地址的传出连接:Google 15169 ASN 中列出的 IP 块中包含的所有 IP 地址。
为什么我的 Android 应用中未调用 onMessageReceived
?
当应用在后台运行时,通知消息会显示在系统任务栏中,且系统不会调用 onMessageReceived
。对于包含数据载荷的通知消息,通知消息会显示在系统任务栏中,其中的数据可在用户点按通知时从启动的意图中检索得到。
如需了解详情,请参阅接收和处理消息。
为什么我的应用在注册 FCM 时会收到“Invalid argument for the given fid”?
FID(Firebase 安装 ID)是应用实例的标识符。如果从备份恢复了应用实例的安装数据,则 FCM 会返回此错误,以表明 FID 已被其他应用实例占用,因此当前应用实例无法使用该 FID 向 FCM 注册。
我们建议开发者在其应用中执行以下操作:
- 在备份中排除 Firebase 安装数据。Firebase 安装数据存储在
PersistedInstallation....json
文件中。文件名是应用的常量。例如,<exclude domain="file" path="PersistedInstallation....json"
/>
- 在收到“Invalid argument for the given fid”错误时,删除
PersistedInstallation....json
文件。下次您的应用向 FCM 注册时,系统会创建一个新的 FID。
Apple 宣布将弃用 APNs 的旧版二进制协议。我需要做些什么吗?
不需要。Firebase Cloud Messaging 已于 2017 年改为使用基于 HTTP/2 的 APNs 协议。如果您使用 FCM 向 iOS 设备发送通知,则无需执行任何操作。
FCM 配额和限制
如何在 2 分钟内通知大量客户?
我们无法支持此用例。您必须将流量分配在 5 分钟内。
我的应用会向用户通知活动,这些消息必须立即送达,以支持我的业务模式。我可以申请更多配额吗?
很抱歉,我们无法因此原因批准增加配额。您必须将流量分配在 5 分钟内,以避免出现流量高峰。
我的消息是关于预定活动的。如何才能在每小时的整点发送所有流量?
我们建议您至少在活动开始前 5 分钟开始发送通知。或者,发送数据消息并实现平台对应的 onMessageReceived
处理程序,以便提前安排本地通知。
429 错误对我和我的业务来说很难处理。我是否可以申请豁免或获得更多配额,以避免遇到 429 错误?
虽然我们理解配额限制可能具有挑战性,但配额对于保持服务的可靠性至关重要,因此我们不能给予豁免待遇。使用重试来正确处理 429 错误。
我的配额增加申请需要多长时间才能得到处理?
您的配额增加申请取决于您对 FCM 的使用情况。无论如何,您应该会在几个工作日内收到答复。在某些情况下,您可能需要就 FCM 的使用情况和各种情况进行反复沟通,这可能会延长审批流程。如果满足所有要求,我们会在 2 周内处理大多数请求。
我可以为临时活动申请更多配额吗?
您可以申请更多配额以支持持续时间长达 1 个月的某项活动。请至少提前 1 个月提交请求,并明确说明活动的开始和结束时间,FCM 将尽量满足您的请求。如果获得批准,这些增加的配额将在活动结束日期之后还原。
我当前的配额是否会发生变化?
尽管 Google 不会轻易这样做,但为了保护系统的完整性,配额可能会根据需要进行更改。如果可能,Google 会提前通知您此类变化。请及时更新您的 Cloud MSA 联系人,以便更有可能收到服务公告。