Удалите необходимость нажать "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" />
Для целей презентации мы пытаемся сделать так, чтобы изображение загружалось первым и сразу, без необходимости нажатия кнопки, чтобы увидеть его...
Ожидаемое поведение:
Фактическое поведение:
В качестве дополнительной заметки на клиентах 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.
Ответы
Ответ 1
Это невозможно сделать с помощью SMS. Если вы отправите его как iMessage, он автоматически отобразит предварительный просмотр.
На iPhone предварительный просмотр создается на устройстве, а не на стороне сервера. Когда пользователь касается предварительного просмотра, его устройство отправляет 4 GET-запроса на сервер. Если предварительный просмотр был сгенерирован автоматически, возникнет уязвимость безопасности. Вы можете отправить текст любому пользователю iPhone и получить его IP-адрес.
С iMessages предварительный просмотр генерируется автоматически, но уязвимости безопасности нет. Устройство, отправляющее ссылку, отправляет 4 запроса GET на сервер, генерирует предварительный просмотр и затем передает предварительный просмотр получателю через iMessages. В результате, принимающему устройству не нужно отправлять запрос на сервер для генерации предварительного просмотра. И их IP-адрес не известен владельцу веб-сервера.
В приложении Google Android Messaging предварительный просмотр создается на стороне сервера. Существует один запрос GET, отправленный на веб-сервер. Но это происходит с сервера сообщений Android. Таким образом, снова владелец веб-сервера не получает IP-адрес получателя от их получения текста.