私は、誰かがイベントを好きなときに私のアプリに通知を送るようにしようとしています。Firebaseのクラウド機能でバッチ通知APIを使用するにはどうすればよいですか?
私はこのようにそれを行うことを試みた:
exports.likeAddedNotification = functions.database.ref('/eventLikes/{eventID}/{userWhoLikedID}').onWrite(event => {
const userWhoLikedID = event.params.userWhoLikedID;
console.log("User has liked a post " + userWhoLikedID);
admin.database().ref('events/' + event.params.eventID).once('value').then(function(snapshot) {
var usersID = snapshot.val().userId;
console.log("The person who made the post is " + usersID);
//Send notification to that user
var payload = {
"group_id": "batch_push_sender",
"push_time": "now",
"message": {
"body": usersID + " liked your event"
},
"recipients": {
"custom_ids": [usersID]
},
"sandbox": true, // Only for iOS
};
notificationRequest.write(JSON.stringify(payload));
notificationRequest.end();
console.log("Sent a notification to " + usersID);
});
});
(そんなにコードを含むため申し訳ありませんが、私はそれがすべての関連するかもしれないと感じ) 私はこのコードを使用して
var payload = ...
を削除した場合
と
notificationRequest.write(JSON.stringify(payload));
notificationRequest.end();
それは私が期待する正確にどのように動作します。どの投稿が好きで誰がその投稿を好きだったかをコンソールに書き出します。
閉鎖時に問題が発生しているのか、間違ったことをしているのか、またはエラーを引き起こすバッチAPIの場合は、実際にはわかりません。
UDIDをカスタムIDとして使用できるプッシュ通知用の優れたサイトが分かっているため、各デバイスのトークンを手動で処理する必要はありません。
A)必ずプロミスを返すようにしてください。それは、ワーカーがそれを保つことを保証する唯一の方法です。通知は同期であるため、リクエストが中止される可能性が非常に高いです。 B)Firebase Admin SDKのメッセージ機能をチェックしてください。 –
Github https://github.com/firebase/functions-samples/tree/master/fcm-notifications –
に例があります。これは良い答えです。James! :-) –