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 UIWebView
aplikacji na Twitterze. Następnie, kiedy kliknęli przycisk z mojej strony, Twitter próbuje być fantazyjny i wypełnia tylko, window.location
jeśli strona jest dostępna. Więc co się dzieje, jest to UIAlertView
pop 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ąć UIAlertView
prezentacji, 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.href
powinno działać dobrze.