Я обнаружил, что выбранный ответ работает для приложений браузера, но у меня были проблемы с кодом, работающим в не браузерных приложениях, которые реализуют UIWebView
.
Проблема для меня заключалась в том, что пользователь в приложении Twitter нажимал на ссылку, по которой он переходил на мой сайт через приложение UIWebView
в приложении Twitter. Затем, когда они нажали кнопку на моем сайте, Твиттер пытается проявить фантазию и завершить, только window.location
если сайт доступен. В результате UIAlertView
появляется всплывающее окно, в котором говорится, что вы хотите продолжить, а затем сразу же перенаправляетесь в App Store без второго всплывающего окна.
Мое решение включает в себя iframes. Это позволяет избежать UIAlertView
представления, что позволяет легко и элегантно работать с пользователем.
JQuery
var redirect = function (location) {
$('body').append($('<iframe></iframe>').attr('src', location).css({
width: 1,
height: 1,
position: 'absolute',
top: 0,
left: 0
}));
};
setTimeout(function () {
redirect('http://itunes.apple.com/app/id');
}, 25);
redirect('custom-uri://');
Javascript
var redirect = function (location) {
var iframe = document.createElement('iframe');
iframe.setAttribute('src', location);
iframe.setAttribute('width', '1px');
iframe.setAttribute('height', '1px');
iframe.setAttribute('position', 'absolute');
iframe.setAttribute('top', '0');
iframe.setAttribute('left', '0');
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
};
setTimeout(function () {
redirect('http://itunes.apple.com/app/id');
}, 25);
redirect('custom-uri://');
РЕДАКТИРОВАТЬ:
Добавьте абсолютную позицию в iframe, чтобы при вставке не было случайных битов в нижней части страницы.
Также важно отметить, что я не нашел необходимости в этом подходе с Android. Использование window.location.href
должно работать нормально.