REST API と Azure portal を使用した Google Firebase Cloud Messaging の移行
この記事では Azure Notification Hubs の Firebase Cloud Messaging (FCM) v1 との統合のコア機能について説明します。 注意喚起としてですが、Google は 2024 年 6 月 20 日に FCM レガシ HTTP のサポートを停止するため、その前にアプリケーションと通知ペイロードを新しい形式に移行する必要があります。 オンボードのすべての方法は、2024 年 3 月 1 日までに移行の準備が整います。
重要
2024 年 6 月の時点で、FCM レガシ API はサポートされなくなり、廃止される予定です。 プッシュ通知サービスの中断を回避するには、できるだけ早く FCM v1 プロトコルに移行する必要があります。
FCM v1 の概念
- FCM v1 という名前の新しいプラットフォームの種類がサポートされるようになります。
- FCM v1 には、新しい API、資格情報、登録、およびインストールが使用されます。
Note
この記事では、既存の FCM プラットフォームを "FCM レガシ" と呼びます。
移行の手順
Firebase Cloud Messaging (FCM) レガシ API は、2024 年 7 月までに非推奨になります。 レガシ HTTP プロトコルから FCM v1 への移行は 2024 年 3 月 1 日から開始できます。 移行は 2024 年 6 月までに完了する必要があります。 このセクションでは、Notification Hubs REST API を使用して FCM レガシから FCM v1 に移行する手順について説明します。
REST API
次のセクションでは、REST API を使用して移行を実行する方法について説明します。
手順 1: FCM v1 資格情報をハブに追加する
最初の手順では、Azure portal、管理プレーン ハブ操作、またはデータ プレーン ハブ操作を使用して資格情報を追加します。
Google サービス アカウントの JSON ファイルを作成する
Firebase コンソールでプロジェクトを選択し、[プロジェクトの設定] に移動します。
[サービス アカウント] タブを選択し、サービス アカウントを作成し、Google サービス アカウントから秘密キーを生成します。
[新しい秘密キーの生成] を選択して JSON ファイルを生成します。 ファイルをダウンロードして開きます。 Azure Notification Hubs ハブの資格情報の更新に必要な
project_id
、private_key
、およびclient_email
の値を置き換えます。OR
カスタマイズされたアクセス許可を持つサービスアカウントを作成する場合は、[IAM と管理者] > [サービスアカウント] ページを使用してサービスアカウントを作成できます。 [サービス アカウントのアクセス許可の管理] をクリックして、ページに直接移動します。 次のいずれかのロールを持つサービス アカウントを作成できます。
- Firebase 管理者 (roles/firebase.admin)
- Firebase Grow 管理者 (roles/firebase.growthAdmin)
- Firebase Admin SDK 管理者サービス エージェント (roles/firebase.sdkAdminServiceAgent)
- Firebase SDK プロビジョニング サービス エージェント (roles/firebase.sdkProvisioningServiceAgent)
オプション 1: Azure portal を使用して FcmV1 資格情報を更新する
Azure portal で通知ハブに移動し、[設定] > [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 を使用します。
- 順序が重要であるため、必ず GcmCredential の後ろに FcmV1Credential を配置してください。
たとえば、要求本文は次のようになります。
<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 より前の通知をテストするには、次の手順に従います。 「Notification Hubs - デバッグ送信」を参照してください。
Note
API バージョン 2023-10-01-preview を使用します。
ヘッダー内には次のものがあります。
要求ヘッダー | Value |
---|---|
Content-Type |
application/json;charset=utf-8 |
ServiceBusNotification-Format |
fcmV1 を template に設定します。 |
Servicebusnotification-Tags |
{単一タグ識別子} |
デバッグ送信を使用して、この構造を持つペイロードをテストします。 FcmV1 では、JSON メッセージ ペイロードの構成に大きな変更があることに注意してください。
- ペイロード全体がメッセージ オブジェクトの下に移動されました。
- Android 固有のオプションは Android オブジェクトに移動され、
time_to_live
は文字列値を持つttl
に変更されました。 data
フィールドでは、文字列から文字列へのフラットなマッピングのみが許可されるようになりました。- 詳細については、FCM リファレンスを参照してください。
または、Azure portal を使用してテスト送信 (デバッグ送信) を実行することもできます。
オプション 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 ペイロード構造に従った新しい要求本文を使用して、テンプレート送信をテストできます。 その他の変更は必要ありません。 「テンプレート通知を送信する」を参照してください。