J'ai trouvé que la réponse sélectionnée fonctionne pour les applications de navigateur, mais je rencontrais des problèmes avec le code fonctionnant dans les applications sans navigateur qui implémentent un UIWebView
.
Le problème pour moi était qu'un utilisateur de l'application Twitter cliquait sur un lien qui les mènerait à mon site via un UIWebView
dans l'application Twitter. Puis, quand ils ont cliqué sur un bouton de mon site, Twitter essaie d'être fantaisiste et ne le complète que window.location
si le site est accessible. Donc, ce qui se passe est un UIAlertView
pop-up disant que vous êtes sûr de vouloir continuer, puis redirige immédiatement vers l'App Store sans deuxième pop-up.
Ma solution implique des iframes. Cela évite d' UIAlertView
être présenté permettant une expérience utilisateur simple et élégante.
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://');
ÉDITER:
Ajoutez une position absolue à l'iframe afin qu'il n'y ait pas un espace aléatoire au bas de la page lorsqu'il est inséré.
Il est également important de noter que je n'ai pas trouvé de besoin pour cette approche avec Android. L'utilisation window.location.href
devrait fonctionner correctement.