ผมพบว่าคำตอบที่เลือกทำงานสำหรับแอพพลิเคเบราว์เซอร์ UIWebView
แต่ผมมีปัญหาเกี่ยวกับรหัสที่ทำงานในเบราว์เซอร์ที่ไม่ใช่ปพลิเคชันที่ใช้
ปัญหาสำหรับฉันคือผู้ใช้ในแอพ Twitter จะคลิกลิงค์ที่จะนำพวกเขาไปยังเว็บไซต์ของฉันผ่านทางUIWebView
ในแอพ Twitter จากนั้นเมื่อพวกเขาคลิกปุ่มจากเว็บไซต์ของฉัน Twitter พยายามที่จะเป็นแฟนซีและสมบูรณ์window.location
ถ้าเว็บไซต์นั้นสามารถเข้าถึงได้ ดังนั้นสิ่งที่จะเกิดขึ้นก็คือการUIAlertView
พูดปรากฏขึ้นคุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อจากนั้นจะเปลี่ยนเส้นทางไปยัง App Store ทันทีโดยไม่ต้องมีป๊อปอัปสำรอง
โซลูชันของฉันเกี่ยวข้องกับ iframes เพื่อหลีกเลี่ยงการUIAlertView
ถูกนำเสนอเพื่อให้ประสบการณ์การใช้งานที่ง่ายและสง่างาม
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://');
จาวาสคริ
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://');
แก้ไข:
เพิ่มตำแหน่งที่แน่นอนให้กับ iframe ดังนั้นเมื่อแทรกแล้วจะไม่มีช่องว่างสุ่มที่ด้านล่างของหน้า
นอกจากนี้ยังเป็นสิ่งสำคัญที่จะต้องทราบว่าฉันไม่พบความต้องการวิธีการนี้กับ Android การใช้window.location.href
ควรจะทำงานได้ดี