У меня есть веб-страница, назовите ее entry.html
.
Когда пользователь вводит эту страницу, код javascript (см. ниже) пытается глубоко связать пользователя с родным приложением iOS/Android.
Если сбой глубокой связи (возможно, если приложение не установлено на устройстве), пользователь должен "отступить" на другую страницу - позвонит ему fallback.html
.
вот код javascript, который работает на entry.html
:
$(function(){
window.location = 'myapp://';
setTimeout(function(){
window.location = 'fallback.html';
}, 500);
});
это стандартный метод глубокой привязки, который рекомендуется по всей сети; попытайтесь выполнить глубокую привязку, и если тайм-аут срабатывает, это означает, что глубокая ссылка не произошла - так что резерв.
это отлично работает, поскольку на устройстве установлено еще одно приложение.
но если приложение не установлено, это поведение при попытке глубокой ссылки:
Mobile Safari. Я вижу предупреждение, в котором говорится, что "Safari не может открыть эту страницу..." на мгновение, а затем верно отбрасывается на fallback.html
- это ожидаемое поведение.
Мобильный Chrome - моя проблема.
когда приложение не установлено, браузер фактически перенаправляется на URL-адрес myapp://
, который, конечно, недействителен, поэтому я получаю страницу "не найден", и спад не происходит.
Наконец - мой вопрос:
Как я могу исправить свой код, так что FALL-BACK WILL OCCUR на мобильном Chrome тоже? как мобильный Safari?
note: я вижу, что мобильный сайт LinkedIn делает это правильно, с Safari и Chrome, с установленным или отсутствующим приложением, но я не смог отследить код, ответственный за него: (
note2: я попытался добавить iframe
вместо window.location = url
, это работает только на Safari, мобильный Chrome не имеет глубокой ссылки при добавлении iFrame, даже если приложение установлено.
Спасибо всем!
UPDATE:
я нашел достойное решение и ответил на свой вопрос. см. принятый ответ для моего решения.