Stwierdziłem, że wybrana odpowiedź działa z aplikacjami przeglądarki, ale miałem problemy z kodem działającym w aplikacjach innych niż przeglądarka, które implementują UIWebView.
Problemem było dla mnie, że użytkownik aplikacji na Twitterze kliknąłby link prowadzący do mojej witryny za pośrednictwem UIWebViewaplikacji na Twitterze. Następnie, kiedy kliknęli przycisk z mojej strony, Twitter próbuje być fantazyjny i wypełnia tylko, window.locationjeśli strona jest dostępna. Więc co się dzieje, jest to UIAlertViewpop up mówiąc, jesteś pewien, że chcesz kontynuować, a następnie od razu przekierowuje do App Store bez drugiego popup.
Moje rozwiązanie dotyczy ramek iframe. Pozwala to uniknąć UIAlertViewprezentacji, zapewniając łatwą i elegancką obsługę.
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://');
EDYTOWAĆ:
Dodaj pozycję bezwzględną do elementu iframe, aby po wstawieniu na dole strony nie było przypadkowej spacji.
Należy również zauważyć, że nie znalazłem potrzeby takiego podejścia w przypadku Androida. Korzystanie window.location.hrefpowinno działać dobrze.