1
我得到了這個錯誤:在使用gcm推送通知時收件人鍵'registrationTokens'的Falsy值。這個錯誤是怎麼回事:Falsy值爲收件人鍵'registrationTokens'
下面你可以找到我的代碼:
Device.find({ user: { $in: users }}, function (err, devices) {
if (err) {
logger.error('500 ' + err)
return res.status(500).json({
code: config.errorCode.status500.code,
message: config.errorCode.status500.message
})
}
var androidRegTokens = []
var iOSReqTokens = []
for (var i = 0; i < devices.length; i++) {
if (devices[i].platform == 'Android') {
androidRegTokens.push(devices[i].deviceToken)
} else {
iOSReqTokens.push(devices[i].deviceToken)
}
}
if (androidRegTokens.length > 0) {
gcmPush('Notification is sent.', androidRegTokens)
}
if (iOSReqTokens.length > 0) {
apnsPush('Notification is sent.', iOSReqTokens)
}
return res.json({ msg: 'Operation succeed.'})
})
功能gcmPush的身體( '發送通知',androidRegTokens)是:
this.sender.send(message, { registrationTokens: deviceTokens }, function (err, response) {
if (err) {
console.error(err)
}else {
console.log(response)
}
})
有誰知道錯的是,與我碼?起初,推送通知非常完美,而不是每次我致電服務時發生此錯誤。
編輯:
我已經解決了這個感謝名單給路易斯費爾南多。的問題是該函數:
gcmPush('Notification is sent.', androidRegTokens)
我已忘了添加標題,其是構造的一部分:
function GcmPush (title, message, deviceTokens) {
this.sender = new gcm.Sender(config.gcmSender)
this.sendPushNotification(title, message, deviceTokens)
}
感謝您的回覆。我嘗試了異步控制流(異步),但發生了相同的錯誤。然後我意識到問題出在我使用推送註冊的地方。我已經用解決方案更新了我的問題。 – andzaOs