テックブログ

Firebaseのプッシュ通知(FCM)を利用したアーキテクチャ


スマホに飛ばすプッシュ通知は当たり前のように利用されていますが、どのようなアーキテクチャなのか調べてみると面白かったのでブログに書きます。
おそらく一番有名なFirebaseのプッシュ通知はFirebase Cloud Messaging(FCM)を利用します。
FirebaseのmBaaS(mobile backend as a Service)ですね。
(スマートフォンアプリでよく利用される汎用的な機能をクラウドから提供するサービスです)

スマホアプリの機能には触れずざっくりどんな感じなのかを理解するためにご利用ください。

前提

https://firebase.google.com/docs/cloud-messaging/fcm-architecture?hl=ja
FCM自体のアーキテクチャは記載ありますがあくまでもFirebaseとアプリ間のやり取りで構成がいまいちわかりづらいですね。。
特にフロントエンドとバックエンドの関係や何をどうやってやりとりをしているのか読み解くのが大変だったのでもう少しわかりやすく記載します。


ざっくり構成図

超ざっくりとしたFCMとフロントとサーバーの構成図は以下になると思います。
(もちろんサービスによって構成は違うはずですがプッシュ通知を飛ばすには大枠このアーキテクチャにのっとると思っています)

FCMトークンはFCM登録トークンと呼ばれていたりしていますが、FCMが配信する対象の端末を特定するデバイス特定番号のようなものです。
デバイス識別子などとは違ってFCM特有の番号です。


以下、図に紐づいた説明です。

① デバイストークン送信はiOSなどでAPNsから取得したものを送信します。
  APNsはSDKを利用することで簡単に受け取れると思います。

Androidは特に不要です。kotlinの開発ではSDKを利用することで好きなタイミングで②のFCMトークンを取得できます。

② FCMトークンを取得します。

③④ APIなどでFCMトークンをサーバーに保存しておき、好きなタイミングでプッシュ通知を送信できるようにします。

⑤⑥ プッシュ通知送信。サーバーのよきタイミングでFCM経由でプッシュ通知が飛ばせます。




もう少しフロントエンド目線で補足しますがFCM経由で特定のキーなどを渡したりもできます。
もし、プッシュ通知タップ後にアプリを起動し特定の画面に遷移する、などの機能を付けたい場合は画面キー情報などをセットしてあげればアプリ側で制御が可能です。(SDKの仕様に依存)




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です