
Google Cloud Messaging から Firebase Cloud Messagingへの移行
2018 年 4 月 11 日に Google より、GCM から FCM の移行を 2019 年 4 月 11 日までに完了させるよう発表がありました。
今回の移行では「APIプロジェクト」「サーバーコード」「アプリ」それぞれの移行が必要となります。
移行作業実施後も既に取得しているトークン(Registration ID)は引き続き利用可能です。
移行作業の要否の確認
BoltzEngine を使用しているプロジェクトで GCM から FCM への移行作業が必要になるかどうかは、以下の点から確認できます。
プロジェクト
APIキーを発行した場所が Google API Console で、まだ Firebase Console に表示されていない場合は移行作業が必要です。
この場合、プロジェクトの移行作業後「サーバーの移行作業」「アプリの移行」も必要となります。
サーバー
下記のパラメータが https://android.googleapis.com/gcm/send
もしくは gcm-xmpp.googleapis.com:5235
になっている場合は GCM をお使いのため移行作業が必要です。
お使いの形態 | 確認するパラメーター |
---|---|
net/rpc の BoltzEngine API | gcm.Request.URL |
gRPC の BoltzEngine API | GcmHeader.requestURL |
BoltzMessenger | config.yml の gcm.url |
HTTP API Gateway | -gcm.url (指定されていない場合も) |
boltz-csv コマンド | -gcm.url (指定されていない場合も) |
アプリ
以下の場合、移行対象となります。
- GCM の SDKを使っていない場合
- GCM の SDK として com.google.android.gms:play-services-gcm を使っている場合
- BoltzMessenger 2.5 までの SDK を使っている場合
プロジェクトの移行
Firebase Console を開き、[プロジェクトを追加]を選択します。
プロジェクト名のドロップダウンから、[Firebaseを追加する既存のプロジェクト]を選択します。国/地域は適切なものを選択してください。入力を確認できたら[FIREBASEを追加]をクリックします。
プロジェクトのスタート画面が表示されますので、[AndroidアプリをFirebaseに追加]を選択します。
Android パッケージ名に、アプリのパッケージ名を入力し、「アプリの登録」をクリックします。
次に進むと google-services.json をダウンロードする画面となりますので、このファイルをダウンロードしておきます。
もし、ダウンロードを忘れてしまったり紛失してしまった場合は、メニューのギアアイコン(Settings)から[プロジェクトの設定]を開き、[全般]の[アプリ]のセクションから再ダウンロードできます。
サーバーキーの確認
メニューのギアアイコン(Settings)から[プロジェクトの設定]を開きます。
[クラウド メッセージング]タブを開き、[以前のサーバーキー]を控えます。これらは BoltzEngine から FCM へ接続する際に必要となります。
サーバーの移行作業
エンドポイントの修正
「移行作業の要否の確認」で確認したパラメーターを以下のように置き換えます。
変更前 | 変更後 |
---|---|
https://android.googleapis.com/gcm/send | https://fcm.googleapis.com/fcm/send |
gcm-xmpp.googleapis.com:5235 | fcm-xmpp.googleapis.com:5235 |
サーバーキーの変更
また、同時にプロジェクトのサーバーキーも「サーバーキーの確認」で新規に発行されたものに変更する必要があります。
お使いの形態 | 変更するパラメーター |
---|---|
net/rpc の BoltzEngine API | gcm.Request.Credential.ServerKey |
gRPC の BoltzEngine API | GcmHeader.serverKey |
BoltzMessenger | config.yml の gcm.key |
HTTP API Gateway | -gcm.key |
boltz-csv コマンド | -gcm.key に指定されているファイルの内容 |
サービスの再起動
BoltzMessenger または BoltzEngine HTTP API Gateway をお使いの場合は設定変更後はサービスの再起動が必要です。(BoltzEngine本体は再起動の必要はありません)
BoltzMessenger の場合
1systemctl restart boltz-messenger-gateway.service
BoltzMessenger の場合
1systemctl restart boltz-http-proxy.service
アプリの移行
ここでは、Android Studioにて、com.google.android.gms:play-services-gcm をお使いの場合の対応をご紹介します。
google-service.json の置換
google-service.json を「プロジェクトの移行」で新規に生成されたものに置き換えます。
SDK の変更
アプリの build.gradle を開き、SDKを変更してください。(※キーワードは Android Studio 3 以降では compile ではなく implementation の場合があります)
1// compile 'com.google.android.gms:play-services-gcm:11.8.0' (変更前)
2compile "com.google.firebase:firebase-messaging:15.0.0" // 変更後
なお、BoltzMessenger SDKをお使いの場合、この設定はBoltzMessenger SDK側にあります。
AndroidManifest.xml の修正
AndroidManifest.xml の以下の記述を削除します。(これらは Firebase の SDK が自動付与するように変更されています)
1<uses-permission android:name="android.permission.WAKE_LOCK" />
2<permission android:name="<your-package-name>.permission.C2D_MESSAGE"
3 android:protectionLevel="signature" />
4<uses-permission android:name="<your-package-name>.permission.C2D_MESSAGE" />
5
6...
7
8<receiver
9 android:name="com.google.android.gms.gcm.GcmReceiver"
10 android:exported="true"
11 android:permission="com.google.android.c2dm.permission.SEND" >
12 <intent-filter>
13 <action android:name="com.google.android.c2dm.intent.RECEIVE" />
14 <category android:name="com.example.gcm" />
15 </intent-filter>
16</receiver>