У нас есть приложение, которое обрабатывает пользовательскую схему 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?(Конечно, я полагаю, что мне нужен взлом, который будет работать независимо от того, какой браузер они используют, что, вероятно, непросто)Nexus 7. Новый браузер Chrome не переходит на сгенерированную страницу (поэтому iFrame не нужен), но, похоже, нет никакого способа узнать, была ли обработана схема URL.Если это так, тайм-аут срабатывает в любом случае.Если это не было обработано таймаутом пожаров.Если я использую обработчик загрузки и iframe, обработчик загрузки никогда не срабатывает (установлено приложение или нет).Я обновлюсь, если когда-нибудь выясню, как узнать, была ли обработана схема ...
Я удалил "Решено" в моем предыдущем решении, поскольку оно больше не работает.
ОБНОВЛЕНИЕ 2: Теперь у меня есть хорошее кроссплатформенное решение, которое работает на iOS, Android 4.1 с Chrome и Android pre-Chrome.См. Ниже ...
Обновление 3: Google снова все сломал с намерениями.Посмотрите ОЧЕНЬ хорошее решение, которое я принял от amit_saxena где-то там /