はじめに
ReactNativeでアプリ開発をしているわけなんですが、
個人的にはプッシュ通知ってアプリの大きな魅力だと思うわけですよ。
軽く下調べすると、Firebaseを使うと割と簡単に実現できるらしいので今回はそこらへんをやってみた話。
受信側(アプリ)は別記事で書く予定なので、今回は通知する側(有り体に言えばサーバサイド)の実装例を。
関連ライブラリ
npm install firebase-admin
nom install tunnel2
※tunnel2はプロキシ下でなければ不要です。
事前準備
- Firebaseから[設定]→[サービスアカウント]→[新しい秘密鍵を生成]に移動して[キーを生成]
- ダウンロードしたJSONを保存(今回はserviceAccountKey.jsonとしました)
ソース
sendFb.js
let tunnel = require('tunnel2');
let admin = require('firebase-admin');
let serviceAccount = require('./serviceAccountKey.json');
// プロキシを使わない場合はこの記述は不要
const proxyAgent = tunnel.httpsOverHttp({
proxy: {
host: "ホストアドレス"
, port: ポート番号
, proxyAuth: "UIDとPASS"
}
})
let app = admin.initializeApp({
credential: admin.credential.cert(serviceAccount, proxyAgent),
databaseURL: "FirebaseのDBUrl",
httpAgent: proxyAgent
});
// プッシュ通知を受信するデバイストークン
let token = 'hogehoge';
// 通知するメッセージ
let message = {
// 通知時のポップアップの件名と本文
notification : {
title: "00000",
body: "111111"
},
// アプリに渡したいデータ
data: {
param1: "aaaaaa",
param2: "bbbbbb"
},
token: token
};
admin.messaging().send(message)
.then((response) => {
console.log("OK");
// 通知完了後処理
})
.catch((error) => {
console.log("NG");
console.log(error);
// 通知失敗時処理
});
実行
node sendFb.js
感想
ほぼ公式のドキュメントを写経しながらで済んだ(プロキシのくだりはちょっとハマった)ので導入は簡単に思えた。
今回はじめてFirebaseに触れたけど、勿論プッシュ通知以外にも色々とできるようなので、引き続き勉強ですな。