Ich habe festgestellt, dass die ausgewählte Antwort für die Browser-Apps funktioniert, aber ich hatte Probleme mit dem Code, der in Nicht-Browser-Apps funktioniert, die a implementieren UIWebView
.
Das Problem für mich war, dass ein Benutzer in der Twitter-App auf einen Link klickte, der ihn über eine UIWebView
in der Twitter-App zu meiner Website führte . Wenn sie dann auf eine Schaltfläche auf meiner Website klicken, versucht Twitter, ausgefallen zu sein und das nur zu vervollständigen, window.location
wenn die Website erreichbar ist. Was also passiert, ist aUIAlertView
Popup-Fenster, das besagt, dass Sie sicher sind, dass Sie fortfahren möchten, und dann ohne ein zweites Popup sofort zum App Store weiterleitet.
Meine Lösung beinhaltet Iframes. Dies vermeidet dasUIAlertView
Präsentation und ermöglicht eine einfache und elegante Benutzererfahrung.
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://');
BEARBEITEN:
Fügen Sie dem Iframe die absolute Position hinzu, damit beim Einfügen kein zufälliges Leerzeichen am unteren Rand der Seite angezeigt wird.
Es ist auch wichtig zu beachten, dass ich mit Android keinen Bedarf für diesen Ansatz gefunden habe. Die Verwendung window.location.href
sollte gut funktionieren.