СМС: и mailto: сбой в мобильном браузере iPhone Safari - PullRequest
0 голосов
/ 05 ноября 2019

Проблема:

Веб-страница с ссылками sms: и mailto: не работает в браузере ios mobile safari. Щелчок по ссылке перенаправляет вас на:

Safari не может открыть страницу, поскольку он не может перенаправить на места, начинающиеся с "sms:"

или

Safari не может открыть страницу, потому что он не может перенаправить в местоположения, начинающиеся с «mailto:»

Они обычно работали до двух или трех месяцев назад. Теперь они не работают на мобильных устройствах Apple, использующих браузер Safari.

Справочная информация:

  • Я создаю адаптивные веб-страницы для команд на основе действий. Одна из вещей, которые мы делаем, - это предоставление списка команды. В реестр включены ссылки на номера телефонов, текстовые страницы SMS и электронную почту.
  • Для простоты мы используем простые веб-страницы.
  • Из-за проблем безопасности и конфиденциальности этот контент подается только через ajax-вызов через сервер node.js после входа в систему. Мы используем один сервер node.js Express для размещения содержимого веб-сайта и управления вызовами http / api.
  • Обычно нажатие на ссылку переводит мобильное устройство в соответствующее нативное приложение для телефонного звонка, SMSтекстовое сообщение или электронное письмо.
  • Это прекрасно работает в течение нескольких лет на всех устройствах.
  • В последнее время мы видим проблему на iPhone ... но ...
  • Вот действительно странная часть. У меня есть три команды, использующие эту технику. Ошибка только на ДВУХ из трех команд. Ссылка SMS там просто отлично работает.
  • Ссылка "tel:" отлично работает на всех устройствах.
  • Сбои происходят только на двух из трех сайтов для смс: и mailto: на iphone. На устройствах Android, Windows и MacOS все еще отлично работает. Проблема заключается в мобильных устройствах Apple.
  • Два сайта, которые имеют сбои, - это Progressive Web Apps с файлом manifest.json и service_worker.js. Сайт, который работает нормально, не имеет ни одного из них. Когда я удаляю манифест и выключаю сервисного работника, улучшения не происходит.
  • Все три сайта размещены через движок приложений в Google Cloud. Два сайта, которые не работают, используют только адресацию web_app.appspot.com. Сайт, который хорошо функционирует, использует реальный URL, указывающий на местоположение движка приложения.

Типичный код:

<li>
    <div class="userName">Jane Doe</div>
    <div class="phoneNumber"><a href="tel:+1321-555-1234">321-555-1234</a></div>
    <div class="sms"><a href="sms:+1321-555-1234"><img src="../images/crosstxt-icon.jpg"></a></div>
    <div class="email"><a href="mailto:jane.doe@yahoo.com"><img src="../images/email-icon.png"></a></div>
</li>

Интересно, покажет ли это проблему, если вы откроете ее в браузере своего мобильного устройства Apple:

<a href="sms:+1321-555-1234">Click here to create a SMS message.</a>
<br>
<a href="mailto:jane.doe@not_a_real_email_service.com">Click here to create an email message.</a>

Видимо, это сбой. Вы даже не видите кнопку запуска фрагмента на моем мобильном устройстве.

1 Ответ

0 голосов
/ 11 ноября 2019

Тестирование, дальнейшее тестирование ...

Я только что понял ... если я сохраню сайт на домашней странице своего мобильного устройства, чтобы значок добавлялся на домашний экран и в режиме отображения, вы можетеНЕ видеть верхнюю адресную строку URL-адреса или панель параметров Safari в нижней части, тогда SMS: не удастся. Если вы просто откроете адрес в Safari, но не сохраните файл, он будет отлично работать.

Опять же, когда я нахожусь в режиме Apple Web Application , ссылка SMS не работает.

Один взлом ... открыть сайт через мобильный браузер Safari на iphone. Сохраните сайт на домашней странице. Убедитесь, что значок на мобильном телефоне. Перейдите в Настройки -> Safari -> Дополнительно -> Данные веб-сайта, затем удалите сайт, сдвинув его влево. Кэш-память чистая, но значок остается на экране мобильного устройства. Используйте иконку для помощи при входе, но не сохраняйте сайт снова. Обратите внимание, что строка URL видна. СМС будет работать.

Все еще тестирую здесь ... Я попытался создать простой пример, чтобы показать проблему. Я был полностью неспособен заставить образец терпеть неудачу с сообщениями об ошибках выше. Для справки: здесь тестовый сайт . Исходный код теста здесь .

Я подозреваю, что проблема связана с тем фактом, что эти два сайта находятся под вопросомоба расположены на поддомене сайта. (mywebapp.appspot.com) Когда манифест включает в себя весь «действительный» контент, сайт отображается в виде веб-приложения ios Apple без видимой строки URL-адреса ... но всякий раз, когда я нахожусь в этом режиме, ссылки на SMS являются полным провалом.

С учетом сказанного вы можете управлять режимом хранения с помощью <meta name="apple-mobile-web-app-capable" content="yes">.

Во время моего тестирования я также заметил, что всякий раз, когда файл manifest.json содержит // пометки в любом месте, файл игнорируется Safari. Обычно // комментарии не допускаются в файле .json, но, согласно источнику MSN, они в порядке в файле manifest.json.

На выбор

* 1029. * немного некрасиво и функционально, или симпатично и не функционально

В настоящее время я работаю <meta name="apple-mobile-web-app-capable" content="no"> ... я получаю преимущество пользовательского значкана домашнем экране, хотя веб-приложение все еще находится внутри мобильного браузера с видимыми верхними / нижними информационными строками, вздохните.

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