跳转到主要内容
发送包含图像的通知时,OneSignal SDK 尝试从 OSNotification Payload 获取外部图像 URL,并在通知内显示它。在此过程中应用程序是否关闭并不重要。SDK 等待图像下载,但如果出现网络问题或下载时间超过 30 秒(由 Apple 强制执行),则会显示不带图像的通知。 图像不显示的最常见原因有:
  • 重定向和没有图像文件扩展名的 URL 以及 https 协议(http URL 对大多数应用程序不起作用,因为 iOS 和 Android 默认要求所有网络请求都是 https
  • 设备上的网络连接不稳定或图像服务器无法处理所需的带宽
如果图像下载失败,OneSignal 的 SDK 不会重试获取图像。使用 SDK 的 setLogLevel 方法与 WARNVERBOSE 日志记录,您可以看到与图像下载相关的特定错误,例如:
  • Could not download image!
  • Encountered an error while attempting to download file with URL:
  • OneSignal encountered an exception while downloading file

常见解决方案

图像大小

尝试通过降低质量和/或将图像大小调整到推荐设置来减小图像文件大小。

图像 URL

图像 URL 需要图像的直接链接,不允许重定向。没有提供适当的 http 或 https 协议以及图像扩展名的重定向和 URL 将不起作用。在大多数情况下,直接链接会有像 .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

图像主机

托管图像的服务器可能已关闭或无法处理下载量。设备有大约 30 秒的时间来下载所有通知资源,包括图像。如果时间更长,它就不会在该设备上显示。 尝试将资源托管在专用服务器上,或使用 OneSignal 导入选项让我们为您托管。
OneSignal 仅将上传到我们服务器的图像存储 33 天,从上传时间开始计算。如果您复制或使用包含上传超过 33 天图像的草稿消息,您需要重新上传图像。如果您需要更长时间保存图像,可以使用模板或将图像存储在您自己的服务器上,并直接引用资源 URL。

网页推送图像

只有 Chrome 支持在 Windows、Android 和运行 Big Sur 的 macOS 上的推送通知中使用大图像 Firefox、Safari 和 Edge 不支持大图像。 在移动网页推送中,当您在 Android 设备阴影中收到通知时,您需要[在通知上向下滑动以查看图像。 如果您的移动浏览器应用程序有许多未读的推送通知和/或打开许多选项卡,这可能会导致通知现在无法显示。

iOS 推送图像

在 iOS 通知上看不到富媒体通常发生在您的应用程序的通知服务扩展未设置时。请仔细检查您用于 iOS 通知服务扩展的设置文档,确保它被正确实施。
1

  1. 测试另一台设备,如果图像显示,则通知服务扩展设置正确。有关iOS 通知服务扩展故障排除的详细信息
2

  1. 在网络浏览器中打开您的附件 URL。确保它是图像/视频的直接链接,不能是 HTML 页面的一部分。另外 不支持重定向
3

  1. 如果下载附件需要超过 30 秒,iOS 将取消扩展服务,通知将显示为无媒体。检查确保您的附件大小合适。您可以在此处查看支持的媒体列表(和最大文件大小)
4

确保您的 URL 是 HTTPS。HTTP URL 不会工作,除非您在 Xcode .plist 中将 NSAppTransportSecurity 设置为 NSAllowsArbitraryLoads
发布应用到 App Store 时,请不要保持 NSAllowsArbitraryLoads 启用状态,因为这可能在您的应用中创建安全漏洞。有关更多信息,请阅读 Apple 的安全概述
5

  1. 设备或托管媒体的服务器出现网络问题。尝试在 OneSignal 或其他托管提供商上托管图像。
6

  1. 检查您的 OneSignalNotificationServiceExtension 的 Deployment Target,并将其设置为 iOS 10。

Android 推送图像

当您在 Android 设备阴影中收到通知时,您需要在通知上向下滑动,您应该能看到它。
I