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 UIWebView
aplikasi Twitter. Kemudian ketika mereka mengklik tombol dari situs saya Twitter mencoba menjadi mewah dan hanya menyelesaikan window.location
jika situs tersebut dapat dijangkau. Jadi yang terjadi adalah UIAlertView
sembulan yang mengatakan Anda yakin ingin melanjutkan dan kemudian segera mengalihkan ke App Store tanpa popup kedua.
Solusi saya melibatkan iframe. Ini menghindari UIAlertView
disajikan 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.href
harus bekerja dengan baik.