删除需要为iPhone OpenGraph SMS消息按"点击加载预览"

Unv*_*act 12 iphone opengraph ios open-graph-protocol iphone-x

我正在尝试能够发送包含OpenGraph预览图像的链接的SMS消息,这些链接将加载到iOS"消息"应用程序中,并且将显示缩略图而无需用户首先按[点击加载预览] ...如何这可以实现吗?

为此,我正在向运行iOS 10的iPhone X发送文本短信,并使用Messages应用程序打开.

文本消息正文包含一个指向资源(HTML网页)的URL,该资源的正文包含带og:image标记的OpenGraph元数据.例如:

<meta property="og:image" content="https://www.apple.com/v/iphone/home/t/images/home/og.png?201610171354" />
Run Code Online (Sandbox Code Playgroud)

出于演示目的,我们正在努力使图像首先立即加载,而无需用户点击按钮以便查看...

预期行为:

预期的行为

实际行为:

实际行为

作为旁注,在我们测试的Android客户端上,支持OpenGraph的图像将立即显示,而不会提示用户执行任何操作.任何其他OpenGraph支持的应用程序测试都是如此,包括Facebook.

作为参考,以下是我测试过的一些方法,试图让它适用于我们(以及其中的组合):

  • 尝试直接提供图像没有中间重定向,也尝试重定向.
  • 尝试提供PNG和JPG图像.
  • 尝试从包含不超过20个字符的URL提供图像,其中URL具有".jpg"和".png"参数,并且没有其他GET参数.当扩展不是链接的一部分时也尝试.
  • 尝试通过直接引用其IP而不是使用公共域名来从服务器提供图像.
  • 尝试使用GET参数,每次都使用随机数来澄清一个完全唯一的URL.
  • 尝试从HTTPS和HTTP链接提供图像.
  • 尝试使用动态生成的图像,这应该在渲染和提供图像时需要几毫秒的短暂延迟.
  • 尝试在脚本中强制执行睡眠,响应URL页面以及图像请求以引起有意延迟几毫秒并尝试各种设置.
  • 尝试使用各种不同的尺寸,肖像和风景以及极大和极小和(50x50, 60x50等等和以上)之间的变体服务图像.
  • 始终确保图像大小<1 MB,但无论如何还要测试更大的图像以查看它们是否可以正常工作.
  • 尝试从相同的规范来源提供服务图像,电话或消息服务可能已经"识别"为"可信",因为我们已经加载了过去的那些预览(测试是否存在这样的功能,它可能不存在).
  • 特别试过,Apple技术说明"消息中链接预览的最佳实践"中提到的所有建议,请参阅https://developer.apple.com/library/content/technotes/tn2444/_index.html
  • 试图将OG标签移到<head>页面之外.
  • 尝试剥离除相关og:image标签之外的所有标签的页面.
  • 尝试删除对GET的响应的HTTP标头到图像资源,以便只返回图像本身.尝试然后Content-Type单独添加标题.
  • 尝试启动对图像的请求以响应各种HTTP规范缓存 - 使相关标头无效.
  • 尝试从美国和澳大利亚的各种电话号码发送,也尝试将SMS消息本身的"发件人"字段更改为字符串"VERIZON", "Verizon", "Telstra", "APPLE", "Apple", "Facebook", "Uber", "China".

  • 尝试从手持电话以及Twilio Messaging API服务发送消息.

以上都不适用于iPhone X.

bur*_*ess 5

使用 SMS 无法做到这一点。如果您将其作为 iMessage 发送,它将自动显示预览。

在 iPhone 上,预览是在设备上生成的,而不是在服务器端生成的。当用户点击预览时,他们的设备会向服务器发送 4 个 GET 请求。如果预览是自动生成的,就会存在安全漏洞。您可以向任何 iPhone 用户发送文本并获取他们的 IP 地址。

使用 iMessages 会自动生成预览,但不存在安全漏洞。发送链接的设备向服务器发送 4 个 GET 请求,生成预览,然后通过 iMessages 将预览传输给接收者。因此,接收设备无需向服务器发送生成预览的请求。并且网络服务器的所有者不知道他们的 IP 地址。

在 Google 的 Android 消息应用程序上,预览是在服务器端生成的。有一个 GET 请求发送到 Web 服务器。但它源自 Android 消息服务器。因此,网络服务器的所有者再次没有从他们收到的文本中收到收件人的 IP 地址。