FirebaseからPush通知を送る(CloudFunctionsを使って)
FirebaseCloudMessaging(以下「FCM」)は、iOS/Android/Webでプッシュ通知を送ることができるFirebaseのサービスになります。(しかも無料です!)
配信設定画面は、わかりやすいGUIになっているため、導入後の運用をエンジニア以外でもできるようになっています。
もちろん、プッシュ開封率などの効果計測も行えますし、Firebaseの他サービス
- FirebaseAnalutics(アナリティクス)
- FirebasePredictions(ユーザー行動の予測)
と連携すれば、特定の行動を起こしたユーザーにだけ配信することや特定の行動を起こしそうなユーザーにだけ配信することなどができます。
管理画面経由などはよくありますので、「CloudFunctions」にてユーザーを指定してプッシュ通知を送る方法を記載致しました。
ユースケースとしては、
- 掲示板などで発言に、「いいね」や「コメント」がついた時に、発言者だけにプッシュ通知を送る
- 所属しているグループメンバーだけにプッシュ通知を送る
などになるかと思います。
得られるもの
「CloudFunctions」から個別ユーザーへプッシュ通知を送る方法
導入
「Firebase導入」「FCM導入」「FirebaseCLI/CloudFunctions導入」については、下記を参照してください。
内容
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
// URLから「CloudFunctions」呼び出し
exports.pushSubmitFromURL = functions.https.onRequest((request, response) => {
const token = "FCMToken";
const payload = {
notification: {
title: "プッシュタイトル",
body: "内容",
badge: "1", //バッジ数
sound:"default" //プッシュ通知音
}
};
pushToDevice(token,payload);
});
// アプリから「CloudFunctions」呼び出し
exports.pushSubmitFromApp = functions.https.onCall((request, response) => {
const token = "FCMToken";
const payload = {
notification: {
title: "プッシュタイトル",
body: "内容",
badge: "1", //バッジ数
sound:"default" //プッシュ通知音
}
};
pushToDevice(token,payload);
});
// FCM部分
function pushToDevice(token, payload){
// priorityをhighにしとくと通知までが早くなります
const options = {
priority: "high",
};
admin.messaging().sendToDevice(token, payload, options)
.then(pushResponse => {
return { text: token };
})
.catch(error => {
throw new functions.https.HttpsError('unknown', error.message, error);
});
}
呼び出しの際のGET/POSTの引数で端末から取得できるFCMトークンを渡せば、その端末だけにプッシュ通知ができます。
以上になります。
Firebaseホント便利ですよね。
足らないこと、間違い等ありましたら、コメントもしくは、@gurensouen
にご連絡いただけますと幸いです。
それでは、良き開発生活を。
Author And Source
この問題について(FirebaseからPush通知を送る(CloudFunctionsを使って)), 我々は、より多くの情報をここで見つけました https://qiita.com/gurensouen/items/5abd9aa651a7c1144d32著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .