FCM 消息简介 | Firebase Cloud Messaging

文章推薦指數: 80 %
投票人數:10人

通知消息,有时被称为“显示消息”。

此类消息由FCM SDK 自动处理。

数据消息,由客户端应用处理。

通知消息包含一组用户可见的预 ... 产品 构建 发布与监控 吸引 用例 价格 文档 概览 基础知识 构建 发布与监控 吸引 参考文档 示例 社区 学习 活动 支持 English BahasaIndonesia Deutsch Español–AméricaLatina Français Italiano Polski Português–Brasil TiếngViệt Türkçe Русский עברית العربيّة فارسی हिंदी বাংলা ภาษาไทย 中文–简体 中文–繁體 日本語 한국어 转到控制台 登录 Firebase文档 FCM 概览 基础知识 添加Firebase-Apple平台(iOS+) 添加Firebase-Android 添加Firebase-Web 添加Firebase-Flutter 添加Firebase-C++ 添加Firebase-Unity 添加Firebase-服务器环境 管理Firebase项目 支持的平台和框架 使用EmulatorSuite 构建 EmulatorSuite Authentication RealtimeDatabase Firestore Storage ML Hosting CloudFunctions 安全规则 AppCheck Extensions 发布与监控 Crashlytics PerformanceMonitoring TestLab AppDistribution 吸引 Analytics RemoteConfig A/BTesting CloudMessaging In-AppMessaging DynamicLinks GoogleAdMob GoogleAds AppIndexing 参考文档 示例 产品 更多 用例 价格 文档 更多 概览 基础知识 更多 构建 更多 发布与监控 更多 吸引 更多 参考文档 示例 社区 更多 支持 转到控制台 概览 Analytics 简介开始记录事件设置用户属性调试事件跟踪屏幕设置用户ID衡量电子商务衡量广告收入在WebView中使用通过CloudFunctions扩展配置数据收集和使用方式错误代码 C++ 开始记录事件设置用户属性 Unity 开始记录事件设置用户属性 RemoteConfig 简介开始 RemoteConfig有哪些用途? RemoteConfig用例 主要概念和策略 参数和条件模板和版本控制配置加载策略实时传播更新RemoteConfig与Analytics以编程方式修改RemoteConfig 个性化 概览开始 API参考文档 RESTAPI参考文档条件表达式参考文档AndroidSDK参考文档SwiftSDK参考文档Obj-CSDK参考文档Flutter参考文档Unity参考文档C++参考文档 A/BTesting 简介FirebaseA/BTesting简介使用A/BTesting来创建RemoteConfig实验使用A/BTesting来创建消息传递实验使用A/BTesting来创建In-AppMessaging实验视频系列:了解A/BTesting CloudMessaging 简介FCM架构概览FCM消息简介了解消息递送管理FCM注册令牌 iOS+ 设置Apple平台客户端发送测试消息向多台设备发送消息在通知载荷中发送图片接收消息向主题发送消息向设备组发送消息使用Firebase控制台发送消息 Android 设置Android客户端发送测试消息向多台设备发送消息在通知载荷中发送图片接收消息设置和管理消息优先级向主题发送消息向设备组发送消息发送上行消息使用Firebase控制台发送消息 Flutter 设置Flutter客户端发送测试消息接收消息订阅主题 C++ 设置C++客户端接收消息向主题发送消息向设备组发送消息使用Firebase控制台发送消息 Unity 设置Unity客户端接收消息向主题发送消息向设备组发送消息发送上行消息使用Firebase控制台发送消息 Web(JavaScript) 设置JavaScript客户端发送测试消息向多台设备发送消息接收消息向主题发送消息向设备组发送消息使用Firebase控制台发送消息 服务器环境 您的服务器环境和FCM迁移到HTTPv1API授权发送请求构建发送请求接收上行消息从服务器管理主题 In-AppMessaging 简介开始探索用例编写宣传活动修改消息行为自定义消息 DynamicLinks 简介 用例 概览将Web用户转化为应用用户邀请用户使用您的应用奖励用户引荐操作系统集成 创建动态链接 简介iOSAndroidFlutterC++UnityREST手动构造网址 接收动态链接 iOSAndroidFlutterC++Unity使用自定义域名查看分析数据调试动态链接链接预览和社交元数据 GoogleAdMob 简介面向iOS的使用入门面向Android的使用入门将Analytics和Firebase与AdMob应用结合使用 在游戏中使用AdMob C++ 开始Cocos2d-x激励视频广告 Unity 开始 解决方案 测试采用新广告格式的情况 解决方案概览解决方案教程 优化广告频率 解决方案概览解决方案教程 GoogleAds 简介 AppIndexing 概览 相关产品 Authentication Crashlytics Extensions 构建 发布与监控 吸引 概览 基础知识 构建 发布与监控 吸引 参考文档 示例 学习 活动 添加Firebase-Apple平台(iOS+) 添加Firebase-Android 添加Firebase-Web 添加Firebase-Flutter 添加Firebase-C++ 添加Firebase-Unity 添加Firebase-服务器环境 管理Firebase项目 支持的平台和框架 使用EmulatorSuite EmulatorSuite Authentication RealtimeDatabase Firestore Storage ML Hosting CloudFunctions 安全规则 AppCheck Extensions Crashlytics PerformanceMonitoring TestLab AppDistribution Analytics RemoteConfig A/BTesting CloudMessaging In-AppMessaging DynamicLinks GoogleAdMob GoogleAds AppIndexing 欢迎参加我们将于2022年10月18日举办的Firebase峰会(线上线下同时进行),了解Firebase如何帮助您加快应用开发速度、满怀信心地发布应用并在之后需要时轻松地扩大应用规模。

立即报名 Firebase Firebase文档 FCM 吸引 发送反馈 FCM消息简介 使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

FirebaseCloudMessaging(FCM)提供了众多消息传递选项和功能。

本页中的内容旨在帮助您了解不同类型的FCM消息以及您可以将其用于哪些目的。

消息类型 您可以使用FCM向客户端发送两种类型的消息: 通知消息,有时被称为“显示消息”。

此类消息由FCMSDK自动处理。

数据消息,由客户端应用处理。

通知消息包含一组用户可见的预定义键。

与其相对,数据消息只包含用户定义的自定义键值对。

通知消息可以包含可选的数据载荷。

两种消息类型的载荷上限均为4000个字节,但从Firebase控制台发送消息时会强制执行1024个字符的限制。

使用情景 如何发送 通知消息 FCM代表客户端应用自动向最终用户设备显示消息。

通知消息包含一组用户可见的预定义键以及自定义键值对的可选数据载荷。

在可信环境(例如CloudFunctions或应用服务器)中,使用AdminSDK或者FCM服务器协议:设置notification键。

可能包含可选的数据载荷。

一律可折叠。

请参阅一些显示通知示例并发送请求载荷。

使用NotificationsComposer:输入消息文本、标题等,然后发送。

通过提供自定义数据添加可选的数据载荷。

数据消息 客户端应用负责处理数据消息。

数据消息仅包含自定义键值对,没有保留键名(请参阅下文)。

在可信环境(例如CloudFunctions或应用服务器中),使用AdminSDK或者FCM服务器协议:仅设置data键。

如果您需要FCM代表您的客户端应用处理通知的显示,可使用通知消息。

如果您需要在自己的客户端应用中处理消息,可使用数据消息。

FCM可以发送包含可选的数据载荷的通知消息。

在此类情况下,FCM负责显示通知载荷,而客户端应用负责处理数据载荷。

通知消息 如果要进行测试,或者要开展营销、重新吸引用户,您可以使用Firebase控制台发送通知消息。

Firebase控制台提供基于分析的A/B测试,可帮助您优化和改进营销消息。

如需使用AdminSDK或FCM协议以编程方式发送通知消息,可使用通知消息中用户可见部分所必需的预定义键值选项集来设置notification键。

例如,以下是IM应用中的JSON格式的通知消息。

用户可能会在设备上看到标题为“Portugalvs.Denmark”、文本为“greatmatch!”的消息: { "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification":{ "title":"Portugalvs.Denmark", "body":"greatmatch!" } } } 应用在后台运行时,通知消息将被传递至通知面板。

应用在前台运行时,消息由回调函数处理。

如需可用于构建通知消息的预定义键的完整列表,请参阅参考文档: HTTPv1协议通知对象 旧版HTTP协议通知载荷 XMPP协议通知载荷 数据消息 使用自定义键值对设置适当的键,以将数据载荷发送至客户端应用。

请确保未在自定义键值对中使用任何保留字词。

保留字词包括“from”、“notification”、“message_type”或以“google”或“gcm”开头的任何字词。

例如,下方所示为上述同一即时通讯应用中的一条JSON格式的消息,在此消息中,信息封装在常用的data键中,且客户端应用需要解读相应内容: { "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "data":{ "Nick":"Mario", "body":"greatmatch!", "Room":"PortugalVSDenmark" } } } 上述示例显示了顶级或通用data字段的用法,该字段由接收消息的所有平台上的客户端解读。

在每个平台上,客户端应用都会在回调函数中收到数据载荷。

数据消息加密 Android传输层(请参阅FCM架构)使用点到点加密。

您可以根据需要决定为数据消息使用端到端加密。

FCM不提供端到端解决方案。

不过,您可以使用外部解决方案,例如Capillary或DTLS。

包含可选数据载荷的通知消息 无论是通过编程方式还是通过Firebase控制台发送通知消息,您都可以在消息中包含由自定义键值对组成的可选载荷。

在NotificationsComposer中,使用高级选项中的自定义数据字段。

接收同时包含通知载荷和数据载荷的消息时,应用的行为取决于应用是在后台还是前台运行-特别是在接收时应用是否处于活跃状态。

在后台运行时,应用会在通知面板中接收通知载荷,且仅在用户点按通知时处理数据载荷。

在前台运行时,您的应用将会接收一个提供两种载荷的消息对象。

以下是包含notification键和data键的JSON格式的消息: { "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification":{ "title":"Portugalvs.Denmark", "body":"greatmatch!" }, "data":{ "Nick":"Mario", "Room":"PortugalVSDenmark" } } } 跨平台自定义消息 FirebaseAdminSDK和FCMv1HTTP协议都允许您的消息请求设置message对象中的所有可用字段。

包括: 通用字段集,由接收消息的所有应用实例解读。

针对具体平台的字段集,如AndroidConfig和WebpushConfig,仅由在指定平台上运行的应用实例解读。

针对具体平台的字段块可让您灵活地针对不同平台自定义消息,以确保在收到消息后可以正确处理它们。

FCM后端会考虑所有指定参数并针对每个平台自定义消息。

何时使用通用字段 在以下情况下使用通用字段: 面向所有平台(Apple、Android和Web)上的应用实例 向主题发送消息 无论是哪个平台,所有应用实例都可以解读以下通用字段: message.notification.title message.notification.body message.data 何时使用针对具体平台的字段 如果需要执行下列操作,请使用针对具体平台的字段: 仅向特定平台发送字段 发送通用字段以及针对具体平台的字段 当您仅希望向特定平台发送值时,不要使用通用字段,而应使用针对具体平台的字段。

例如,如需仅向Apple平台和Web发送通知,而不向Android发送通知,您必须针对Apple和Web各使用一组字段。

当您发送包含特定递送选项的消息时,请使用针对具体平台的字段进行设置。

您可以根据需要为每个平台指定不同的值。

即使您想为各平台设置的值实质上是相同的,也必须使用针对具体平台的字段。

这是因为每种平台对值的解读方式可能会略有不同-例如,存留时间在Android上设置为以秒为单位的到期时间,而在Apple上则设置为到期日期。

示例:包含针对具体平台的递送选项的通知消息 以下v1发送请求会向所有平台发送通用的通知标题和内容,但也会发送一些针对具体平台的覆盖内容。

具体而言,该请求会: 为Android和Web平台设置较长的存留时间,同时将APNs(Apple平台)消息设置为低优先级 设置相应的键来定义Android和Apple上的用户点按通知的结果,分别为click_action和category。

{ "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "notification":{ "title":"Matchupdate", "body":"Arsenalgoalinaddedtime,scoreisnow3-0" }, "android":{ "ttl":"86400s", "notification"{ "click_action":"OPEN_ACTIVITY_1" } }, "apns":{ "headers":{ "apns-priority":"5", }, "payload":{ "aps":{ "category":"NEW_MESSAGE_CATEGORY" } } }, "webpush":{ "headers":{ "TTL":"86400" } } } } 如需全面、详细地了解消息正文中针对具体平台的块提供的键,请参阅HTTPv1参考文档。

如需详细了解如何构建包含消息正文的发送请求,请参阅构建发送请求。

递送选项 FCM为发送到Android设备的消息提供了一组特定的递送选项,并允许在Apple平台和Web上使用类似的选项。

例如,Android通过FCM的collapse_key来支持“可折叠”消息行为,而Apple通过apns-collapse-id,JavaScript/Web通过Topic来支持该行为。

如需了解详情,请参阅本节和相关参考文档中的说明。

不可折叠消息和可折叠消息 “不可折叠”消息表示每一条消息都将被传递至设备。

与无内容的“ping”之类的可折叠消息不同,不可折叠消息能传递一些有用内容至移动应用,从而联系服务器以获取数据。

FCM不保证传递顺序。

聊天消息或关键消息都是典型的不可折叠消息。

例如,在即时通讯应用中,您会要传递每一条消息,因为它们的内容各不相同。

对于Android,在不折叠的情况下,最多可存储100条消息。

达到此限值后,所有存储的消息都将被舍弃。

设备在重新联网后将收到一条特殊消息,提示已达到此上限。

之后,应用可以正常处理该状况,一般情况下会请求与应用服务器进行一次完全同步。

“可折叠消息”在还未被传递至设备的情况下可能会被新消息替代。

可折叠消息的常见使用情形包括告知移动应用从服务器同步数据。

为用户更新最新比分的体育应用就属于这种消息。

只有最新的消息是相关的。

如需在Android上将一条消息标记为可折叠,请在消息载荷中加入collapse_key参数。

默认情况下,折叠键是在Firebase控制台中注册的应用软件包名称。

FCM服务器可以为每台设备同时存储4条不同的可折叠消息,每一条都含有不同的折叠键。

如果超出此限值,FCM将仅保留4个折叠键,具体保留哪几个不一定。

默认情况下,没有载荷的主题消息是可折叠消息。

通知消息都可折叠,并且会忽略collapse_key参数。

我应该使用哪种消息? 从性能的角度来看,可折叠消息是更好的选择,但前提是您的应用不需要使用不可折叠消息。

但是,如果您使用可折叠消息,则须切记:FCM仅允许FCM在任意指定时间内为每个注册令牌使用最多四个不同的折叠键。

您不得超出此限值,否则可能导致无法预测的后果。

使用情景 如何发送 不可折叠 每一条消息对客户端应用都很重要,都需要传递。

默认情况下,除了通知消息外的所有消息都是不可折叠消息。

可折叠 当新消息使得相关的旧消息对客户端应用不再有用时,FCM将替换掉旧消息。

例如:用于从服务器启动数据同步的消息或过期的通知消息。

在消息请求中设置适当的参数: Android上的collapseKey Apple上的apns-collapse-id Web上的Topic 旧版协议中的collapse_key (所有平台) 设置消息的优先级 下行消息传递优先级有两种:普通优先级和高优先级。

普通优先级和高优先级的消息传递方式如下(具体行为在不同的平台中略有差异): 普通优先级。

应用在前台运行时,普通优先级消息会被立即传递。

当应用在后台运行时,消息传递可能会延迟。

如果是对时间不太敏感的消息(例如新电子邮件通知、使界面保持同步或在后台同步应用数据),建议您选择普通传递优先级。

高优先级。

即使设备处于低电耗模式,FCM也会立即尝试传递高优先级消息。

高优先级消息适用于对时间敏感的用户可见内容。

在向Apple设备发送数据消息时,优先级必须设置为5(即普通优先级)。

具有高优先级的消息会被FCM后端拒绝,并显示错误INVALID_ARGUMENT。

以下是一条普通优先级消息的示例,该消息通过FCMHTTPv1协议发送,用于通知杂志订阅者有新内容可以下载: { "message":{ "topic":"subscriber-updates", "notification":{ "body":"Thisweek'seditionisnowavailable.", "title":"NewsMagazine.com", }, "data":{ "volume":"3.21.15", "contents":"http://www.news-magazine.com/world-week/21659772" }, "android":{ "priority":"normal" }, "apns":{ "headers":{ "apns-priority":"5" } }, "webpush":{ "headers":{ "Urgency":"high" } } } } 如需了解有关设置消息优先级的针对具体平台的详细信息,请参阅以下文章: APNs文档 设置和管理消息优先级(Android) Web推送消息的紧急程度 设置消息的有效期 FCM通常会在消息发出之后马上进行传递。

但是,也有一些例外情况。

例如,如果在Android平台上,设备有可能处于关闭、离线或不可用状态。

FCM可能会有意地延迟消息传递,以防止应用消耗过多资源和对电池续航时间产生不良影响。

在这种情况下,FCM会存储消息,等到可行时立即发送。

尽管大多数情况下这样做都没什么问题,但有些应用可能永远不会传递延迟消息。

举例来说,如果消息是来电或视频聊天通知,则它仅在通话终止之前的这段较短时间内有意义。

或者,如果消息是活动邀请,那么如果在活动结束后才收到消息,它将毫无用处。

在Android和Web/JavaScript上,您可以指定消息的最长有效期。

此值必须是介于0至2419200秒(28天)之间的一段持续时间,其对应于FCM存储并尝试传递消息的最长时间期限。

不含此字段的请求默认为最长期限(四周)。

以下是此功能的一些可能用途: 视频聊天来电 即将到期的邀请事件 日历活动 指定消息有效期的另一个好处是FCM绝不会限制存留时间值为0秒的消息。

换句话说,FCM将尽全力保证必须现在传递、过时无效的消息得到传递。

请留意,time_to_live值为0表示不能立即递送的邮件会被舍弃。

不过,由于此类消息不会被存储,因此可以为发送通知消息提供最佳延时。

以下是包含TTL的请求示例: { "message":{ "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", "data":{ "Nick":"Mario", "body":"greatmatch!", "Room":"PortugalVSDenmark" }, "apns":{ "headers":{ "apns-expiration":"1604750400" } }, "android":{ "ttl":"4500s" }, "webpush":{ "headers":{ "TTL":"4500" } } } } 消息的有效期 当应用服务器向FCM发布消息并收到返回的消息ID时,并不意味着消息已传递至设备,而是表示其获准传递。

消息在获准传递后的行为取决于很多因素。

在理想状态下,如果设备已连接至FCM,屏幕处于开启状态且没有节流限制,那么消息将被立即传递。

如果设备已连接但是处于低电耗模式,则FCM将存储低优先级的消息,直到设备不再处于低电耗模式为止。

这是collapse_key标志发挥作用的时候:如果已存储有一条含有相同折叠键(和注册令牌)的消息,且该消息正等待传递,则旧消息将被舍弃,新消息将取代其位置(即,旧消息将被新消息折叠起来)。

但是,如果未设置折叠键,则新消息和旧消息都将被存储下来供以后传递。

如果设备未连接至FCM,则消息将被存储,直至建立连接(再次遵循折叠键规则)。

建立连接后,FCM会将所有待处理消息传递到设备。

如果设备不再建立连接(例如使用了恢复出厂设置),则消息最终会超时,且将被从存储中舍弃。

除非设置了time_to_live标志,否则默认的超时时间为四个星期。

如需更深入地了解消息的传递情况: 如需详细了解Android或Apple平台上的消息传递,请参阅FCM报告信息中心,其中记录了在Apple和Android设备上发送和打开的消息数量,以及Android应用的“展示次数”(用户看到的通知条数)数据。

对于启用了直接通道消息传递的Android设备,如果设备已有一个月未连接到FCM,FCM仍然会接受消息,但会立即将其舍弃。

如果设备在您向其发送最后一条数据消息后的四个星期内建立连接,您的客户端会收到onDeletedMessages()回调。

之后,应用可以正常处理该状况,一般情况下会请求与应用服务器进行一次完全同步。

最后,当FCM尝试向设备传递消息,而应用已被卸载时,FCM将立刻舍弃该消息并废弃注册令牌。

其后尝试向该设备发送消息将导致NotRegistered错误。

限制和扩缩 我们的目标是始终传递通过FCM发送的每条消息。

但是,传递每条消息有时会导致整体用户体验不佳。

在其他情况下,我们需要设定限制,以确保FCM为所有发送者提供可扩缩的服务。

注意:本部分中讨论的限制随时可能更改。

可折叠的消息限制 如上所述,可折叠的消息是设计为可在彼此之上折叠的无内容通知。

如果开发者过于频繁地向应用重复相同的消息,我们会延迟(限制)消息以减少对用户电池的影响。

例如,如果您向单个设备发送大量新电子邮件同步请求,我们可能会将下一个电子邮件同步请求延迟几分钟,以便设备可以以较低的平均速度进行同步。

严格执行这种限制是为了限制对用户的电池的影响。

如果您的用例需要高突发发送模式,那么不可折叠的消息可能是正确的选择。

请确保在此类消息中包含内容以降低电池损耗。

我们将可折叠的消息限制为每台设备每个应用突发20条消息,每3分钟补充1条消息。

XMPP服务器限制 我们将连接到FCMXMPP服务器的速率限制为每个项目每分钟400次连接。

这不会给消息传递带来问题,但对于确保我们系统的稳定性非常重要。

针对每个项目,FCM允许存在2500个并行连接。

向单一设备发送消息的最大速率 您可以向单一设备发送最多240条消息/分钟和5000条消息/小时。

这一高阈值是为了满足短时间的流量突发,例如当用户通过聊天快速互动时。

此限制可防止发送逻辑中的错误无意中耗尽设备上的电池电量。

警告:请勿以接近此最大速率的速度定期发送消息。

这可能会浪费最终用户的资源,并且您的应用可能会被标记为滥用。

上行消息限额 我们将每个项目的上行消息限制为1500000条/分钟,以避免上行目标服务器过载。

我们将每台设备的上行消息限制为1000条/分钟,以防止因不良应用行为导致电池电量耗尽。

主题消息限额 主题订阅添加/移除率限制为每个项目3000QPS。

有关消息发送速率的信息,请参阅扇出限制。

扇出限制 消息扇出是指向多台设备发送消息的过程,例如当您定位主题和群组,或使用NotificationsComposer定位受众群体或用户细分时。

消息扇出不是瞬时间完成的,因此有时候您会同时运行多个扇出。

我们将每个项目中并发进行的消息扇出数量限制为1000。

超出此值之后,我们可能会拒绝其他扇出请求,或者推迟请求中的扇出,直到某些正在进行的扇出完成为止。

实际可实现的扇出率受同时请求扇出的项目数量的影响。

单个项目的扇出率为10000QPS并不罕见,但该数字与系统的总负载密切相关,并无保证。

值得注意的是,可用的扇出容量在项目之间而不是在扇出请求之间分配。

因此,如果您的项目有两个正在进行的扇出,那么每个扇出只能使用可用扇出率的一半。

最大化扇出速度的推荐方法是一次只有一个进行中的活跃扇出。

FCM端口和防火墙 如果贵组织设有限制互联网上传/下载流量的防火墙,则您需要将其配置为允许移动设备连接FCM才能让网络上的设备接收消息。

FCM通常使用端口5228,有时也使用443、5229和5230。

对于通过网络连接的设备,FCM不会提供具体IP,因为我们的IP范围更改非常频繁,您的防火墙规则可能会过时,从而影响用户的体验。

理想情况下,您可以将端口5228-5230和443加入许可名单,并且不施加任何IP限制。

但是,如果您必须设置IP限制,则应将goog.json中列出的所有IP地址列入许可名单。

此大型列表会定期更新,因此建议您每月更新规则。

防火墙IP限制导致的问题往往是间歇性的,并且难以诊断。

我们提供了一组可以列入许可名单的域名,而不是IP地址。

这些主机名如下所示。

如果我们开始使用其他主机名,则会在此处更新列表。

“针对您的防火墙使用域名”规则不一定能在防火墙设备中正常运行。

要打开的TCP端口: 5228 5229 5230 443 要打开的主机名: mtalk.google.com mtalk4.google.com mtalk-staging.google.com mtalk-dev.google.com alt1-mtalk.google.com alt2-mtalk.google.com alt3-mtalk.google.com alt4-mtalk.google.com alt5-mtalk.google.com alt6-mtalk.google.com alt7-mtalk.google.com alt8-mtalk.google.com android.apis.google.com device-provisioning.googleapis.com firebaseinstallations.googleapis.com 网络地址转换和/或有状态数据包检测防火墙: 如果您的网络实施网络地址转换(NAT)或有状态数据包检测(SPI),请为我们通过端口5228-5230的连接设置30分钟或更长时间的超时。

这样,我们就能够提供可靠的连接,同时减少用户移动设备的电池消耗。

注意:如果您通过APNs接收通知,请确保您同时打开了Apple指定的端口。

凭据 根据要实现的FCM功能的不同,您可能需要下列来自Firebase项目的凭据: 项目ID 您的Firebase项目的唯一标识符,用于向FCMv1HTTP端点发出请求。

您可以在Firebase控制台设置窗格中找到该值。

注册令牌 用于标识每个客户端应用实例的唯一令牌字符串。

单一设备消息传递和设备组消息传递需要注册令牌。

请注意,注册令牌必须保密。

发送者ID 您在创建Firebase项目时系统创建的唯一数字值,可在Firebase控制台设置窗格的CloudMessaging标签页找到。

发送者ID用于标识可以向客户端应用发送消息的每个发送者。

访问令牌 一个只在短时间内有效的OAuth2.0令牌,用于对发送到HTTPv1API的请求进行授权。

此令牌与属于您的Firebase项目的服务帐号相关联。

如需创建和轮替访问令牌,请按照向发送请求提供授权中所述的步骤操作。

服务器密钥(用于旧版协议) 用于授权您的应用服务器访问Google服务(包括通过FirebaseCloudMessaging传递旧版协议发送消息)的服务器密钥。

您在创建Firebase项目时获取服务器密钥。

您可以在Firebase控制台设置窗格的CloudMessaging标签页查看此密钥。

重要提示:切勿在客户端代码中的任何位置包含服务器密钥。

另外,请确保在为您的应用服务器授权时仅使用服务器密钥。

Android、Apple平台和浏览器密钥会被FCM拒绝。

发送反馈 Exceptasotherwisenoted,thecontentofthispageislicensedundertheCreativeCommonsAttribution4.0License,andcodesamplesarelicensedundertheApache2.0License.Fordetails,seetheGoogleDevelopersSitePolicies.JavaisaregisteredtrademarkofOracleand/oritsaffiliates. Lastupdated2022-09-20UTC. [{ "type":"thumb-down", "id":"missingTheInformationINeed", "label":"没有我需要的信息" },{ "type":"thumb-down", "id":"tooComplicatedTooManySteps", "label":"太复杂/步骤太多" },{ "type":"thumb-down", "id":"outOfDate", "label":"内容需要更新" },{ "type":"thumb-down", "id":"translationIssue", "label":"翻译问题" },{ "type":"thumb-down", "id":"samplesCodeIssue", "label":"示例/代码问题" },{ "type":"thumb-down", "id":"otherDown", "label":"其他" }] [{ "type":"thumb-up", "id":"easyToUnderstand", "label":"易于理解" },{ "type":"thumb-up", "id":"solvedMyProblem", "label":"解决了我的问题" },{ "type":"thumb-up", "id":"otherUp", "label":"其他" }] 需要向我们提供更多信息? 学习 指南 参考 示例 库 GitHub 掌握动态 博客 Firebase峰会 Twitter YouTube 支持 与支持团队联系 StackOverflow Slack社区 Googlegroup 版本说明 常见问题解答 Android Chrome Firebase GoogleCloudPlatform 所有产品 条款 隐私权政策 English BahasaIndonesia Deutsch Español–AméricaLatina Français Italiano Polski Português–Brasil TiếngViệt Türkçe Русский עברית العربيّة فارسی हिंदी বাংলা ภาษาไทย 中文–简体 中文–繁體 日本語 한국어



請為這篇文章評分?