Подтвердить что ты не робот

Определите, открыт ли сайт в качестве веб-приложения или через обычное сафари на ipad?

Есть ли способ определить, посетитель просматривает наш сайт как веб-приложение на своем домашнем экране или регулярно через сафари на ipad?

4b9b3361

Ответ 1

Я понял:

Убедитесь, что имеется соответствующая метаинформация веб-приложения:

<head>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" /> 

Затем добавьте этот script

<script>
if (window.navigator.standalone == true) {
 document.write('<p>Welcome Home</p>');
}else{
 document.write('<p>Tap the + button and choose "Add to Home Screen"</p>');
 document.write('<link rel="apple-touch-icon-precomposed" href="[email protected]"/>');
}
</script>
</head> 

Итак, window.navigator.standalone будет истинным, если они просматриваются в полноэкранном режиме веб-приложения. Супер.

Источник: Это для Iphone, но он работает так же и то, где я понял, как это сделать: http://www.bennadel.com/blog/1950-Detecting-iPhone-s-App-Mode-Full-Screen-Mode-For-Web-Applications.htm

Ответ 2

Я не уверен, как далеко назад это происходит, но iOS представит на сервер разные строки UserAgent, которые могут быть использованы для определения того, запрашивается ли страница браузером webapp или Safari.

Браузер Safari

Mozilla/5.0 (iPhone, iPhone с процессором 8_1_1, как Mac OS X) AppleWebKit/600.1.4 (KHTML, например, Gecko) Версия /8.0 Mobile/12B436 Safari/600.1.4

Кнопка главного экрана/веб-приложение

Mozilla/5.0 (iPhone, iPhone для iPhone 8_1_1 для Mac OS X) AppleWebKit/600.1.4 (KHTML, например, Gecko) Mobile/12B436

Обратите внимание, что он не включает в себя "Safari" в UserAgent. Я подтвердил, что это поведение восходит по крайней мере к iOS 7, но я бы даже подумал.

Ответ 3

Если вы ищете только изменение стиля, вы также можете просто использовать медиа-запрос для максимальной высоты 700 пикселей. В сафари высота экрана составляет 660 пикселей, а в веб-приложении - 740 пикселей (в альбомном режиме). Вам понадобится сочетание высоты и ширины, если ваше приложение работает в любой ориентации.