如何使用Firebase Cloud Messaging新send()函数实现通知即时送达?
使用Firebase Messaging send()函数实现Android来电即时通知
针对你提到的sendToDevice弃用后改用send()函数,同时保证来电通知即时送达的需求,以下是改造方案:
改造后的代码实现
// 构建符合send()要求的Message对象 const message = { token: deviceFcmId, data: data, android: { priority: "high", ttl: 0 } }; // 发送消息 admin.messaging().send(message) .then(response => { console.log("来电通知发送成功:", response); }) .catch(error => { console.error("发送来电通知失败:", error); });
关键配置说明
- 高优先级设置:在
android字段下配置priority: "high",确保FCM将此消息列为高优先级处理,即使设备处于低功耗或后台状态,也会立即唤醒设备接收通知,满足来电几秒内送达的要求。 - TTL=0:设置
ttl: 0表示消息不允许被FCM存储等待后续送达,若设备当前离线,消息会直接丢弃——这符合来电通知的时效性,错过的来电无需再推送。 - 目标设备指定:通过
token字段传入目标设备的FCM ID,替代原sendToDevice的第一个参数。
可选兼容配置(若支持iOS)
如果你的应用需要兼容iOS设备,需补充APNs相关配置以保证iOS端的即时推送:
const message = { token: deviceFcmId, data: data, android: { priority: "high", ttl: 0 }, apns: { payload: { aps: { contentAvailable: true, priority: 5 } }, headers: { "apns-priority": "5" } } };
内容的提问来源于stack exchange,提问作者Sujith S Manjavana
相关产品推荐
相关产品推荐

