選択した回答がブラウザーアプリで機能することがわかりましたが、を実装するブラウザー以外のアプリで機能するコードに問題がありましたUIWebView
。
私にとっての問題は、Twitterアプリのユーザーがリンクをクリックして、Twitterアプリのから自分のサイトに移動することUIWebView
でした。次に、私のサイトのボタンをクリックすると、Twitterは空想になりwindow.location
、サイトにアクセスできる場合にのみ完了しようとします。したがって、何が起こるかUIAlertView
というと、続行してよろしいですか?
私のソリューションには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://');
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://');
編集:
絶対位置をiframeに追加して、挿入されたときにページの下部にランダムな空白スペースがないようにします。
また、Androidでのこのアプローチの必要性を私が見つけていないことに注意することも重要です。を使用window.location.href
すると問題なく動作するはずです。