【发布时间】:2018-12-03 06:45:15
【问题描述】:
我正在使用一个调用 Firebase 云函数的 iOS 应用程序来存储 FCM 令牌,以便以后在发送通知时使用。问题是它不起作用。
我正在使用 Cloud Firestore 数据库。
当函数被调用时,这就是我想要发生的事情。该函数根据数据库检查参数。如果提供的参数中的数据已经在数据库中找到,那么什么都不会发生。 如果未找到,则应将其添加到数据库中。
我的云功能代码如下。如果有人能帮我找到确切的问题,我会很高兴。
exports.addNewElement = functions.https.onCall((data, context) => {
console.log('--addNewElement-- has been called with:\n' + data.fcmToken + '\n!!');
var collectionRef = db.collection("THE_COLLECTION");
// Create a query against the collection.
var query = collectionRef.where("fcmToken", "==", data.fcmToken);
query.get().then(function(doc) {
if (doc.exists) { // We should do nothing.
console.log("Document data:", doc.data());
} else { // We should add the new element.
// doc.data() will be undefined in this case
console.log("No such document!");
collectionRef.add({"fcmToken": fcmToken})
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
});
我可以想象处理 FCM 令牌的其他方向。 有什么推荐的方法可以用作最佳实践吗?
【问题讨论】:
-
有什么问题?
-
问题是我现在没有存储任何东西。因为我所做的没有工作。此外,我不确定我想要的方式是最佳实践。我可以通过直接从应用程序发出数据库写入请求来存储令牌,我已经尝试过成功,但我想避免存储两次相同的令牌,这就是为什么我认为使用云功能可能是更好的方法。跨度>
-
你为什么使用
collectionRef.add({"fcmToken": fcmToken})insted ofcollectionRef.add({"fcmToken": data.fcmToken}) -
对!这是一个错误的输入。对不起!
标签: javascript ios firebase firebase-cloud-messaging