You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo SDK48 iOS端能否接收带图片的推送通知?

Expo SDK48 iOS推送通知不显示图片的解决方案

这不是Expo的限制,本质是iOS和Android推送通知的媒体处理逻辑不同,需要针对iOS做额外的payload配置。以下是具体解决步骤:

关键配置要点

iOS要求推送必须携带mutable-content: 1来启用媒体扩展,同时要在APNs专属的payload里指定图片附件——Firebase默认的图片字段只适配Android。

1. 调整Firebase推送Payload

不管用Admin SDK还是控制台,都需要为iOS单独配置APNs参数:

  • 在apns.payload.aps中添加mutable-content: 1
  • 在apns.payload下添加attachment字段,包含图片的HTTPS地址(可选指定媒体类型)

用Admin SDK的示例代码:

const message = {
  token: "用户设备Token",
  notification: {
    title: "测试推送",
    body: "带图片的推送内容"
  },
  // Android 图片配置(原逻辑不变)
  android: {
    notification: {
      imageUrl: "https://your-domain.com/image.jpg"
    }
  },
  // iOS 专属配置
  apns: {
    payload: {
      aps: {
        "mutable-content": 1
      },
      attachment: {
        url: "https://your-domain.com/image.jpg",
        type: "image/jpeg"
      }
    }
  }
};

如果用Firebase控制台,需要切换到"高级选项",手动编辑APNs payload:

在APNs字段中输入:

{
  "aps": {
    "mutable-content": 1
  },
  "attachment": {
    "url": "https://your-domain.com/image.jpg"
  }
}

2. 验证Expo项目配置

确保项目已正确开启iOS推送权限:

  • 在app.json的ios.infoPlist中添加UIBackgroundModes包含remote-notification
  • 确认iOS推送证书已在Expo dashboard正确配置

示例app.json片段:

{
  "expo": {
    "ios": {
      "bundleIdentifier": "com.your.app",
      "infoPlist": {
        "UIBackgroundModes": ["remote-notification"]
      }
    }
  }
}

3. iOS媒体加载限制

  • 图片必须是HTTPS链接,HTTP地址iOS会拒绝加载
  • 图片大小不能超过10MB
  • 支持格式:JPEG、PNG、GIF(静态/动态均支持)

常见问题排查

  • 未添加mutable-content: 1:iOS系统不会触发媒体扩展,直接忽略图片附件
  • 图片地址不可访问:检查链接是否能在iOS Safari中正常打开
  • Firebase控制台默认图片字段:该字段仅对Android生效,iOS需手动配置APNs payload

内容的提问来源于stack exchange,提问作者Isaac Batista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:57:43