Node.js で firebase-admin を使ってサーバからプッシュ通知
はじめに
サーバ(Node.js)からプッシュ通知を送信する方法として、firebase-admin を使って簡単なプッシュ通知を送信する方法を整理した。
関連: Vue + Cordova + Firebase でプッシュ通知
TL;DR
- firebase-admin をインストール、秘密鍵ファイルをダウンロード
- 環境変数
GOOGLE_APPLICATION_CREDENTIALS
を設定(direnv
使うと便利) initializeApp
,Messaging.send
でプッシュ通知 送信
目次
環境・条件
環境1(Mac)
1 | $ sw_vers |
環境2(Ubuntu)
1 | $ grep -i pretty /etc/os-release |
詳細
セットアップ
インストール
npm
で firebase-admin をインストール
1 | $ npm i firebase-admin |
秘密鍵(json) 生成
参考: サーバーに Firebase Admin SDK を追加する | Firebase
Firebase のウェブコンソールから xxxx--firebase-adminsdk-xxxx.json
の生成
取得したファイルをプロジェクト配下に移動、今回はプロジェクトルートに置いた
1 | $ mv ~/Downloads/xxxx--firebase-adminsdk-xxxx.json . |
Git の管理下から外すために .gitignore
の更新
1 | $ echo xxxx-firebase-adminsdk-xxxx.json >> .gitignore |
環境変数の設定
GOOGLE_APPLICATION_CREDENTIALS
を設定しておくと、firebase-admin
が良きに計らってくれるようになる。
1 | $ export GOOGLE_APPLICATION_CREDENTIALS="$(pwd)/xxxx-firebase-adminsdk-xxxx.json" |
実運用環境には direnv
を使って設定している。
1 | $ direnv edit . |
メッセージ送信
ごくシンプルなプッシュ通知送信を実現するコード。
※token
はデバイスから取得する必要あり、参考: Vue + Cordova + Firebase でプッシュ通知
1 | const admin = require("firebase-admin"); |
実際にテストメッセージを送信し、Android で受信した結果
admin.messaging().send
の部分は下記のように書いても良い
1 | const app = admin.initializeApp(); |
コードについてのメモ
走り書き
initializeApp
で初期化、前述の通りGOOGLE_APPLICATION_CREDENTIALS
を設定していれば引数なしで OK。- メッセージ送信は
Messaging.send
を利用- 他にも
sendAll
,sendToDeviceGroup
などもある - 詳しくは Methods -
admin.messaging.Messaging
を参照
- 他にも
- 送信データは
TokenMessage
を利用- 他にも
TopicMessage
,ConditionMessage
がある
- 他にも
- プッシュ通知を行う場合は
notification
の設定が必須notification
が無くてもメッセージ自体は受信できるが、システム通知が起こらないnotification
の構造はadmin.messaging.Notification
、title
,body
,imageUrl
の3つ
まとめ
- firebase-admin をインストール、秘密鍵ファイルをダウンロード
- 環境変数
GOOGLE_APPLICATION_CREDENTIALS
を設定(direnv
使うと便利) initializeApp
,Messaging.send
でプッシュ通知 送信
参考文献
- firebase-admin - npm
- Admin Node.js SDK | Firebase
- サーバーに Firebase Admin SDK を追加する | Firebase
- ウェブ / JavaScript でデバイス グループにメッセージを送信する | Firebase
- アプリサーバーからの送信リクエストを作成する | Firebase
- FirebaseのCloud Messaging(FCM)とCloud FunctionsでWebプッシュ通知を行う - Qiita
- PWAでプッシュ通知を実装してみる(4)実際にプッシュ通知を送信・受信する|虹色ミツバチ
関連記事
- Vue + Cordova + Firebase でプッシュ通知
- axios で添付ファイルありのリクエスト(multipart/form-data の POST)
- axios で unable to verify the first certificate の対応方法
- Git で package-lock.json がコンフリクトした時の解決方法
- モバイルアプリの強制アップデートに関する調査メモとアイデア
- Vue.js で FontAwesome を使う方法
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア