你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 REST API 和 Azure 门户进行 Google Firebase Cloud Messaging 迁移

本文介绍 Azure 通知中心与 Firebase Cloud Messaging (FCM) v1 的集成的核心功能。 谨此提醒:Google 将于 2024 年 6 月 20 日停止支持 FCM 旧版 HTTP,因此必须在该日期之前将应用程序和通知有效负载迁移到新格式。 所有加入方法将于 2024 年 3 月 1 日之前准备好迁移。

重要

自 2024 年 6 月起,FCM 旧版 API 不再受到支持,并且会停用。 要避免推送通知服务发生任何中断,必须尽快迁移到 FCM v1 协议

FCM v1 的概念

  • 将支持一种称为“FCM v1”的新平台类型
  • 新的 API、凭据、注册和安装将用于 FCM v1。

注意

在本文中,现有 FCM 平台称为“FCM 旧版”。

迁移步骤

Firebase Cloud Messaging (FCM) 旧版 API 将于 2024 年 7 月弃用。 可以在 2024 年 3 月 1 日开始从旧版 HTTP 协议迁移到 FCM v1。 必须在 2024 年 6 月之前完成迁移。 本部分介绍使用通知中心 REST API 从旧版 FCM 迁移到 FCM v1 的步骤。

REST API

以下部分介绍如何使用 REST API 执行迁移。

步骤 1:将 FCM v1 凭据添加到中心

第一步是通过 Azure 门户、管理平面中心操作或数据平面中心操作添加凭据。

创建 Google 服务帐户 JSON 文件

  1. Firebase 控制台中,选择项目并转到“项目设置”

  2. 选择“服务帐户”选项卡,创建服务帐户,然后从 Google 服务帐户生成私钥

  3. 选择“生成新私钥”以生成 JSON 文件。 下载并打开文件。 替换 project_idprivate_keyclient_email 的值,因为 Azure 通知中心中心凭据更新需要这些值。

    Firebase 控制台项目设置的屏幕截图。

    OR

    如果要创建具有自定义访问权限的服务帐户,可以通过 IAM 和管理员 > 服务帐户页创建服务帐户。 单击“管理服务帐户权限”可直接转到该页面。 可以创建具有以下角色之一的服务帐户:

    • Firebase 管理员 (roles/firebase.admin)
    • Firebase 发展管理员 (roles/firebase.growthAdmin)
    • Firebase 管理员 SDK 管理员服务代理 (roles/firebase.sdkAdminServiceAgent)
    • Firebase SDK 预配服务代理 (roles/firebase.sdkProvisioningServiceAgent)

    显示 IAM 服务帐户设置的屏幕截图。

选项 1:通过 Azure 门户更新 FcmV1 凭据

转到 Azure 门户上的通知中心,然后选择“设置”>“Google (FCM v1)”。 从上一部分获取的服务帐户 JSON 文件中获取“私钥”、“项目 ID”和“客户端电子邮件”值,并保存这些值以备后用

显示 Azure 门户 Firebase 凭据选项的屏幕截图。

选项 2:通过管理平面中心操作更新 FcmV1 凭据

请参阅 NotificationHub FcmV1Credential 的说明

  • 使用 API 版本:2023-10-01-preview

  • FcmV1CredentialProperties

    名称 类型
    clientEmail string
    privateKey string
    projectId string

选项 3:通过数据平面中心操作更新 FcmV1 凭据

请参阅创建通知中心更新通知中心

  • 使用 API 版本:2015-01
  • 请确保将“FcmV1Credential”放在“GcmCredential”之后,因为顺序很重要

例如,下列为请求正文:

<NotificationHubDescription xmlns:i='http://www.w3.org/2001/XMLSchema-instance' 
    xmlns='http://schemas.microsoft.com/netservices/2010/10/servicebus/connect'> 
    <ApnsCredential> 
        <Properties> 
            <Property> 
                <Name>Endpoint</Name> 
                <Value>{_apnsCredential.Endpoint}</Value> 
            </Property> 
            <Property> 
                <Name>AppId</Name> 
                <Value>{_apnsCredential.AppId}</Value> 
            </Property> 
            <Property> 
                <Name>AppName</Name> 
                <Value>{_apnsCredential.AppName}</Value> 
            </Property> 
            <Property> 
                <Name>KeyId</Name> 
                <Value>{_apnsCredential.KeyId}</Value> 
            </Property> 
            <Property> 
                <Name>Token</Name> 
                <Value>{_apnsCredential.Token}</Value> 
            </Property> 
        </Properties> 
    </ApnsCredential> 
    <WnsCredential> 
        <Properties> 
            <Property> 
                <Name>PackageSid</Name> 
                <Value>{_wnsCredential.PackageSid}</Value> 
            </Property> 
            <Property> 
                <Name>SecretKey</Name> 
                <Value>{_wnsCredential.SecretKey}</Value> 
            </Property> 
        </Properties> 
    </WnsCredential> 
    <GcmCredential> 
        <Properties> 
            <Property> 
                <Name>GoogleApiKey</Name> 
                <Value>{_gcmCredential.GoogleApiKey}</Value> 
            </Property> 
        </Properties> 
    </GcmCredential> 
    <FcmV1Credential> 
        <Properties> 
            <Property> 
                <Name>ProjectId</Name> 
                <Value>{_fcmV1Credential.ProjectId}</Value> 
            </Property> 
            <Property> 
                <Name>PrivateKey</Name> 
                <Value>{_fcmV1Credential.PrivateKey}</Value> 
            </Property> 
            <Property> 
                <Name>ClientEmail</Name> 
                <Value>{_fcmV1Credential.ClientEmail}</Value> 
            </Property> 
        </Properties> 
    </FcmV1Credential> 
</NotificationHubDescription>

步骤 2:管理注册和安装

对于直接发送方案,请直接转到步骤 3。 如果使用其中一个 Azure SDK,请参阅 SDK 一文。

选项 1:创建 FCM v1 注册或将 GCM 注册更新到 FCM v1

如果有现有的 GCM 注册,请将注册更新到 FcmV1Registration。 请参阅创建或更新注册。 如果没有现有的 GcmRegistration,请创建 FcmV1Registration 新注册。 请参阅创建注册。 注册请求正文应如以下示例所示:

// FcmV1Registration 
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
    <content type="application/xml">
        <FcmV1RegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
            <Tags>myTag, myOtherTag</Tags>
            <FcmV1RegistrationId>{deviceToken}</FcmV1RegistrationId>
        </FcmV1RegistrationDescription>
    </content>
</entry> 

// FcmV1TemplateRegistration 
<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom">
    <content type="application/xml">
        <FcmV1TemplateRegistrationDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect">
            <Tags>myTag, myOtherTag</Tags>
            <FcmV1RegistrationId>{deviceToken}</FcmV1RegistrationId>
            <BodyTemplate><![CDATA[ {BodyTemplate}]]></BodyTemplate>
        </FcmV1TemplateRegistrationDescription>
    </content>
</entry>

选项 2:创建 FCM c1 安装或将 GCM 安装更新到 FCM v1

请参阅创建或覆盖安装,并将 platform 设置为 FCMV1

步骤 3:发送推送通知

选项 1:调试发送

使用此过程测试选项 2、3 或 4 之前的通知。 请参阅通知中心 - 调试发送

注意

使用 API 版本:2023-10-01-preview。

在标头中:

请求头
Content-Type application/json;charset=utf-8
ServiceBusNotification-Format 设置为 fcmV1template
Servicebusnotification-Tags {单一标记标识符}

通过调试发送测试具有以下结构的有效负载。 请注意,FcmV1 在 JSON 消息有效负载的结构中引入了重大更改:

  1. 整个有效负载已移动到消息对象下。
  2. Android 特定的选项已移动到 Android 对象,time_to_live 现在是具有字符串值的 ttl
  3. data 字段现在仅允许平面字符串到字符串映射。
  4. 有关详细信息,请参阅 FCM 参考

或者,可以通过 Azure 门户执行测试发送(调试发送):

显示 Azure 门户测试发送页的屏幕截图。

选项 2:直接发送

执行直接发送。 在请求标头中,将 ServiceBusNotification-Format 设置为 fcmV1

选项 3:FcmV1 本机通知(受众发送)

执行 FcmV1 本机通知发送。 请参阅发送 Google Cloud Messaging (GCM) 本机通知。 在请求标头中,将 ServiceBusNotification-Format 设置为 fcmV1。 例如,在请求正文中:

{ 
  "message": { 
    "notification": {  
        "title": "Breaking News",  
        "body": "FcmV1 is ready."  
        }, 
    "android": {  
        "data": {  
            "name": "wrench",  
            "mass": "1.3kg",  
            "count": "3"  
            }  
        } 
    } 
}

选项 4:模板通知

可以使用遵循新的 JSON 有效负载结构的新请求正文来测试模板发送。 无需进行其他任何更改。 请参阅发送模板通知

后续步骤

使用 Azure SDK 进行 Firebase Cloud Messaging 迁移