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

Flutter中One Signal通知在iOS端无法显示图片的解决方法

One Signal iOS通知图片不显示的解决办法

1. 修正ios_attachments的格式

你之前的写法有误,One Signal要求iOS附件的键必须是UUID格式,不能用自定义的"id"。正确的请求体片段示例:

{
  "app_id": "你的应用ID",
  "headings": {"en": "活动预告"},
  "contents": {"en": "本周六线下沙龙等你来"},
  "ios_attachments": {
    "00000000-0000-0000-0000-000000000000": "https://你的图片地址.com/image.jpg"
  }
}

UUID可以随便生成一个,只要格式符合标准即可。

2. 检查图片的兼容性

iOS对通知图片有硬性要求:

  • 格式仅限PNG或JPG
  • 建议尺寸1024x1024像素,1:1比例(适配全设备)
  • 图片URL必须是HTTPS协议,且服务器允许iOS设备访问(无地区限制、证书有效)
  • 文件大小不超过10MB

3. 确认SDK与项目配置

在Flutter的iOS端做以下检查:

  • 确保One Signal iOS SDK是最新稳定版
  • Info.plist中UIBackgroundModes已包含remote-notification
  • One Signal控制台的iOS应用配置中,推送证书有效且正确上传(区分开发/生产证书)

4. 必须添加通知扩展服务(Notification Service Extension)

iOS要加载通知附件,必须给项目添加这个扩展:

  1. 打开Xcode,选中项目 -> 点击"+"新增Target -> 选择"Notification Service Extension"
  2. 扩展的Bundle ID需为主应用ID后缀.notification-service(例如com.yourapp.notification-service)
  3. 无需修改NotificationService.swift的默认代码,One Signal会自动处理附件
  4. 扩展的Deployment Target要和主应用一致,最低支持iOS 10

5. 完善请求体参数

发送通知时必须加入content_available: true,触发iOS的通知扩展处理附件:

{
  "app_id": "你的应用ID",
  "content_available": true,
  "headings": {"en": "活动预告"},
  "contents": {"en": "本周六线下沙龙等你来"},
  "ios_attachments": {
    "00000000-0000-0000-0000-000000000000": "https://你的图片地址.com/image.jpg"
  }
}

6. 排查错误的实用方法

  • 去One Signal控制台的对应通知详情页,查看"Delivery"标签下的iOS设备错误日志,定位图片加载失败原因
  • 用真实iOS设备测试,模拟器无法正常显示通知附件
  • 直接在iOS设备的Safari中打开图片URL,确认能正常加载

内容的提问来源于stack exchange,提问作者Alperen Aygün

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:03:11