Как вернуться к маркетплейсу, когда пользовательская схема URL-адресов Android не обрабатывается?

У нас есть приложение, которое обрабатывает настраиваемую схему URL (vstream : //). Когда кто-то заходит на веб-страницу с содержимым vstream: //, нам нужно перенаправить их в магазин, если у них не установлено наше приложение.

В iOS мы делаем следующее:

setTimeout(function() {
  window.location =
    "itms://itunes.apple.com/us/app/kaon-v-stream/id378890806?mt=8&uo=4";
}, 25);

window.location = "vstream:view?code=...stuff...";

Если присвоение window.location завершается неудачно, время ожидания перескакивает через App Store до появления диалогового окна. (Я нашел эту технику здесь: Можно ли зарегистрировать схему URL-адресов на основе http + для приложений iPhone, таких как YouTube и Карты? .)

К сожалению, этот трюк не работает в Android. Мы обнаруживаем серверную часть устройства и записываем это вместо itms: line:

"market://details?id=com.kaon.android.vstream";

Проблема в том, что, когда iOS выдает ошибку, когда вы переходите к необработанной схеме URL, Android переходит на сгенерированную страницу. Следовательно, тайм-аут никогда не сработает.

Есть ли на веб-странице какой-либо способ явно проверить, обрабатывается ли настраиваемая схема URL-адресов, или кто-то может предложить взлом, подобный этому, который будет работать в Android? (Конечно, я полагаю, что мне нужен хак, который будет работать независимо от того, какой браузер они используют, что, вероятно, является сложной задачей ...)

ОБНОВЛЕНИЕ: Приведенные ниже подходы не работают в Jelly Bean на Nexus 7. Новый браузер Chrome не переходит на сгенерированную страницу (поэтому iFrame не нужен), но, похоже, нет никакого способа узнать, была ли схема URL-адреса обработано. Если это было так, таймаут все равно срабатывает. Если это не было обработано, срабатывает тайм-аут. Если я использую обработчик onload и iframe, обработчик onload никогда не срабатывает (независимо от того, установлено приложение или нет). Я обновлюсь, если когда-нибудь выясню, как узнать, обрабатывалась ли схема ...

Я удалил мой «Решенный» в моем предыдущем решении, так как он больше не работает.

ОБНОВЛЕНИЕ 2 : Теперь у меня есть хорошее кроссплатформенное решение, которое работает на iOS, Android 4.1 с Chrome и Android до Chrome. См. Ниже ...

Обновление 3: Гугл снова все сломал намерениями. Посмотрите ОЧЕНЬ красивое решение, которое я принял от amit_saxena где-нибудь там /

24
задан Community 23 May 2017 в 12:31
поделиться