我正在尝试使用Cloud Functions和FCM for iOS实现pushNotifications,但我一直抛出这个错误:
2018-05-21T13:04:00.087Z我sendPushNotifications:发送错误 message:{错误:请求包含无效参数。 在FirebaseMessagingError.Error(本机) 在FirebaseMessagingError.FirebaseError [作为构造函数](/user_code/node_modules/firebase-admin/lib/utils/error.js:39:28) 在FirebaseMessagingError.PrefixedFirebaseError [作为构造函数](/user_code/node_modules/firebase-admin/lib/utils/error.js:85:28) 在新的FirebaseMessagingError(/user_code/node_modules/firebase-admin/lib/utils/error.js:241:16) 在Function.FirebaseMessagingError.fromServerError(/user_code/node_modules/firebase-admin/lib/utils/error.js:271:16) at /user_code/node_modules/firebase-admin/lib/messaging/messaging-api-request.js:149:50 at process._tickDomainCallback(internal / process / next_tick.js:135:7)errorInfo:{code: '消息/无效参数的&#39 ;, 消息:'请求包含无效参数。' },codePrefix:' messaging' }
我在云功能中的实现如下:
exports.sendPushNotifications = functions.database.ref('/conversations/{userUid}/').onWrite((snap, context) => {
const userUid = context.params.userUid
console.log("Triggered user ", userUid)
return admin.database().ref('/fcmToken/' + userUid).once('value', snapshot => {
const values = snapshot.val()
const fcmToken = values.fcmToken
var message = {
"token": fcmToken,
"notification": {
"body": "New message"
},
"apns": {
"headers": {
"apns-priority": "5"
},
"payload": {
"aps": {
"alert": {
"body": "New message"
},
"badge": "1",
"sound": "default"
}
}
}
};
return admin.messaging().send(message)
.then((response) => {
return console.log('Successfully sent message:', response);
})
.catch((error) => {
return console.log('Error sending message:', error);
});
})
})
令人沮丧的是,当我删除整个"apns"
节点时,代码实际上正常工作,即我可以接收推送通知。我想这意味着我的设置都完成了。一旦我加入"apns"
,就会开始抛出上述错误。我还引用了这三篇帖子,this,this和this,并确保我仔细遵循了代码和说明。由于某些原因,我无法让它发挥作用。
我还试图删除"notification"
节点,因为文档确实提到在目标所有平台时只使用公共密钥。由于我现在只针对iOS,我想我应该删除"notification"
密钥。但同样它也会引发同样的错误。
答案 0 :(得分:2)
好的,所以这是一个新手的错误。如果我仅针对iOS,则不应使用常用密钥是正确的。除此之外,徽章应为Int
而不是String
。
此代码有效:
var message = {
"token": fcmToken,
"apns": {
"headers": {
"apns-priority": "5"
},
"payload": {
"aps": {
"alert": {
"body": "New message"
},
"badge": 1,
"sound": "default"
}
}
}
}
希望它可以帮助那些面临同样问题的人。