使用firebase-admin SDK给iOS发推送时image字段被改为image_url如何解决
问题原因
Firebase Admin SDK 对 apns.fcmOptions 下的内置字段有固定的映射逻辑,其中image字段会被自动转换为image_url写入最终下发到APNs的 payload 中,该行为是SDK内置的预设规则,无法通过配置直接阻止转换。
解决方案
- 方案1(推荐):将自定义
image字段直接放到apns.payload层级,和aps字段平级即可,该位置的自定义字段不会被FCM SDK修改键名,修改后的配置示例如下:
var admin = require("firebase-admin"); var serviceAccount = require("./firebase-adminSDK.json"); admin.initializeApp({ credential: admin.credential.cert(serviceAccount), }); const notif = { data: { title : "hello", body:"hello", }, notification : { title : "title to iOS", body:"Message to iOS", }, apns: { payload: { aps: { mutableContent: 1 }, // 自定义image字段放在该层级,不会被重命名 image: "https://example.com/image.png" }, // 移除fcmOptions中的image配置 fcmOptions: {} }, tokens: [], }; //looped over some list and pushed fcm tokens on to `tokens` array await messaging.sendMulticast(notif)
iOS端的通知服务扩展(Notification Service Extension)可以直接从 payload 顶层读取image字段获取图片地址,完全符合需求。
- 方案2:无需修改服务端代码,直接调整iOS端兼容逻辑,读取
image_url字段即可实现相同效果。
内容的提问来源于stack exchange,提问作者Vinay
相关产品推荐
相关产品推荐

