Saya menemukan bahwa jawaban yang dipilih berfungsi untuk aplikasi browser tetapi saya mengalami masalah dengan kode yang bekerja di aplikasi non browser yang mengimplementasikan a UIWebView.
Masalahnya bagi saya adalah pengguna di aplikasi Twitter akan mengklik tautan yang akan membawa mereka ke situs saya melalui UIWebViewaplikasi Twitter. Kemudian ketika mereka mengklik tombol dari situs saya Twitter mencoba menjadi mewah dan hanya menyelesaikan window.locationjika situs tersebut dapat dijangkau. Jadi yang terjadi adalah UIAlertViewsembulan yang mengatakan Anda yakin ingin melanjutkan dan kemudian segera mengalihkan ke App Store tanpa popup kedua.
Solusi saya melibatkan iframe. Ini menghindari UIAlertViewdisajikan yang memungkinkan untuk pengalaman pengguna yang sederhana dan elegan.
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://');
EDIT:
Tambahkan posisi absolut ke iframe sehingga ketika dimasukkan tidak ada sedikit spasi kosong di bagian bawah halaman.
Juga penting untuk dicatat bahwa saya belum menemukan kebutuhan untuk pendekatan ini dengan Android. Penggunaan window.location.hrefharus bekerja dengan baik.