0
こんにちは、firebaseクラウド関数はprevious.exists()のチェックを入れていないときに何度も呼び出されます。 複数のプッシュ通知が表示されます。firebaseクラウド関数が複数回呼び出されました
if (!event.data.exists()){
return;
}
if (event.data.previous.exists()){
return;
}
しかし、私はそれをチェックするときにプッシュ通知を取得しません。 ここには動作しないコードがあります: 変更する必要はありますか?
exports.sendShoppingListInvitationNotification = functions.database.ref('/invites/{id}/').onWrite(event => {
//get the snapshot of the written data
const snapshot = event.data;
if (!event.data.exists()){
return;
}
if (event.data.previous.exists()){
return;
}
//get snapshot values
console.log(snapshot.key);
const receiptToken = snapshot.child('receiptFcmToken').val();
const senderName = snapshot.child('senderNickname').val();
const inviteMessage = snapshot.child('inviteMessage').val();
const senderImage = snapshot.child('senderProfileImageURL').val();
//create Notification
const payload = {
notification: {
title: `Invitation from ${senderName}`,
body: `${inviteMessage}`,
icon: `${senderImage}`,
badge: '1',
sound: 'default',
}
};
//send a notification to firends token
return admin.messaging().sendToDevice(receiptToken, payload).then(response => {
console.log("Successfully sent message:", response);
}).catch((err) => {
console.log(err);
});
});
素晴らしいアイデア。私はちょうどあなたのチュートリアルを見ました。専門家が答えを得ることはその名誉です。 –
悲しい私は今私のデータを取得していない。 onCreate関数は、receiptFcmTokenにnullを返します。エラー:sendToDevice()に提供された登録トークンは、空でない文字列または空でない配列でなければなりません。 –
私は、私がonWriteを呼び出すときに私の考えを持っていると思う私の関数は、各子ノードが追加されたときにそれを実行します。 onCreateは、作成されたばかりの子ノードが追加される前に空のノードを配信します。しかし、どのように私は子供の値を取得します。 Iamは少し混乱しました。 –