Я виявив, що вибрана відповідь працює для програм браузера, але у мене виникли проблеми з кодом, що працює в додатках, які не використовують браузер, які реалізують a UIWebView
.
Проблема для мене полягала в тому, що користувач у додатку Twitter натиснув посилання, яке перенесе їх на мій сайт через UIWebView
додаток Twitter. Потім, коли вони натиснули кнопку з мого сайту, Twitter намагається бути фантазійним і завершити лише те, window.location
якщо сайт доступний. Отже, що трапляється, це UIAlertView
спливаюче повідомлення, чи впевнені ви, що хочете продовжити, а потім негайно переспрямовуєтесь до App Store без другого спливаючого вікна.
Моє рішення передбачає рамки кадрів. Це дозволяє уникнути 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://');
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://');
Редагувати:
Додайте абсолютну позицію до рамки кадрів, тому при вставці не буде випадкового бітового простору внизу сторінки.
Також важливо зазначити, що я не знайшов потреби в такому підході з Android. Використання window.location.href
має справно працювати.