你当前正在访问 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 文件
在 Firebase 控制台中,选择项目并转到“项目设置”。
选择“服务帐户”选项卡,创建服务帐户,然后从 Google 服务帐户生成私钥。
选择“生成新私钥”以生成 JSON 文件。 下载并打开文件。 替换
project_id
、private_key
和client_email
的值,因为 Azure 通知中心中心凭据更新需要这些值。OR
如果要创建具有自定义访问权限的服务帐户,可以通过 IAM 和管理员 > 服务帐户页创建服务帐户。 单击“管理服务帐户权限”可直接转到该页面。 可以创建具有以下角色之一的服务帐户:
- Firebase 管理员 (roles/firebase.admin)
- Firebase 发展管理员 (roles/firebase.growthAdmin)
- Firebase 管理员 SDK 管理员服务代理 (roles/firebase.sdkAdminServiceAgent)
- Firebase SDK 预配服务代理 (roles/firebase.sdkProvisioningServiceAgent)
选项 1:通过 Azure 门户更新 FcmV1 凭据
转到 Azure 门户上的通知中心,然后选择“设置”>“Google (FCM v1)”。 从上一部分获取的服务帐户 JSON 文件中获取“私钥”、“项目 ID”和“客户端电子邮件”值,并保存这些值以备后用。
选项 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 |
设置为 fcmV1 或 template |
Servicebusnotification-Tags |
{单一标记标识符} |
通过调试发送测试具有以下结构的有效负载。 请注意,FcmV1 在 JSON 消息有效负载的结构中引入了重大更改:
- 整个有效负载已移动到消息对象下。
- Android 特定的选项已移动到 Android 对象,
time_to_live
现在是具有字符串值的ttl
。 data
字段现在仅允许平面字符串到字符串映射。- 有关详细信息,请参阅 FCM 参考。
或者,可以通过 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 有效负载结构的新请求正文来测试模板发送。 无需进行其他任何更改。 请参阅发送模板通知。