跳转到主要内容
当发送包含图片的推送通知时,OneSignal SDK 会尝试从 OSNotification Payload 获取外部图片 URL 并在通知中显示它。此过程期间应用是否关闭并不重要。SDK 会等待图片下载,但如果下载时间超过约 25 秒(由 Apple 强制执行),则通知将在不显示图片的情况下显示。如果下载失败,OneSignal 的 SDK 不会重试获取图片。 本指南将介绍图片未显示的最常见原因以及如何解决它们。有关图片规格的详细信息,请参阅图片和富媒体

图片配置

首先检查这些项目以确保图片配置正确。

图片大小

图片大小必须小于 5MB。图片越小,下载速度越快。更多详细信息请参阅图片和富媒体

图片 URL

  • 图片 URL 需要直接链接到图片资源。不能有重定向,也不能链接到显示图片但不是实际图片资源的页面。
    • 通常这意味着图片 URL 以 https:// 开头,并以文件扩展名(如 .png.jpg)结尾。
示例:
  • 这不起作用:https://pixabay.com/en/architecture-travel-sky-building-3095716/
  • 但如果您右键单击图片并在新标签页中打开,这将起作用:https://cdn.pixabay.com/photo/2018/01/21/01/46/architecture-3095716_960_720.jpg

图片托管

如果您将图片上传到 OneSignal,它将在我们的服务器上托管约 33 天。如果您需要更长时间使用图片,可以使用模板或将图片存储在自己的服务器上,并直接在模板中引用资源 URL。 如果您自行托管图片,需要确保服务器能够处理下载量。每个接收通知的设备都需要下载图片。设备下载所有通知资源(包括图片)的时间约为 30 秒。如果时间更长,该设备上将不会显示图片。

设备配置

检查设备上的互联网连接。不稳定的网络连接可能导致图片无法显示。
  • 在不同的 WiFi 网络上测试。
  • 在不同的蜂窝网络上测试。
  • 在不同的设备上测试。

平台配置

根据未接收图片的平台检查以下部分。

Web 推送图片

  • 只有 Chrome 在 Windows 和 Android 上支持推送通知中的大图片
    • macOS 版 Chrome 不支持大图片。
  • Firefox、Safari 和 Edge 不支持大图片。
  • 在 Android 上,当您收到通知时,需要点击通知以展开它并查看图片。
如果您的移动浏览器应用有许多未读推送通知和/或打开了许多标签页,这可能会导致通知无法显示。

Android 推送图片

当您在 Android 通知中心收到通知时,需要展开通知才能看到图片。 Android 不需要任何额外配置即可在推送通知中接收图片。

iOS 推送图片

iOS 通知需要正确设置通知服务扩展。我们针对您使用的 SDK 版本的移动 SDK 设置指南中介绍了通知服务扩展设置。 如果您的图片 URL 是 HTTP,并且您坚持使用 HTTP URL 自行托管它们,则需要在 Xcode .plist 中将 NSAppTransportSecurity 设置为 NSAllowsArbitraryLoads
如果在将应用发布到 App Store 时启用了 NSAllowsArbitraryLoads,Apple 可能会拒绝您的应用,因为这可能会造成安全漏洞。有关更多信息,请阅读 Apple 的安全概述

技术故障排除

如果您检查了上述项目但图片仍无法显示,请使用我们 SDK 的 setLogLevel 方法并启用 VERBOSE 日志记录以检查与图片下载相关的特定错误。 有关生成日志的详细指南,请参阅我们的捕获调试日志指南。 常见错误包括:
  • Could not download image!
  • Encountered an error while attempting to download file with URL:
  • OneSignal encountered an exception while downloading file

iOS 通知服务扩展故障排除

如果图片在 iOS 上无法显示,请遵循我们的 iOS 通知服务扩展故障排除指南。 本指南将帮助检查您的通知服务扩展设置并识别任何问题。