Seçilen cevabın tarayıcı uygulamaları için çalıştığını buldum, ancak bir uygulama uygulayan tarayıcı olmayan uygulamalarda kodla ilgili sorunlar yaşıyordum UIWebView
.
Benim için sorun, Twitter uygulamasındaki bir kullanıcının, Twitter uygulamasındaki bir aracılığıyla onları siteme götürecek bir bağlantıyı tıklamasıydı UIWebView
. Sonra sitemden bir düğmeyi tıkladıklarında Twitter süslü olmaya çalışır ve sadece window.location
siteye ulaşılabilir ise tamamlayın . Yani olan şey, UIAlertView
devam etmek istediğinizden emin olduğunuzdan ve hemen ikinci bir açılır pencere olmadan App Store'a yönlendirdiğinizden emin olmanızdır.
Benim çözümüm iframe'leri içeriyor. Bu, UIAlertView
basit ve zarif bir kullanıcı deneyimi sunarak sunulmayı önler .
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://');
DÜZENLE:
İframe'e mutlak konum ekleyin, böylece eklendiğinde sayfanın altında rastgele bir boşluk kalmaz.
Android ile bu yaklaşıma ihtiyaç duymadığımı da belirtmek gerekir. Kullanımı window.location.href
iyi çalışmalıdır.