Node.js Firebase Admin FCM V1 API:发送仅数据消息时设置contentAvailable为false
解决FCM V1 API发送仅数据消息时iOS APP关闭不接收的问题
错误原因
APNs规范中,content-available字段仅接受值1(表示开启后台唤醒),设置0属于无效参数,这是你收到"Request contains an invalid argument"错误的直接原因。
解决方案
要实现iOS APP关闭时不接收仅数据消息,核心是阻止FCM自动为APNs payload添加content-available:1(FCM发送纯数据消息时默认会添加该字段以唤醒后台APP)。具体做法是在apns.payload.aps中添加一个空的alert字段,无需设置content-available:
await this.app.messaging().send({ token: deviceToken, data: { test: 'Hello World' }, apns: { payload: { aps: { alert: {} // 添加空alert字段,避免FCM自动注入content-available }, } }, });
原理说明
当发送纯数据消息时,FCM默认会为iOS设备设置content-available:1,允许APP在后台唤醒处理数据。通过添加alert字段(即使是空对象),FCM会将消息识别为「通知+数据」的混合类型,此时不会自动添加content-available字段,iOS系统也就不会在APP关闭时唤醒接收该消息。
内容的提问来源于stack exchange,提问作者FELIXCAT_3
相关产品推荐
相关产品推荐

