FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

プッシュ通知配信のGCM/FCM移行対応について

f:id:mbaasblog:20180921200429p:plain

2019年4月のGCM(Google Cloud Messaging)廃止に伴い、先日 mobile backendではプッシュ通知機能がFCM(Firebase Cloud Messaging)対応されました!GCM廃止については、Android端末にプッシュ通知配信をされているすべてのお客様に対応していただく必要があります!!プッシュ通知はアプリにとって欠かせないものとなっており、早速FCM移行に取り組んでいただいている方が多いようです。今回は、ドキュメントだけでは分かりにくい、GCM/FCM平行稼働の設定方法について、図を交えてご説明させていただきます!

※2019年4月、Google社からのメールおよび開発ドキュメント等にて、GCMドメインは2019年5月29日(現地時間)まで利用可能である旨の記載がなされました。そのため、4月10日以降も継続して利用できる可能性があります。(2019/4/9追記)

はじめに

GCMが廃止になるため、先日 mobile backend ではプッシュ通知でFCM(Firebase Cloud Messaging)対応を行いました。
また、それに伴いFCM対応されたSDKがリリースされました!

そのため、今まで mobile backend を利用して、Android端末にプッシュ通知配信を行っていた すべてのお客様は、GCMからFCMへ移行していただく必要がございます。

本ブログでは、 Android SDK を例に移行する際のパターンをご説明します。

【注意!】FCMとFirebaseプロジェクトについて

本題に入る前に、誤解されやすいポイントを紹介します!

お客様から

  • Android SDK v2系を利用しているけれど、Firebaseプロジェクトを使っているからFCM配信出来ているのでは?

というご質問を度々いただきます。
※Firebaseプロジェクトは、下記Firebase管理画面にて作成していただくプロジェクトを指します。 f:id:mbaasblog:20180925184052p:plain

Firebase上からサーバーキーや送信者IDを取得していたかと思いますが、
この手順によって、プッシュ通知配信がFCMによって実行されている訳ではございません!

こちらについては大変誤解を招きやすい点となっています。

mobile backendでは、SDK内でGCMを使うか、FCMを使うか設定がされております。
Android SDK v2系では、SDK内でGCMを使う設定がされております。
先日リリースしましたAndroid SDK v3系ではSDK内でFCMを使う設定がされております。
そのため、SDK v2系を利用し、mobile backendからプッシュ通知配信しているお客さまは、
GCMでプッシュ通知配信を行っているのです。

Firebaseプロジェクト自体は、mobile backendとGCM,FCMを紐づけるために使われているのです。


【3/19以降について】
mBaaSシステムは、移行期間中はGCM・FCM両方のプッシュ通知配信依頼を行っています。
mBaaS側でGCMを廃止する3/19以降は、mBaaSシステムはFCMプッシュ通知配信依頼のみを行うようになります。
そのため、SDK v2系を利用しているアプリに対してもFCMプッシュ通知が送信されるようになります。
SDK v2系に引き続きプッシュ通知を送信したい場合は、後述の設定をお願いいたします。

(訂正)2019年3月19日に実施予定のGCM閉塞について、3月20日に切り戻し後、4月8日に再実施を行いました。ご迷惑をおかけし、誠に申し訳ございません。
http://info.biz.nifty.com/mb/2019/04/post-99.html

何を設定すれば良いのか?

皆様にFCM対応していただく必要があるとご説明しましたが、2019年3月までの間は、GCM,FCM両方をお使いいただけます。
ただ、GCM,FCM平行稼働中はお客様の状況によって設定方法が異なり、つまづきやすいポイントとなっています。
今回は、お客様の状況をパターン分けしてご説明させていただきます。

f:id:mbaasblog:20190312092740p:plain

【前提条件】

  • アプリバージョンについて
    • アプリバージョン v1.0:Android SDK v2系を利用して開発されたアプリ(=GCM対応アプリ)
    • アプリバージョン v2.0:Android SDK v3系を利用して開発されたアプリ(=FCM対応アプリ)
  • Firebaseプロジェクトについて
    • プロジェクトA:以前から利用しているプロジェクト
    • プロジェクトB:新規で作成したプロジェクト

【パターン① FCM対応前】GCMのみ利用している場合

パターン①は、Android SDK v3系がリリースされる前の状況となります。
言い換えると、Android SDK v2系を利用されているお客様の状況です。

f:id:mbaasblog:20180913201642p:plain

パターン①のお客様は、mobile backend上では、APIキーのみが設定されていると思います。
APIキーによって、GCM対応したアプリv1.0(mobile backend Android SDK v2系 使用)と、FirebaseのプロジェクトAが紐づけられ、GCMによってプッシュ通知が配信されます。

【パターン② GCM/FCM平行稼働】Firebaseプロジェクトを使いまわす場合

パターン②は、FCM対応のために Android SDK v3系を利用したアプリをリリースする際、
パターン①で利用しているFirebaseプロジェクトAを使いまわす際の状況です。

弊社では、本パターン②でのFCM移行を推奨しております!
※理由は本項目の最後に記載します。


f:id:mbaasblog:20180921200429p:plain

パターン②のお客様は、mobile backend上では、パターン①のAPIキーに加え、FCMプッシュ通知設定ファイル(json)が設定されていると思います。

APIキーによって、GCM対応したアプリv1.0(mobile backend Android SDK v2系 使用)と、FirebaseのプロジェクトAが紐づけられ、アプリv1.0 にはGCMによってプッシュ通知が配信されます。

FCMプッシュ通知設定ファイル(json)によって、FCM対応したアプリv2.0(mobile backend Android SDK v3系 使用)と、FirebaseのプロジェクトAが紐づけられ、アプリv2.0 にはFCMによってプッシュ通知が配信されます。

パターン⑤のGCM廃止までに、アプリユーザーにはアプリv1.0からv2.0へのアップデートを促しましょう。

注意
パターン②の場合は、FirebaseプロジェクトAのFCM APIが有効化されているか、必ずご確認ください!
有効化についての詳細は、GCMからFCMの移行対応>・FCM APIの有効化 をご確認ください。

推奨する理由
弊社でこちらの移行パターンを推奨する理由は、下記2点から、

  • GCMについても実はFCMプッシュ通知を受け取れる仕組みを持っている

  • Firebaseプロジェクトが同一の場合、既に払い出されたGCMデバイストークンは2019/04/11以降当面の間は、FCMに引き継がれる

2019/04/11以降もFCMプッシュ通知がアプリv1.0に対して配信可能であるためです。
※上記は、GCM廃止以前にアプリv1.0をインストール済みかつ、デバイストークンの登録が完了している場合に限ります。
※2019/04/11以降は、GCM自身が終了するため、新規デバイストークンの取得が行えなくなると考えられます。
 取得が行えない場合は、2019/04/11以降にアプリv1.0をインストールしたアプリへは、こちらの対応を行っていたとしてもプッシュ通知の配信は行えなくなります。

【パターン③ GCM/FCM平行稼働】Firebaseプロジェクトを新たに作成する場合

パターン③は、FCM対応のために Android SDK v3系を利用したアプリをリリースする際、
パターン①で利用しているFirebaseプロジェクトAとは別に、新しく別のプロジェクト、FirebaseプロジェクトBを作成する際の状況です。

弊社では、パターン②でのFCM移行を推奨しているため、こちらの方法はあまり推奨していません。
※理由は本項目の最後に記載します。

f:id:mbaasblog:20180921202604p:plain

パターン③のお客様も、パターン②のお客様同様、mobile backend上では、パターン①のAPIキーに加え、FCMプッシュ通知設定ファイル(json)が設定されていると思います。

APIキーによって、GCM対応したアプリv1.0(mobile backend Android SDK v2系 使用)と、FirebaseのプロジェクトAが紐づけられ、アプリv1.0 にはGCMによってプッシュ通知が配信されます。

FCMプッシュ通知設定ファイル(json)によって、FCM対応したアプリv2.0(mobile backend Android SDK v3系 使用)と、FirebaseのプロジェクトBが紐づけられ、アプリv2.0 にはFCMによってプッシュ通知が配信されます。

パターン⑤のGCM廃止までに、アプリユーザーにはアプリv1.0からv2.0へのアップデートを促しましょう。

推奨しない理由
パターン②では、下記2点から、

  • GCMについても実はFCMプッシュ通知を受け取れる仕組みを持っている

  • Firebaseプロジェクトが同一の場合、既に払い出されたGCMデバイストークンは2019/04/11以降当面の間は、FCMに引き継がれる

2019/04/11以降もFCMプッシュ通知がアプリv1.0に対して配信可能である。
とお伝えしました。

パターン③の場合、FirebaseプロジェクトがGCMとFCMで異なるため、下記に対応していません。

  • Firebaseプロジェクトが同一の場合、既に払い出されたGCMデバイストークンは2019/04/11以降当面の間は、FCMに引き継がれる

そのため、2019/04/11以降はアプリv1.0の既存GCMデバイストークンに対してのFCMプッシュ通知配信は不可能です。

ただし、こちらのパターンでも2019/04/11以降、アプリv1.0の既存GCMデバイストークンに対してFCMプッシュ通知を配信する裏技があります。

それは、既存GCMデバイストークンへプッシュ通知を送りたい時間帯のみ一時的に、
FirebaseプロジェクトAのFCMプッシュ通知設定ファイルを管理画面から設定するという方法です。
一時的にjsonファイルを変更することで、

  • Firebaseプロジェクトが同一の場合、既に払い出されたGCMデバイストークンは2019/04/11以降当面の間は、FCMに引き継がれる

に一時的に対応し、2019/04/11以降もアプリv1.0へプッシュ通知を送信することが出来ます。
※ただし、個通配信(アプリエンドユーザー同士でのプッシュ通知配信)に対しては、
プッシュ通知が配信されるタイミングがアプリエンドユーザー様次第となるため、
こちらの裏技でも回避することが出来ない場合がございます。

【パターン④ GCM/FCM平行稼働】FCMのみ利用する場合

パターン④のお客様は、平行稼働中にFCMのみ利用されている状況です。
平行稼働中にGCM利用を早めに切り上げるお客様や、新規でmobile backendを利用される方が当てはまります。
使用されているFirebaseプロジェクトはお客様によってA,Bどちらのパターンもあるかと思います。

f:id:mbaasblog:20180921205417p:plain

注意
平行稼働期間中にFCMのみ利用される場合は、FirebaseプロジェクトA,BどちらであってもAPIキー、FCMプッシュ通知設定ファイル両方の設定が必要です!
また、FirebaseプロジェクトAの方は、パターン②記載の通り、FCM APIが有効化されているか確認していただく必要があります。

ここで、前段のパターン②,③を読んでいただいた方の中には、
FCM利用のみの場合はAPIキーの設定は不要なのではないか?と考えた方もいらっしゃると思います。
実はこの後記載します【パターン⑤⑥ GCM対応終了】の場合は、APIキーの設定が不要となり、FCMプッシュ通知設定ファイルのみの設定でOKとなります。
ただし、FCM/GCM平行稼働中は、平行稼働出来る実装がされている影響によって、必ずAPIキーの設定が必須となります。

【パターン⑤ GCM対応終了】

パターン⑤は2019年3月以降の状況です。

f:id:mbaasblog:20180921204453p:plain

GCM廃止後は、FCMプッシュ通知設定ファイルのみの設定で、FCMを利用したプッシュ通知配信が可能となります!
※APIキー設定項目は無くなる予定です。

なお、パターン①③のアプリv1.0には、プッシュ通知が配信されなくなります。

【パターン⑥ FCM移行はしないけれど、4/11以降も可能な限りGCMプッシュを送りたい】

パターン⑥は、状態としてはパターン①と同一です。

ただ、パターン①のFCM未移行状態の方の中には、

  • FCM移行対応がどうしても間に合わない

  • プッシュ通知はいつか使えなくなっても良いけれど、使える間はなるべく使っていたい

というケースの方も当てはまるかと思います。

上記の場合は、FirebaseプロジェクトAのFCMプッシュ通知設定ファイルを管理画面から設定してください。
こうすることで、アプリv2.0が無くても当面の間は、FCMプッシュ通知をアプリv1.0へ配信することが出来ます。
※約1時間で設定は完了します!
※配信可能な理由は、 【パターン② GCM/FCM平行稼働】Firebaseプロジェクトを使いまわす場合 の 推奨する理由 をご覧ください。

最後に

アプリv2.0をリリース予定の方は、 早めにFCM対応を行っていただき、GCM,FCM平行稼働期間中にアプリv2.0へのアップデートを促していただければと思います!

また、FCM移行は実施しない場合や、アプリv1.0のみを今後も使い続ける方は、
パターン⑥のFCMプッシュ通知設定ファイルの設定のみを実施していただければと思います!


なお、GCM廃止の詳細スケジュール等は、
随時informationブログにてお知らせいたしますので、あわせてご確認よろしくお願いいたします!
お知らせ | ニフクラ mobile backend

f:id:mbaasdevrel:20171121093954p:plain

山上慶子

ニフクラ mobile backend 技術担当。
mobile backendを多くの人に使っていただけるよう、頑張ります!