誰かがイベントを気に入ったときに、アプリにユーザーに通知を送信させようとしています。
私はこのようにしようとしました:
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();
それはまさに私が期待したとおりに機能します。どの投稿が気に入ったか、誰がその投稿を気に入ったかをコンソールに書き込みます。
問題がクロージャーで多くのことを行ったために発生しているのか、それとも単純に間違ったことをしているだけなのか、それともエラーを引き起こしているのは Batch API なのか、私にはよくわかりません。
各デバイスのトークンを手動で処理する必要がないように、UDID をカスタム識別子として使用できるプッシュ通知のより良いサイトを知っている場合は、お知らせください。