概要
firebase-ruby だとリアルタイムデータベースを扱えないので nodejs の firebase-admin を使ってみました
今回紹介するサンプルはリアルタイムデータベースからデータを取得して一定条件だった場合に特定のペイロードにプッシュ通知を送信するサンプルです
環境
- macOS 10.13.2
- firebase-admin 5.11.0
- nodejs 8.7.0
サンプルコード
事前に Firebase Admin SDK の管理画面から新しい秘密鍵を生成して JSON ファイルをダウンロードしておいてください
var admin = require('firebase-admin');
var serviceAccount = require('./project-firebase-adminsdk-xxxxx-xxxxxxxxxx.json');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: 'https://project-name.firebaseio.com/'
});
var db = admin.database();
var ref = db.ref("path/to/ref");
ref.on("child_added", function(snapshot) {
var val = snapshot.val();
console.log(val.id);
// ある条件に合う場合は
if (val.id.startsWith("push_")) {
// プッシュ通知を送信する
console.log("send push");
var topic = "topic";
var payload = {
notification: {
title: "Hello",
body: "This message sent from nodejs"
}
};
admin.messaging().sendToTopic(topic, payload)
.then(function(response) {
console.log("Successfully sent message:", response);
})
.catch(function(error) {
console.log("Error sending message:", error);
});
}
},function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
ref.on を使うことでデータが登録される度に function(snapshot)
がコールされます
イベントにはいくつが種類があり今回は child_added
というイベントを指定しています
このイベントは子要素が追加されたときだけ関数内の処理が実行されるイベントです
プッシュ通知は admin.messaging().sendToTopic
で行います
今回は特定のトピックに対して送信しています
あとのその結果を表示しているだけです
0 件のコメント:
コメントを投稿