Tôi thấy rằng câu trả lời được chọn hoạt động cho các ứng dụng trình duyệt nhưng tôi gặp vấn đề với mã làm việc trong các ứng dụng không phải trình duyệt thực hiện a UIWebView
.
Vấn đề đối với tôi là một người dùng trên ứng dụng Twitter sẽ nhấp vào một liên kết sẽ đưa họ đến trang web của tôi thông qua một UIWebView
ứng dụng Twitter. Sau đó, khi họ nhấp vào một nút từ trang web của tôi, Twitter cố gắng tỏ ra lạ mắt và chỉ hoàn thành window.location
nếu trang web có thể truy cập được. Vì vậy, những gì xảy ra là một UIAlertView
cửa sổ bật lên nói rằng bạn có chắc chắn muốn tiếp tục và sau đó chuyển hướng ngay lập tức đến App Store mà không cần cửa sổ bật lên thứ hai.
Giải pháp của tôi liên quan đến iframe. Điều này tránh việc UIAlertView
được trình bày cho phép trải nghiệm người dùng đơn giản và thanh lịch.
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://');
BIÊN TẬP:
Thêm vị trí tuyệt đối vào iframe để khi được chèn sẽ không có một khoảng trắng ngẫu nhiên nào ở cuối trang.
Ngoài ra, điều quan trọng cần lưu ý là tôi chưa tìm thấy nhu cầu về phương pháp này với Android. Sử dụng window.location.href
nên hoạt động tốt.