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>

ご不明な点はありませんか?

機能の詳細、導入のご検討、お見積もり依頼などは、お気軽にお問い合わせください。
担当者から追ってご連絡いたします。

お問い合わせはこちら