Обнаружение, если iOS использует webapp

Мне было интересно, можно ли определить, использует ли пользователь iOS Webapp или просто обычным образом просматривает браузер Safari.

Причина, по которой я хочу достичь, заключается в том, что в iOS webapp, когда пользователь нажимает на ссылку, он будет перенаправлен в браузер Safari. Поэтому я использую следующее обходное решение, чтобы заставить его оставаться в webapp (запретить переход в браузер Safari).

$( document ).on("click",".nav ul li a",
        function( event ){

        // Stop the default behavior of the browser, which
        // is to change the URL of the page.
        event.preventDefault();

        // Manually change the location of the page to stay in
        // "Standalone" mode and change the URL at the same time.
        location.href = $( event.target ).attr( "href" );

        }
    );

Но я хочу, чтобы это обходное решение выполнялось только тогда, когда пользователь использует webapp, я хочу, чтобы он был условным для пользователей webapp. Поэтому не в браузере Safari по умолчанию.

Ответы

Ответ 1

Вы должны обнаружить это, используя некоторый javascript:

<script>
if (
    ("standalone" in window.navigator) &&       // Check if "standalone" property exists
    !window.navigator.standalone                // Test if using standalone navigator
    ){

    // .... code here ....
}
</script>
</head> 

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

И источник, используемый в ответе, ЭТО.

Ответ 2

iOS и Chrome WebApp ведут себя по-разному, вот почему я пришел к следующему:

isInWebAppiOS = (window.navigator.standalone == true);
isInWebAppChrome = (window.matchMedia('(display-mode: standalone)').matches);