问题描述
我正在尝试使用swift,node.js和firebase函数将推送通知发送到firebase。我可以成功推送一些通知,但是我在处理邮件时遇到了麻烦。
我的firebase函数看起来像
node.js中的函数看起来像
@H_502_8@exports.observeMessages = functions.database.ref('/messages/{fromId}/{toId}').onCreate((snapshot,context) => {
const fromId = snapshot.val().fromId;
const toId = snapshot.val().toId;
console.log('LOGGER --- uid is ' + fromId);
console.log('LOGGER --- workerId is ' + toId)
})
这些消息存储在Firebase之类的
我尝试通过以下方式发送这些推送通知
@H_502_8@ var toId = context.params.toId;
var fromId = context.params.fromId;
当我将后者发布到我的node.js代码中时,我看到了
下面是我如何将消息信息发送到firebase
@H_502_8@ fileprivate func sendMessageWithProperties(_ properties: [String: Any]) {
let ref = Database.database().reference().child("messages")
let childRef = ref.childByAutoId()
let toId = user!.uid!
let fromId = Auth.auth().currentUser!.uid
let timestamp = Int(Date().timeIntervalSince1970)
var values: [String: Any] = ["toId": toId,"fromId": fromId,"timestamp": timestamp,"checked": 0]
properties.forEach({values[$0] = $1})
childRef.updateChildValues(values) { (error,ref) in
if error != nil {
print(error!)
return
}
self.inputContainerView.inputTextField.text = nil
guard let messageId = childRef.key else { return }
let userMessagesRef = Database.database().reference().child("user-messages").child(fromId).child(toId).child(messageId)
userMessagesRef.setValue(1)
let recipientUserMessagesRef = Database.database().reference().child("user-messages").child(toId).child(fromId).child(messageId)
recipientUserMessagesRef.setValue(1)
}
}
解决方法
问题可能出在ref('/messages/{fromId}/{toId}')
中。当您要在messages
数组中添加新消息时触发该函数时,请尝试将其更改为ref('/messages/{messageId}')
。
exports.observeMessages = functions.database.ref('/messages/{messageId}').onCreate((snapshot,context) => {
const fromId = snapshot.val().fromId;
const toId = snapshot.val().toId;
console.log('LOGGER --- uid is ' + fromId);
console.log('LOGGER --- workerId is ' + toId)
})