Ho scoperto che la risposta selezionata funziona per le app del browser ma avevo problemi con il codice che funzionava in app non del browser che implementavano un UIWebView
.
Il problema per me era che un utente dell'app Twitter avrebbe fatto clic su un collegamento che li avrebbe portati sul mio sito tramite UIWebView
l'app Twitter. Quindi, quando hanno fatto clic su un pulsante dal mio sito, Twitter cerca di essere elegante e completa solo window.location
se il sito è raggiungibile. Quindi, ciò che accade è un UIAlertView
pop-up che dice che sei sicuro di voler continuare e quindi reindirizzare immediatamente all'App Store senza un secondo popup.
La mia soluzione prevede iframe. Questo evita di UIAlertView
essere presentato consentendo un'esperienza utente semplice ed elegante.
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://');
MODIFICARE:
Aggiungi la posizione assoluta all'iframe, quindi quando inserito non c'è un po 'di spazio bianco casuale nella parte inferiore della pagina.
Inoltre, è importante notare che non ho riscontrato la necessità di questo approccio con Android. L'uso window.location.href
dovrebbe funzionare bene.