You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

FCM通知在iOS与Android端无法显示自建服务器静态图片的问题(已解决,将分享解决方案)

FCM通知在iOS与Android端无法显示自建服务器静态图片的问题(已解决,将分享解决方案)

大家好,之前我折腾了好几周才搞定这个FCM通知图片显示的问题,今天把整个过程和解决方案分享出来,希望能帮到同样踩坑的朋友!

我的需求

  • 给FCM推送的通知附加一张静态图片,该图片已部署在我的自建Web服务器上,浏览器中可以正常打开访问。

遇到的问题

明明图片在自己服务器上能正常访问,但通知里就是不显示;换成谷歌等第三方平台托管的图片时,却能正常显示在通知中。

我试过的操作

为了解决问题,我特意把自建服务器上图片的响应头改成和谷歌图片的响应头完全一致,但还是没能解决问题。

最终解决方案

经过反复排查,我找到了几个关键的问题点,调整后图片就正常显示在通知里了:

  • 必须使用受信任的HTTPS证书:iOS和Android的通知系统对图片源的安全性要求很高,自建服务器的HTTPS证书必须是正规CA机构签发的(不能用自签证书)。浏览器里手动信任自签证书能打开图片,但通知系统会直接拒绝加载这类不受信的资源。
  • 配置跨域响应头:确保服务器返回图片时,响应头中包含Access-Control-Allow-Origin,可以设置为*(允许所有来源访问)。FCM服务拉取图片时会做跨域校验,缺少这个头会被拦截。
  • 符合图片格式与尺寸要求:FCM对通知图片有明确要求,推荐使用PNG或JPG格式,尺寸上Android建议256x256,iOS建议1024x1024,格式不对或尺寸超出范围都可能导致不显示。
  • 检查服务器访问权限与缓存设置:确保图片没有被防盗链规则限制,同时调整Cache-Control响应头(比如设为public, max-age=31536000),让FCM能缓存图片,提升加载效率。

我就是通过调整以上几点,尤其是修复了HTTPS证书和跨域头的问题,终于让自建服务器的图片正常显示在FCM通知中了!

备注:内容来源于stack exchange,提问作者Stefan

火山引擎 最新活动