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 UIWebViewdans 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.locationsi le site est accessible. Donc, ce qui se passe est un UIAlertViewpop-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.hrefdevrait fonctionner correctement.