У нас есть приложение, которое обрабатывает настраиваемую схему 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-адрес для URL-адресов для приложений iPhone, например YouTube и Maps?.
К сожалению, этот трюк не работает в Android. Мы обнаруживаем серверную часть устройства и написали это вместо itms: line:
"market://details?id=com.kaon.android.vstream";
Проблема, в то время как iOS выдает ошибку, когда вы переходите к необработанной схеме URL, Android переходит на сгенерированную страницу. Поэтому тайм-аут никогда не будет работать.
Есть ли какой-либо способ на веб-странице, чтобы явным образом проверять, обрабатывается ли настраиваемая схема URL-адресов, или кто-то может предложить взломать этот, который будет работать на Android? (Конечно, я полагаю, мне нужен хак, который будет работать независимо от того, какой браузер он использует, а это, вероятно, высокий порядок...)
UPDATE: Нижеприведенные подходы не работают в желе Bean на Nexus 7. Новый браузер Chrome не переходит на сгенерированную страницу (поэтому iFrame не требуется), но, похоже, нет никакого способа узнать, является ли URL-адрес схема была обработана. Если бы это было так, тайм-аут все равно. Если он не был обработан, тайм-аут срабатывает. Если я использую обработчик onload и iframe, обработчик onload никогда не срабатывает (установлено ли приложение или нет). Я буду обновлять, если я когда-нибудь выясню, как узнать, была ли обработана эта схема...
Я удалил свой "Solved" в своем предыдущем решении, так как он больше не работает.
ОБНОВЛЕНИЕ 2: Теперь у меня хорошее кросс-платформенное решение, которое работает на iOS, Android 4.1 с Chrome и Android до Chrome. См. Ниже...
Обновление 3: Google снова сломал все намерения. Проверьте ОЧЕНЬ приятное решение, которое я принял amit_saxena там где-то/