1

iPhoneSafariのカスタムURLスキームを使用してインストールされているアプリを特定したいと思います。

これを行うことは不可能だと思われるかもしれませんが、JavaScriptは私がこれを理解するのに役立ちました。

  <script>(function(){

var fallbackLink = '<?=$info['failed_url']?>'+window.location.search+window.location.hash;

var isiOS = navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone'),
    isAndroid = navigator.userAgent.match('Android');

if (isiOS || isAndroid) {
  document.getElementById('loader').src = '<?=$info['scheme']?>://'+window.location.search+window.location.hash;

  fallbackLink = isAndroid ? '<?=$info['failed_url']?>' :
                             '<?=$info['failed_url']?>' ;
}
window.setTimeout(function (){ window.location.replace(fallbackLink); }, 1000);

})();</script>

これが私のスクリプトです。

私はすでにiPhoneアプリケーションのカスタムURLスキームを知っています。アプリケーションがiPhoneに存在する場合は、正常に起動します。ただし、iPhoneにアプリケーションがない場合は、別のページにリダイレクトされます。

失敗したWebページに特定のコードを配置して、ユーザーがアプリケーションを持っていないことを確認しました。これを見つけるまで、私の計画は完璧でした。

タイムアウト後にアプリケーションがiPhoneで起動された場合でも、JavaScriptリダイレクトは機能します。

iPhoneがアプリケーションを起動した場合にJavaScriptを停止する方法はありますか?

ありがとうございました。

4

1 に答える 1

1

ウィンドウがフォーカスを失ったときは、いつでもタイムアウトをキャンセルできます。

var countdown = window.setTimeout(function (){
    window.location.replace(fallbackLink);
}, 1000);

window.addEventListener("blur", function (){
    window.clearTimeout(countdown);
}, false);
于 2012-08-14T13:05:02.033 に答える