我是firebase和云功能通知的新手,我想知道如果我向用户发送100000个通知,即使使用由firebase团队管理并具有自动缩放功能的CF,是否也有可能使我的应用程序崩溃?
我正在做这样的事情:
- 应用程序上有人发帖
- 在我的CF上有一个触发器,可以为用户发送通知
- 然后,所有用户(100000(都收到了通知
Firebase基础设施是否有队列或作业管理来避免这种情况,或者我能像婴儿一样睡得好吗?
这里是我的代码片段:
exports.newPost = functions.database.ref("post/{postId}")
.onUpdate((change, context) => {
const before = change.before.val();
const after = change.after.val();
if (before.status === after.status) {
return null;
}
const ref = admin.database().ref(`tokens/`);
return ref.orderByKey().once("value", async snapshot => {
const fcmTokens = snapshotToArray(snapshot);
admin.messaging()
.sendMulticast({
data: {},
tokens: fcmTokens,
notification: {
title: 'Title',
body: 'Body',
},
android: {
notification: {
image: imageUrl,
},
},
apns: {
payload: {
aps: {
"mutable-content": 1,
},
},
fcm_options: {
image: imageUrl,
},
},
})
.then(resp => console.log(resp))
.catch(e => console.log(e))
})
})
我的问题是:我的代码可能有问题吗?
本质上没有什么"坏的";用你在这里显示的代码。FCM每天定期发送数十亿条通知。其中最困难的部分甚至不是由你在这里显示的代码处理的——它是由FCM服务器处理的。这里的代码只是告诉服务器发送这些消息,这需要极低的工作量。
我在这里看到的唯一问题是令牌的限制,这可能会导致无法发送通知。
您使用的sendMulticast每次调用最多可接受500个FCM令牌。
https://firebase.google.com/docs/cloud-messaging/send-message