선택한 답변이 브라우저 앱에서 작동하지만을 구현하는 비 브라우저 앱에서 작동하는 코드에 문제가 있음을 발견했습니다 UIWebView
.
문제는 Twitter 앱 사용자가 Twitter 앱을 통해 내 사이트로 연결되는 링크를 클릭한다는 것 UIWebView
입니다. 그런 다음 그들이 내 사이트에서 버튼을 클릭했을 때 트위터는 환상적이며 window.location
사이트에 도달 할 수 있는 경우 에만 완료하려고합니다 . 따라서 발생하는 UIAlertView
팝업은 계속 진행하고 두 번째 팝업없이 즉시 App Store로 리디렉션한다는 것을 나타냅니다.
내 솔루션에는 iframe이 포함됩니다. 이것은 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
잘 작동합니다.