Удалите необходимость нажать "Tap to Load Preview" для iPhone OpenGraph SMS Message - программирование
Подтвердить что ты не робот

Удалите необходимость нажать "Tap to Load Preview" для iPhone OpenGraph SMS Message

Я пытаюсь отправить SMS-сообщения со ссылками, содержащими изображения предварительного просмотра OpenGraph, которые будут загружаться в приложении "Сообщения" iOS, и отобразит миниатюру, если пользователь не будет сначала нажать [Tap To Load Preview]... Как можно это будет достигнуто?

Для этого я отправляю текстовое SMS-сообщение на iPhone X, который запускает iOS 10 и открывается приложением "Сообщения".

Тело текстового сообщения содержит URL-адрес, указывающий на ресурс (веб-страницу HTML), чье тело содержит метаданные OpenGraph с тегом og:image. Например:

<meta property="og:image" content="https://www.apple.com/v/iphone/home/t/images/home/og.png?201610171354" />

Для целей презентации мы пытаемся сделать так, чтобы изображение загружалось первым и сразу, без необходимости нажатия кнопки, чтобы увидеть его...

Ожидаемое поведение:

Expected Behavior

Фактическое поведение:

Actual Behavior

В качестве дополнительной заметки на клиентах Android, которые мы тестировали, где поддерживается OpenGraph, изображение будет отображаться мгновенно без запроса пользователя на что-либо. То же самое можно сказать и о любом другом тестируемом приложении OpenGraph, включая Facebook.

Для справки, вот некоторые из методов, которые я тестировал, чтобы попытаться заставить это работать для нас (а также комбинации в нем):

  • Пробовал работать с изображением напрямую без промежуточных переадресаций, также пытался с переадресацией.
  • Пробовал работать с изображениями PNG и JPG.
  • Пробовал показывать изображения с URL-адреса, содержащего не более 20 символов, где URL имеет параметры ".jpg" и ".png" и никаких дополнительных параметров GET. Также пробовали, когда расширения не являются частью ссылки.
  • Пробовал показ изображения с сервера, ссылаясь на его IP-адрес, вместо того, чтобы использовать общедоступное доменное имя.
  • Пробовал также параметры GET, со случайными номерами, чтобы каждый раз прояснять уникальный URL.
  • Пробовал показ изображения с HTTPS и HTTP-ссылок.
  • Пробовал работать с динамически сгенерированными изображениями, что должно повлечь за собой небольшую задержку в несколько миллисекунд, пока изображение отображается и обслуживается.
  • Пробовал вынужденный сон в скрипте, который отвечает на страницу URL, а также для запроса изображения вызвать преднамеренную задержку в несколько миллисекунд и экспериментировать с различными настройками для этого.
  • Пробовал использовать изображение с различными размерами, портретным и ландшафтным, а также чрезвычайно большими и чрезвычайно маленькими и другими вариантами между (50x50, 60x50 и т.д.).
  • Всегда гарантировалось, что размер изображения меньше 1 МБ, но также проверял большие изображения, чтобы увидеть, будут ли они работать.
  • Пробовал обслуживать изображения из того же канонического источника, что телефон или служба сообщений уже "распознал" как "доверенный", поскольку мы уже загрузили предварительный просмотр из тех, что были в прошлом (тестирование, если такая функция существует, что, вероятно, не).
  • Пробовал конкретно, все предложения, как указано в Технической заметке Apple "Рекомендации по просмотру ссылок в сообщениях" см. Https://developer.apple.com/library/content/technotes/tn2444/_index.html
  • Пробовал перемещать метки OG вне <head> страницы.
  • Пробовал удаление страницы всех тегов, за исключением соответствующих тегов og:image.
  • Пробовал удалить HTTP-заголовки для ответа на GET ресурсу изображения, чтобы вернуть только изображение. Пробовал затем добавить обратно заголовок Content-Type.
  • Пробовал загружать запрос на изображение, чтобы отвечать на различные заголовки, связанные с кэшированием спецификации HTTP.
  • Пробовал отправлять из разных телефонных номеров США и Австралии, также пытался изменить поле "От" для самого SMS-сообщения к строкам типа "VERIZON", "Verizon", "Telstra", "APPLE", "Apple", "Facebook", "Uber", "China".

  • Пробовал отправлять сообщения с карманного телефона, а также из службы Twilio Messaging API.

Ничего из вышеперечисленного не работает для iPhone X.

4b9b3361

Ответ 1

Это невозможно сделать с помощью SMS. Если вы отправите его как iMessage, он автоматически отобразит предварительный просмотр.

На iPhone предварительный просмотр создается на устройстве, а не на стороне сервера. Когда пользователь касается предварительного просмотра, его устройство отправляет 4 GET-запроса на сервер. Если предварительный просмотр был сгенерирован автоматически, возникнет уязвимость безопасности. Вы можете отправить текст любому пользователю iPhone и получить его IP-адрес.

С iMessages предварительный просмотр генерируется автоматически, но уязвимости безопасности нет. Устройство, отправляющее ссылку, отправляет 4 запроса GET на сервер, генерирует предварительный просмотр и затем передает предварительный просмотр получателю через iMessages. В результате, принимающему устройству не нужно отправлять запрос на сервер для генерации предварительного просмотра. И их IP-адрес не известен владельцу веб-сервера.

В приложении Google Android Messaging предварительный просмотр создается на стороне сервера. Существует один запрос GET, отправленный на веб-сервер. Но это происходит с сервера сообщений Android. Таким образом, снова владелец веб-сервера не получает IP-адрес получателя от их получения текста.